реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> А симулятор то оказывается знает не все!, AVRStudio, 16-bit Timer/Counter1
M_A
сообщение Sep 20 2005, 07:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 27-12-04
Из: г. Иркутск
Пользователь №: 1 689



Расскажу про грабли, на которые сегодня наступил, чтоб другие не наступали.
Я пока начинающий, по этому профи это все может быть давно известно, а вот новичкам как я пригодится.
Значит так:
Девайс at90s2313, но думаю справедливо для любого с 16-битным счетчиком.
Завожу я 16-битный каунтер, он начинает тикать. Выгребаю постоянно его значения из TCNT1H, сравниваю, не натикало ли столько сколько мне нужно, если да, переключаю одну из ног в противоположное положение и записываю нули в TCNT1H и TCNT1L, чтоб заново считал....
В симуляторе в AVR Studio все пашет. Заливаю в МК - шиш!
Полдня парился, пока не залез в даташит и не прочитал, что при записи в TCNT1H и TCNT1L сначала нужно обязательно писать в TCNT1H, а при чтении наоборот, первым читать TCNT1L. Причем TCNT1L вообще не пишется, пока не запишешь че-нить в TCNT1H, то есть нельзя в него по отдельности писать. С чтением наверное то-же, не проверял.
Сделал, как написано - воркает!!! А симулятор молчал паразит!
Мораль: не пологаться на 100% на симулятор, и побольше читать даташиты...
Go to the top of the page
 
+Quote Post
eXeC001er
сообщение Sep 20 2005, 12:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 23-02-05
Из: Краснодар
Пользователь №: 2 848



это делается не выгребанием значением натиканного а записью в регистр сравнения значения которое вам надо и установкой флага чтобы при сравнении генерировалось прерывание, в обработчике которого и передергивайте ноги.
Но это так не по делу но для информации.
Go to the top of the page
 
+Quote Post
M_A
сообщение Sep 20 2005, 12:31
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 27-12-04
Из: г. Иркутск
Пользователь №: 1 689



Цитата(eXeC001er @ Sep 20 2005, 12:00)
это делается не выгребанием значением натиканного а записью в регистр сравнения значения которое вам надо и установкой флага чтобы при сравнении генерировалось прерывание, в обработчике которого и передергивайте ноги.
Но это так не по делу но для информации.
*

Я уже и сам так подумал, спасибо за потдверждение правильности моей мысли blush.gif
Я пока начинающий, до прерываний еще не добрался...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 20 2005, 20:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(eXeC001er @ Sep 20 2005, 20:00)
это делается не выгребанием значением натиканного а записью в регистр сравнения значения которое вам надо и установкой флага чтобы при сравнении генерировалось прерывание, в обработчике которого и передергивайте ноги.
Но это так не по делу но для информации.
*


Это тоже не по делу, но можно прерывание вообще не писать, если оно нужно только для изменения уровня сигнала на выводе, а переключать уровень на выводе (ОС1А или ОС1В) аппаратно, если TCNT1 перевести в ШИМ режим fast PWM mode. Правда я не знаю точно, поддерживает ли at90s2313 такой режим. По совпадению с OCR1A(или OCR1B, надо смотреть даташит), TCNT1 будет обнулятся, при этом лог. уровень на соответствующем выводе (ОС1А или ОС1В) будет инвертироваться.


--------------------
Go to the top of the page
 
+Quote Post
M_A
сообщение Sep 21 2005, 01:02
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 27-12-04
Из: г. Иркутск
Пользователь №: 1 689



Цитата(prottoss @ Sep 20 2005, 20:24)
Это тоже не по делу, но можно прерывание вообще не писать, если оно нужно только для изменения уровня сигнала на выводе, а переключать уровень на выводе (ОС1А или ОС1В) аппаратно, если TCNT1 перевести в ШИМ режим fast PWM mode. Правда я не знаю точно, поддерживает ли at90s2313 такой режим. По совпадению с OCR1A(или OCR1B, надо смотреть даташит), TCNT1 будет обнулятся, при этом лог. уровень на соответствующем выводе (ОС1А или ОС1В) будет  инвертироваться.
*


Да, at90s2313 такое умеет, просто это я для начала вывел на дрыганье ногой, для наглядности, вообще то мне значения счетчика нужны в программе.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 13:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016