на 3 линии выводится от 0 до 7, а на сегментник 1-8. ))nictrace писал(а):как это Вы числа от 1 до 9 тремя линиями кодируете?.. Максимум - 1...8
ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- Реклама
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
У вас МК то какой ? А на рисунке ? Опять путиницу начинаете ?-=MindHunteR=- писал(а):Спасибо Вам, я понял насчет фьюзов!
Вот так:
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Отлаживайте частями - вначале отладте ввод с кнопок, потом вывод на индикаторы. Или наоборот.-=MindHunteR=- писал(а): Помогите пожалуйста найти ошибку!
Ну это примерно то, что я делал на протяжении 5 часов.
У меня подозрение, что я не совсем верно ниросовал схему в ПРОТЕУСЕ..
У меня подозрение, что я не совсем верно ниросовал схему в ПРОТЕУСЕ..
- Реклама
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Че там 5 часов делать то.-=MindHunteR=- писал(а):Ну это примерно то, что я делал на протяжении 5 часов.
У вас должна быть промежуточная переменная. Проверьте что значение с кнопок в нее ложиься. Антидребезг вам не нужен просто опрашивайте кнопки 50 раз в секунду в прервании таймера например.
Входы кнопок у вас должны быть с подтяжками - т.е. красным гореть в протеусе когда не нажаты, а нажатве синим.
Сделал как Вы сказали.
Заработало.
Спасибо!
2 Вопроса общего характера:
1) стоит ли пользоваться вотчдогом?
2) По поводу прерываний. Я напишу, а вы скажите правильно или нет.
Чтоб запустить прерывание по таймеру, я выполняЮ:
Это врубает мне интеррапты вообще.
Потом я врубаю переполнение на таймер1
Отрубаю ШИМ и аутпут и выставляю раз в сколько тактов будет тикать таймер
И ставлю скоко раз надо тикнуть, чтоб переполниться...
Я прав?
Заработало.
Спасибо!
2 Вопроса общего характера:
1) стоит ли пользоваться вотчдогом?
2) По поводу прерываний. Я напишу, а вы скажите правильно или нет.
Чтоб запустить прерывание по таймеру, я выполняЮ:
Код: Выделить всё
#asm
sei
#endasmПотом я врубаю переполнение на таймер1
Код: Выделить всё
TIMSK=0x80;Код: Выделить всё
TCCR1A=0x00;
TCCR1B=0x05;Код: Выделить всё
TCNT1=ШЕСТНАДЦАТИБИТНОЕ ЧИСЛОНе совсем, ваш Т1 будет тикать 0xFFFF-"шестнадцатибитовое число", т.е. он будет считать от вашего числа до 0xFFFF, потом сбросится и если TCNT1 не обновить будет считать от 0x0000 до 0xFFFF.
Если вам надо чтобы счетчик отсчитывал определенное число тиков лучше использовать один из режимов "по совпадению"
p.s. юзаю только ASM
Если вам надо чтобы счетчик отсчитывал определенное число тиков лучше использовать один из режимов "по совпадению"
p.s. юзаю только ASM
отлично, значит я почти правильно все понял!
Я пока на СИ, но надеюсь, что и с АСМ буду разбираться....
Я пока на СИ, но надеюсь, что и с АСМ буду разбираться....
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Обычно прерывания включаю глобально уже после настрое таймера.
в примерах CVAVR есть пример как это пишут
#asm("sei")
А потом загружают число в регистр таймера.
В задаче 6 курса есть счет с 0 до заданого числа, тогда его не надо обновлять после каждого отсчета.
в примерах CVAVR есть пример как это пишут
#asm("sei")
А потом загружают число в регистр таймера.
В задаче 6 курса есть счет с 0 до заданого числа, тогда его не надо обновлять после каждого отсчета.
да и 1 тоже может быть 16 битным и 0x1000 тоже пожалуй.GP1 писал(а):Не совсем, ваш Т1 будет тикать 0xFFFF-"шестнадцатибитовое число"
Ясненько.
Я так понимаю, что если мне надо сделать прерывание каждые, скажем 5 сотых секунды, то отталкиваясь от частоты задающего генератора настраиваю таймер играясь с TCCR1B и TCNT1.
В ПРОТЕУСЕ естественно время будет искажено, да?
Я так понимаю, что если мне надо сделать прерывание каждые, скажем 5 сотых секунды, то отталкиваясь от частоты задающего генератора настраиваю таймер играясь с TCCR1B и TCNT1.
В ПРОТЕУСЕ естественно время будет искажено, да?
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Да нет. Чего ему искажаться.-=MindHunteR=- писал(а):В ПРОТЕУСЕ естественно время будет искажено, да?
Ну учитывая, что во время симуляции на моем древнем лапте проц. загружен на 100%, я полагаю, что ПРОТЕУС может не успевать обрабатывать все что надо...
Хотя когда я ставлю дилей в 2 секунды, счет проиходит быстрее (чуть больше одной сек.) Не знаю почему.
Частоту кварца я указываю только в свойствах проекта в CVAVR и в ПРОТЕУСЕ в свойствах чипа?
Так что с вотчдогом? Делать? Или к черту?
Хотя когда я ставлю дилей в 2 секунды, счет проиходит быстрее (чуть больше одной сек.) Не знаю почему.
Частоту кварца я указываю только в свойствах проекта в CVAVR и в ПРОТЕУСЕ в свойствах чипа?
Так что с вотчдогом? Делать? Или к черту?
с часовой собакой поступай как знаешь, это только подстраховка. если где застрянет - то пойдет с начала, точнее с точки пересброса
Вот вопросик назрел: а что, вачдог по умолчанию отключен?.. 
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Есть какие то нюансы его включения?
Я читал что обнулять его таймер надо как можно чаще... Но не вставлять же обнуление через каждую строчку... Как это делать корректно?
Я читал что обнулять его таймер надо как можно чаще... Но не вставлять же обнуление через каждую строчку... Как это делать корректно?
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Обычно так и выходит. вы должны проверить программу что таймер не сработает, т.е. будет во время сброшен.-=MindHunteR=- писал(а):Я читал что обнулять его таймер надо как можно чаще... ?
- Сообщения: 10
- Зарегистрирован: Сб мар 28, 2009 17:07:00
добый день всем котам.
помогите плиз новичку.
возможно, уже кто-то задавал этот вопрос, но или я невнимательный, или не там смотрел.
взял tiny2313 в исполнении SOIC20, подключил по 5 проводкам, прошил в cvavr2 через LPT. всё было хорошо.
но потом захотел поменять фьюзы, отвечающие за частоту, cksel 0...3.
и перепутал парочку случайно. наверное, установил недопустимую комбинацию. другие фьюзы не трогал. то есть сначала прочёл дефалтные заводские, сменил вот эти и записал обратно. всё. больше таня не подключалась. то есть не определялась программатором. хотя на той же плате у меня другие МК стоят, с ними всё норм.
я так понял, нужно подать тактовый импульс на XTAL1? как его подать? помогите, люди добрые, буду очень признателен.
помогите плиз новичку.
возможно, уже кто-то задавал этот вопрос, но или я невнимательный, или не там смотрел.
взял tiny2313 в исполнении SOIC20, подключил по 5 проводкам, прошил в cvavr2 через LPT. всё было хорошо.
но потом захотел поменять фьюзы, отвечающие за частоту, cksel 0...3.
и перепутал парочку случайно. наверное, установил недопустимую комбинацию. другие фьюзы не трогал. то есть сначала прочёл дефалтные заводские, сменил вот эти и записал обратно. всё. больше таня не подключалась. то есть не определялась программатором. хотя на той же плате у меня другие МК стоят, с ними всё норм.
я так понял, нужно подать тактовый импульс на XTAL1? как его подать? помогите, люди добрые, буду очень признателен.
Блуд не любит флуд = )


