был у меня рабочий код, для работы с TWI, написанный под atmega644pa
переделал его под atmega324pb (у которой два TWI)
переименовал нужные регистры добавив нолик,
и теперь не работает собака, виснет на строке
TWCR0=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while(!(TWCR0 & (1<<TWINT)));
Из цикла не выходит.
Инициализировал как обычно
TWBR0 = (F_CPU/slaveF_SCL - 16)/2;
if (TWBR0 < 10) {TWBR0 = 10;}
TWSR0 &= (~((1<<TWPS1)|(1<<TWPS0)));
Проблема не в железе. Схема работала.
Кто работал с такими мегами с буквой B ? В чём причина может быть ?
Читаю мануал, но пока не нашёл.
atmega324pb TWI
- U235
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Вт фев 21, 2012 20:42:26
- Откуда: Санкт-Петербург, Россия, Земля
Re: atmega324pb TWI
Что происходит на PORTC0 и PORTC1? Регистры MCUCR и PRR0 не трогали?
Re: atmega324pb TWI
Что происходит на PORTC0 и PORTC1
Никак не используются. Настроены как выходы.
Регистры MCUCR и PRR0 не трогали?
Сначала не трогал.
потом прописал даже
PRR0 &= (~(1<<PRTWI0));
чтоб удостоверится что режим энергосбережения не включен.
MCUCR не использую.
вообще прерывания не включаю.
Но факт в том что всё работало. В коде ничего кроме названий регистров не менялось.
Возможно какие-то дополнительные регистры были введены в этом контролере, для взаимодействия двух TWI между собой.
Уже на грани забить на аппаратный TWI и перейти на программный вариант. Но хотелось бы всё-таки разобраться.
- U235
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Вт фев 21, 2012 20:42:26
- Откуда: Санкт-Петербург, Россия, Земля
Re: atmega324pb TWI
Я имел в виду, что снаружи на ножках PC0 и PC1 происходит.
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
Re: atmega324pb TWI
U235 писал(а):что снаружи на ножках PC0 и PC1 происходит.
Вообще ничего не происходило. +5в на обеих.
Но похоже это сами микросхемы такие.
Поменял кварц на более низкочастотный, с 18.432 на 14.7456 , перенастроил частоту, и всё запустилось.
Хотя генерация была в норме. И код выполнялся нормально. кроме работы с TWI.
Ещё один неприятный нюанс с ними вылез, если тронуть пальцами ножки кварца, то в прошивке прописывается мусор.
В самом коде есть команды работы с флеш памятью, но с серией A и PA такого не наблюдалось.
То есть от малейшей помехи, содержимое рабочих регистров нарушается, и на высоких частотах периферия глючит.
Обвязка кварца и фьюзы по мануалу.
Либо партия такая попалась, либо серия PB такая в принципе.
Покупал на проверенной фирме.
Сейчас едет партия с другой фирмы, посмотрим.
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: atmega324pb TWI
а подать 220 Вольт из розетки на ножки кварца ты не пробовал?vt1980 писал(а):если тронуть пальцами ножки кварца
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: atmega324pb TWI
а подать 220 Вольт из розетки на ножки кварца ты не пробовал?
туалетный юмор нынче не в моде.
задел чисто случайно, увидел эффект которого не должно быть.
в крайнем случае генерация должна пропасть и контроллер остановиться.
когда тестирую изделия на надёжность, то проверяю различные ситуации которые могут возникнуть.
в том числе и влияние внешних факторов на кварцевый генератор.
некоторые устройств для проверки цепей защиты и шокером могу треснуть и 220 подать.