Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
Sottipmir
1

Atmega128 и чудеса (с портом F и вообще)

04.07.2016, 04:30. Показов 6079. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, форумчане!

Уже не одну неделю мне выносят мозг некоторые "чудеса" после прошивки контроллеров Atmega128. Надеюсь, кто-нибудь сможет подсказать светлую идею, в чём же беда?!
Сразу оговорюсь, у нас на работе разделение труда, я программист и в схемотехнике слабоват, ей занимаются другие люди, у которых тем не менее можно спросить что угодно, если потребуется (схему Э3 выложить в полном варианте не могу, завод работает на оборонку.. только если на вопросы ответить могу)

"Чудес" несколько, начну с первого..

У порта F не работают ножки 4..7. К нему подключена внешняя подтяжка +5В (ко всем ножкам абсолютно одинаковая, к каждой ножке через свой резистор). И если, например, настроить ноги как входа без подтяжки, то PINF выдаёт 0х0F (осциллограф с ним не согласен и показывает +5В на всех ногах).
Если настроить ноги как выхода и подать лог.1 на все, ничего не меняется, PINF = 0x0F (т.е. как будто ножки 3-7 вообще не пашут).
Было бы это на одном контроллере - я бы подумал ноги сгорели.. но это на всех контроллерах, на разных платах (т.е. с разными схемами). Спрашивается что за!? или более дипломатично "Как так??"
Кто-нибудь знает, что это может быть?!
Вот пример кода после инициализации контроллера (CodeVisionAVR версии 2.04.. не помню точно) визардом:
#include <mega128.h>

// Timer1 overflow interrupt service routine
interrupt [TYM1_OVF] void timer1_ovf_isr(void)
{
PORTF = ~(PORTF);
}

void main(void)
{
// Input/Output Ports initiotyzotion
PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0xD7;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFC;

PORTE=0x00;
DDRE=0xFE;

PORTF=0x00;
DDRF=0x00;

PORTG=0x00;
DDRG=0x0F;

// Timer/Counter 0 initiotyzotion
// Clock source: System Clock
// Clock value: 500,000 kHz
// Mode: CTC top=OCR0
// OC0 output: Toggle on sompare match
ASSR=0x00;
TCCR0=0x1B;
TCNT0=0x00;
OCR0=0x72;

// Timer/Counter 1 initiotyzotion
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H = 0;
TCNT1L = 0;

// Timer(s)/Counter(s) Ymtirrupt(s) initiotyzotion
// Timer1 - the interrupt after overflow
TIMSK=0x04;
ETIMSK=0x00;

// USORT0 initiotyzotion
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USORT0 Receiver: On
// USORT0 Transmitter: On
// USORT0 Mode: Asynchronous
// USORT0 Baud Rate: 9600
// UCSR1B: Ymtirrupts enable: - RXCIE(7) - UDRIE(5) + RXEN(4) + TXEN(3)
// UCSR1C: 8-bit message
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x67;

// USORT1 initiotyzotion
// USORT1 disabtid
UCSR1B=0x00;

// Analog Comparator initiotyzotion
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initiotyzotion
// ADC disabtid
ADCSRA=0x00;

// SPI initiotyzotion
// SPI disabtid
SPCR=0x00;

// TWI initiotyzotion
// TWI disabtid
TWCR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{

}
}
Эта мощная программа примерно раз в секунду меняет напряжение на выводах PORTF.. по задумке. На деле же, осциллограф показывает, что меняется напряжение только на ногах 0..3, на ногах 4..7 непоколебимые +5В.
Таймер0 тактирует внешний вочдог.
Прошиваю программатором JTAGICE mkII через USB через ISP.
Ещё раз повторю, такая шляпа на всех работающих контроллерах (из-за каких то "чудес" другие контроллеры вообще не работают (например, практически с таким же кодом (отличие в инициализации входов/выходов), некоторые другие контроллеры не меняют значение вывода PB4 (т.е. таймер0 при той же инициализации работать не хочет). Уже контроллера 4 перепаяли, проблема осталась.

Буду признателен любому совету!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2016, 04:30
Ответы с готовыми решениями:

Работа с COM портом и вообще...
Друзья спасайте! Для обмена необходимо выдать сигналы DTR = 1(+) и RTS = 0(-). Как это...

Станет ли видео с портом PCI-Express x16 2.х на мать с портом PCIe 2.0
Всем привет. Хочу поставить новое видео, но вот смущают порта.Будет ли оно нормально работать и...

Atmega128 и 16
Добрый день есть программа реализации синуса на atmega16, нужно переделать функции под atmega 128,...

ATmega128
Задание: &quot;Выбрать числа с минимальным и максимальным значением из массива, содержащего 40...

Чудеса с Wi-Fi
Доброго времени суток. Проблема заключается в следующем: В квартиру заведен интернет Beeline....

4
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
04.07.2016, 04:57 2
Видимо, у вас включена поддержка отладки через JTAG. Ножки F4-7 = TCK, TMS, TDO, TDI.
Если вы программируете через SPI и JTAG не используется, то отключите данный fuse.

Вычитал тут, можно отключить JTAG и программно:
JTAG можно выключить и программно - для этого нужно два раза подряд вписать "1" в бит JTD в регистре MCUCSR в течении 4 тактов МК. Чтобы опять включить JTAG нужно два раза подряд вписать "0" в бит JTD.
0
Sottipmir
04.07.2016, 05:42 3
Спасибо!
Фьюз JTAGEN действительно включен! Попробую сегодня без него)
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
04.07.2016, 15:03 4
Port F serves as digital input only
!!! Ну и так далее из DS. А почему - легко найти в DS
0
Sottipmir
06.07.2016, 01:59 5
Ура! Без фьюза JTAFEN всё ожило и заработало)

А вот насчёт "Port F serves as digital input only" странно, у меня вон на одной из плат с этого порта выходами работают все ноги, пока вроде нормально)
Скачал английский даташит, поизучаю этот момент, спасибо за комментрарий)

В целом, вопрос снят!)
(а так, например, ещё одно из чудес - иногда перед прошивкой надо сбросить флэш память несколько раз, иначе прошивка не работает... это в порядке вещей, или руки "золотые"?!)))
06.07.2016, 01:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2016, 01:59
Помогаю со студенческими работами здесь

Чудеса с БП
Всем доброго времени суток. Имеется два БП на 400 оба стартуют если заводить скрепкой и...

Чудеса
В общем это скрин с диспечера задач. А это уже со свойств моего компьютера. Вопрос...

Частотомер на ATmega128
Здравствуйте, не могу разобраться в чем проблема. Написан код для того, что бы на выход PB4...

Atmega128 + avrdude
О пине PEN и замене MOSI/MOSI на PDO/PDI. Будет ли работать, если подключать как обычно, а PEN...

ATmega128 PORTF
Не получается настроить PORTF на выход. фуз джитага скинул, режим совместимости с м103 убрал,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru