Нужно настроить два ШИМа
ШИМ на тамер_1 - с регулируемой частотой
ШИМ на таймер_0 - обычный ШИМ ( FAST PWM )
К схеме подключен дисплей от нокиа-3310
На дисплей в дальнейшем буду выводить служебную инфу.
Сейчас на дисплей вывожу слово "ТЕМПЕР." - он служит мне помощником при отладке кода.
Ноги к которым подключен дисплей указаны в библиотеке дисплея.
Настроил таймер_0 на ШИМ.
ШИМ не работает - точнее нога OC0A не "дергается"... ( постоянно подтянута к земле )
Мало того, еще и дисплей перестал работать.
Предположительно вижу две причины:
1) процессор не доходит то того места, где нужно выводить инфу на дисплей. ( где то циклится или зависает )
2) где то в коде конфликт таймера_0 и библиотеки дисплея.
Провел тест:
Таймер_1 работает исправно, а значит процессор выполняет код исправно, это значит что первый вариант отпадает.
Остается второй вариант...
Думал может где-то элементарную ошибку допустил, но ни чего найти не могу.
Если удалить инициализацию дисплея и не подключать его библиотеку, то ШИМ все равно не работает.
П.С.:
1) В датащите куча ошибок.
Атмел ужасен в этом плане.
Они каждый раз копируют датащиты с предыдущих семейств МК вместе со старыми ошибками и добавляют новые..
2) Наткнулся на такой прикол:
я сперва допустил ошибку:
Настраивал таймер_0
И вместо того что бы написать
Код: Выделить всё
ldi Temp, (1<<COM0A1)|(1<<COM0A0)|(1<<WGM01)|(1<<WGM00)
sts TCCR[b]0[/b]A,Temp
ldi Temp, (0<<WGM02)|(1<<cs02)
sts TCCR[b]0[/b]B, Temp написал так:
Код: Выделить всё
ldi Temp, (1<<COM0A1)|(1<<COM0A0)|(1<<WGM01)|(1<<WGM00)
sts TCCR[b]1[/b]A,Temp
ldi Temp, (0<<WGM02)|(1<<cs02)
sts TCCR[b]1[/b]B, Temp И компилятор это проглотил - не поперхнувшись!
Не смотря на то, что в регистре TCCR1A(B) биты имеют другие "имена"
Как так?
- Вложения
-
- котел - копия.7z
- (448.48 КБ) 182 скачивания



