Конфликт таймера_0 и дисплея-3310. Не работает ШИМ.

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

АТмега 328 на плате Ардуино мини.
Нужно настроить два ШИМа
ШИМ на тамер_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 КБ) 183 скачивания
Последний раз редактировалось uwrtey Ср ноя 16, 2016 09:05:19, всего редактировалось 1 раз.
не зная броду не лезь к вольтмоду
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

uwrtey писал(а):В датащите куча ошибок.
перечислите хотя бы некоторые, но лучше все, известные вам
uwrtey писал(а):И компилятор это проглотил - не поперхнувшись!
Не смотря на то, что в регистре TCCR1A(B) биты имеют другие "имена"
Как так?
а компилятор должен за этим следить? откуда ему знать, что за "имена" вы пожелали использовать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

или

Код: Выделить всё

out TCCR0A, R
или

Код: Выделить всё

sts TCCR0A+0x20, R
Добавлено after 57 seconds:
ARV писал(а):перечислите хотя бы некоторые, но лучше все, известные вам
+
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

перечислите хотя бы некоторые, но лучше все, известные вам
Это уже ОФФТОПОМ БУДЕТ.
Но раз уж начали:
1) посмотрите внимательно в таблицы с настройками тамера_1. как там ноги таймера подписаны ? А вот никак. Типа сам угадай..
2) посмотрите внимательно в таблицу с настройкой делителя тактовой частоы таймера - что такое CA ???? CS - знаю...
3) и много еще чего. Особенно в табличной части... Внимательно смотрите таблицы. Внимательно смотрите имена регистров.
Внимательно смотрите какие значение предлагает датащит указывать к регистрам. Ладно я уже знаю, что там ошибок куча.
а компилятор должен за этим следить? откуда ему знать, что за "имена" вы пожелали использовать?
Думаю, что да.
Он же в данном случае юзает библиотеку "m328Pdef.inc"
И мне кажется что он должен понимать с чем имеет дело.
Или нет? То-есть он может запихать в регистр TCCR1A бит (1<<cs02) ???
Если так, то это глупый компилятор.

По делу то можете чего подсказать? ( При всем моем уважении к старшему поколению :) , снимаю шляпу )
не зная броду не лезь к вольтмоду
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

uwrtey писал(а):посмотрите внимательно в таблицы
Таблиц там очень много. Сошлитесь на конкретную.
uwrtey писал(а):Если так, то это глупый компилятор.
Поясните как должен компилятор понять, что тут ошибка

Код: Выделить всё

Ldi 0x10,0x22
out 0x12,0x10
uwrtey писал(а):По делу то можете чего подсказать?
Вроде все по делу написано, нет?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

out TCCR0A, R
sts TCCR0A+0x20, R
извините я не понял...

Таблиц там очень много. Сошлитесь на конкретную.
открываем датащит http://www.atmel.com/Images/Atmel-42735 ... asheet.pdf

смотрим страницу 170
TC1 Control Register A
чего в таблице написано? Все ли верно?
открываем страницу 138 и смотрим как должно быть.

далее стр 142
таблица Table 19-10. Clock Select Bit Description
CA02 CA01 CS00 Description
что такое CA2 и CA01 ????
может CS ????
однако это Clock Select

Я не хочу остальные ошибки перечислять... Времени категорически не хватает.
Можно конечно ветку новую начать и там, на досуге, раздуть...
не зная броду не лезь к вольтмоду
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

uwrtey писал(а):извините я не понял...
Поглядите определение TCCR0A в файле m328Pdef.inc. Затем адрес регистра TCCR0A (раздел Registrs summary). Затем описание команд out и sts.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Спасибо, намек понял.
Под рукой данного файла нет.
Обычно я использовал команду OUT, но в 328 меге компилятор ругается, что ссылка "не достает" - почитал, что надо юзать STS.
однако таймер_1 удалось инициализировать именно так

Код: Выделить всё

sts TCCR1A

И работает нормально.
:dont_know:
не зная броду не лезь к вольтмоду
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

А Вы сделайте тоже самое и для регистра TCCR1A. Я имею ввиду поглядеть его определение и его местоположение в памяти.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

OK. Дома буду - гляну.
Под рукой нет подобной информации.
В Общем - спасибо большое.
Помощь приходит от одних и тех-же людей. :)
Низкий поклон за это.

ПС: А чего вы с меня так яро пытались про ошибки из датащита узнать?
Не поверили, что они там есть? Или можно Атмел носом ткнуть?
Если можно их носом ткнуть, то я кучу еще могу найти.. Я много находил.

Даже как то раздували, что это индусы в силиконовой долине отжигают, так как плохо инглиш знают. :)
не зная броду не лезь к вольтмоду
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

uwrtey писал(а):А чего вы с меня так яро пытались про ошибки из датащита узнать?
потому что наученные горьким опытом: у подавляющего большинства неучей всегда виноват компилятор, даташит и еще недокументированный баг в кристалле. в вашем случае это не совсем так, но подход изначально одинаков ко всем :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

И я подтверждаю сказанное. Из опыта, в том числе своего, 99% глюков ПО и ошибок ДШ, это "косоглазие" и "рукожопие".
uwrtey писал(а):А чего вы с меня так яро пытались про ошибки из датащита узнать?

То что Вы указали из ДШ, я бы не назвал это ошибками, скорее досадными опечатками, которые несомненно мешают. Но изредка, бывают и серьезные баги, которые Вы могли выяснить и это было бы очень полезно предоставить на общее обозрение.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Z_h_e, спасибо! Заработало! :beer:

ПС:
страница 184
20.14.12. Timer/Counter 1 Interrupt Mask Register
биты OCIEA и OCIEB на самом деле называются по другому - OCIE1A и OCIE1B
другие биты в этом регистре скорее всего тоже.. Только на практике я не проверял их...
не зная броду не лезь к вольтмоду
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Возможно этот документ облегчит Вам жизнь.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Хм. А я ведь встречал его и раньше.
Видимо на этот раз выбрал неудачный датащит. :)
Еще раз спасибо! :beer:

************

В продолжение разговора о памяти

.equ TCCR1A = 0x80 ; MEMORY MAPPED
.equ TCCR0A = 0x24

пояснение нашел вот тут - http://easyelectronics.ru/avr-uchebnyj- ... h-rom.html

:beer: :beer: :beer:
не зная броду не лезь к вольтмоду
Ответить

Вернуться в «AVR»