Таймер на ATMega8 в Bascom-AVR
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
wait какое максимальное значение может иметь?
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Реклама
мы мыслим примерно одинаково-может тупо поставить wait на 4 часа =14400 и все?
добавил
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd.0 = Output
Config Portc.5 = Output
Dim S As Word
Rel1 Alias Portd.0
Led1 Alias Portc.5
S = 0
Do
Wait 14395
Rel1 = 1
Led1 = 1
Wait 5
Led1 = 0
Rel1 = 0
Loop
End
компилируется,занято 2 % памяти!!!какой у Вас программатор?
добавил
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd.0 = Output
Config Portc.5 = Output
Dim S As Word
Rel1 Alias Portd.0
Led1 Alias Portc.5
S = 0
Do
Wait 14395
Rel1 = 1
Led1 = 1
Wait 5
Led1 = 0
Rel1 = 0
Loop
End
компилируется,занято 2 % памяти!!!какой у Вас программатор?
Последний раз редактировалось pavel1979 Вт окт 08, 2013 14:57:25, всего редактировалось 2 раза.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
Фузы вообще не ставил, кварц есть на 16Мгц. Отстает на 16 сек., я так понимаю кварц нужно через фузы забить. Как сделать фузы для кварца и через что?
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
Отстает на 16 сек за 4 часа? Вроде-бы клокдив по умолчанию стоит(делит на 8 внутренний генератор),вроде тогда частота должна быть 1000000 а не 8000000
Последний раз редактировалось vek Вт окт 08, 2013 15:02:56, всего редактировалось 1 раз.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
Нет, за 1 секунду. Выставлено wait 1 - в итоге получается ждешь 16 сек до того как погаснет светодиод.
- Реклама
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
У тебя частота 4000000 - по умолчанию с завода и клокдив стоит тоже с завода, значит пропиши частоту верно: просто поменяй в строчке
$crystal = 8000000 на $crystal = 500000
Если точность позволяет +/- минута-другая в час,то можно без кварца
В фьюзы можешь не лезть.
$crystal = 8000000 на $crystal = 500000
Если точность позволяет +/- минута-другая в час,то можно без кварца
В фьюзы можешь не лезть.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
у мега8 нет клокдив,ФУЗЫ НЕ МЕНЯЙ-просто прочитай и напиши какие стоят
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
а лучше принт-скрин экрана, посмотрим какие галочки стоятpavel1979 писал(а):у мега8 нет клокдив,ФУЗЫ НЕ МЕНЯЙ-просто прочитай и напиши какие стоят
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
О-о. Нифига себе,а там что не надо галочки что-ли тыкать? просто выбираешь строчку нужную?
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
Кстати странно что секунда в секунду,частота была прописана как 8,а кварц ставишь на 16. Или строчку переписал правильно?
логично,этой фигней мы процессор на 100% загрузили.Значит какое решение напрашивается?ZN-GAME писал(а): Но мне кажется использовать данный метод таймера не совсем логично, т.к. планирую в дальнейшем еще пару функций прилепить к МК - забор температуры и замер напряжения.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
А посчитать сам сможешь?Для этого необходима утилита ПУСК->СТАНДАРТНЫЕ->КАЛЬКУЛЯТОР 
Последний раз редактировалось vek Вт окт 08, 2013 15:40:41, всего редактировалось 1 раз.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
там сильно заумно,я вообще не разобрался,поэтому фузы прошиваю через алгоритм билдер и программатор SPA,если генерацию сажать на кварц тогда лучше сделать прерывания-будут точные временные интервалы,а на счет добавить термометр и вольтметр-тогда сразу можно поставить жки,нарисовать схему под конечное устройство,сделать плату,а уже потом составлять программу,пошагово,проверяя все в железе,это конечно если нет отладочной платы,я делаю так
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
И про GPS-модуль с компасом не забудь
Прокачивать,так прокачивать
и еще макетка - прикольная вещь,рублей 400 стоит.
и еще макетка - прикольная вещь,рублей 400 стоит.
Последний раз редактировалось vek Вт окт 08, 2013 15:45:32, всего редактировалось 1 раз.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
На макетке все и делаю. А вот с таймером-прерывателем думаю не разберусь.
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
Ну смотри. Имеем Т1 - он в любых АВР-ках 16 разрядный. Это значит что считать он может до 0xffff
По нашему до 65535.
Есть еще регистры сравнения типа OCR1A.
Работает так:
Таймер тикает себе потихоньку,никого не трогает
Выполняется основная программа,ну там считает чего-то,складывает,вычитает.Таймер в это время тикает вообще отдельно,как но другой планете.И тут ОПА!
Совпадение в канале А. Это значит что счетчик таймера(TCNT1 называется) совпал со значением в OCR1A. Основная программа прерывается(в стек запоминается адрес где программа прервалась,это
делается автоматически,без программиста).
И прыгаем по вектору в обработчик прерывания(Обработчик- это обычная подпрограмма,в которую можно попасть только при определенных условиях).В обработчике делаем что-то простое,типа
incr COUNTER и завершаем обработчик. Программа продолжает работать дальше:считать,читать,
какать,писять или чего там нам нужно
В придачу ко всему есть такой режим-СТС называется. Это когда таймер досчитывает до значения такого-же как хранимое в OCR1A и начинает считать сначала.
на частоте 16МГц Т1 может сосчитать максимум до ((1/16 000 000)*65536) секунд. Что является для нашей задачи слишком коротким промежутком. Нафиг так часто в эти часы запрыгивать? Процессору как-будто делать больше нефиг.
По нашему до 65535.
Есть еще регистры сравнения типа OCR1A.
Работает так:
Таймер тикает себе потихоньку,никого не трогает
Выполняется основная программа,ну там считает чего-то,складывает,вычитает.Таймер в это время тикает вообще отдельно,как но другой планете.И тут ОПА!
Совпадение в канале А. Это значит что счетчик таймера(TCNT1 называется) совпал со значением в OCR1A. Основная программа прерывается(в стек запоминается адрес где программа прервалась,это
делается автоматически,без программиста).
И прыгаем по вектору в обработчик прерывания(Обработчик- это обычная подпрограмма,в которую можно попасть только при определенных условиях).В обработчике делаем что-то простое,типа
incr COUNTER и завершаем обработчик. Программа продолжает работать дальше:считать,читать,
какать,писять или чего там нам нужно
В придачу ко всему есть такой режим-СТС называется. Это когда таймер досчитывает до значения такого-же как хранимое в OCR1A и начинает считать сначала.
на частоте 16МГц Т1 может сосчитать максимум до ((1/16 000 000)*65536) секунд. Что является для нашей задачи слишком коротким промежутком. Нафиг так часто в эти часы запрыгивать? Процессору как-будто делать больше нефиг.
Последний раз редактировалось vek Вт окт 08, 2013 16:07:24, всего редактировалось 1 раз.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
- Сообщения: 291
- Зарегистрирован: Ср май 26, 2010 20:40:47
Спасибо за разъяснение!
Логика мне итак понятна, вот с написанием кода всегда проблема была. Пару стетеек переварю, может придумаю что-нибудь.
- Сообщения: 563
- Зарегистрирован: Чт апр 16, 2009 04:53:41
Ну если логика понятна,тогда ладно. А с кодом я не помогу,Бейсик несоображаю.
В общем тебе нужен режим СТС таймера Т1. это биты WGM отвечают в TCCR
Еще обрати внимание на биты CS12...10 - предделитель тебе пригодиться
регистр TIMSK пошерсти - OCIE1A бит разрешает локально прерывание по совпадению с А
и незабудь глобально прерывания разрешить,перед этим по хорошему в регистр TIFR надо записать
0хff(не обязательно)
В общем тебе нужен режим СТС таймера Т1. это биты WGM отвечают в TCCR
Еще обрати внимание на биты CS12...10 - предделитель тебе пригодиться
регистр TIMSK пошерсти - OCIE1A бит разрешает локально прерывание по совпадению с А
и незабудь глобально прерывания разрешить,перед этим по хорошему в регистр TIFR надо записать
0хff(не обязательно)
Последний раз редактировалось vek Вт окт 08, 2013 16:21:45, всего редактировалось 2 раза.
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.


