Собрал макет на AT90PWM3. Сложилось впечатление, что это - самый недоделанный из всех AVR.
1) Как определить ревижн чипа (A или B ). Так и не понял до конца, что же у меня.
2) PSCnRB и PSCRV.
Дословно написано следующее: If PSCRV fuse equals 0 (programmed), the selected PSC outputs will be forced to low state. If PSCRV fuse equals 1 (unprogrammed), the selected PSC outputs will be forced to high state.
Прошил PSCnRB=0 вместе с PSCRV=0, но получил прямо противоположное поведение: при PSCRV=0 на выходах стоит Vcc. При PSCRV=1 на выходах стоит 0.
Это уже 5 или 6 ревижн документа, который все в стадии Preliminary. То ли это фича, то ли я что-то не понимаю.
3) BOD и Aref.
Попытался при 5-вольтовом питании включить 4.3 вольта BOD фьюзами. Включил. Как только выставляю через ADMUX Aref=AVcc, контроллер сбрасывается. То ли это Brownout reset, то ли что-то иное - не выяснял, но все зацикливается на сбросе строго после записи в ADMUX. При отключенном BOD все нормально.
4) Amplified ADC conversions.
Не удается заставить работать ADC по дифференциальному входу AMP1. Чего только не перепробовал. При включении (ADMUX) канала 10 (ADC10) все работает. При включении канала 11 или 12 (AMP0, AMP1) преобразование не свершается - бит ADIF не устанавливается. Пробовал включать и выключать amplifier, пробовал запускать преобразование через ADSC в ADCSRA (как для B ревижена чипа), так и через ADASCR в ADCSRB (как для A ревижена) - никакой разницы. Тестовая программа виснет на куске while (!(ADCSRA & (1<<ADIF))) ;
Совершенно в расстроенных чувствах - то ли это такой экземпляр попался, то ли ревижен, то ли я что-то не того. Но ни с одним другим AVR-ом таких проблем не было. А тут просто кладезь сюрпризов.
Чего стоит только почитать вот этот документик:
AT90PWM2/3 Programming Guide (User Guide, 6 pages, revision A, updated 06/06). This document is intended for AT90PWM2/3 users, it focuses on fuse bit programming and configuration. It also provides information and synthesis about fuse bit configuration versus different Atmel hardware development kits using AT90PWM2/3.
Цитата
AT90PWM2/3 is no more programmable, it must be unsoldered.
Part is no more accessible (ничем вообще, не только по ISP или чему-то еще).
Похоже, на этот раз Atmel оплошала, и серьезно.