Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/32: Рейтинг темы: голосов - 32, средняя оценка - 4.66
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
1

Не работают часы на ATMega16 (asm)

09.07.2013, 07:40. Просмотров 5788. Ответов 11
Метки нет (Все метки)

Помогите, пожалуйста, начинающему. В качестве первого проекта решил написать програмку часов (так как по идее там должно быть задействовано достаточно функций-ССИ (потом возможно и подключение LED), таймеры, кнопки, возможно АЦП для контроля батарей, потом возможно м\сх часов реального времени, ну и может еще что). Все это делаю на PinBoarde. Пока для изучения таймеров делаю отсчет времени с помощью таймера 1. Но сейчас застрял на обработке кнопок. В протеусе вроде как даже почти работают (правда вместо первой и последней цифры выводятся 8), в реальном железе ни фига (мигнет при загрузке - и все). Уже мозги все сломал с этими часами. Хочется их все таки победить. Укажите, что исправить в программе?

[3.07 Кб]

[19.46 Кб]
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2013, 07:40
Ответы с готовыми решениями:

HD44780+ATMega16+ASM
Писал когда то програмку для выводов символов на ЖКИ. Раньше работала. Решил тут недавно добавить...

Часы на ATmega16
Начал изучать микроконтроллеры AVR. Посоветовали начать с часов. Пока делаю на трехэлементном ССИ...

Не работает USART ATMega16 (asm)
Пытаюсь тут сделать прием данных по усарту. В дальнейшем планировалось сделать вывод строки...

Не получается опросить клавиатуру (ATmega16, ASM)
Написал программу для интереса, которая должна при нажатии кнопки которая подключена к порту С7...

Часы реального времени на Atmega16
Собрала в Proteus схему и написала код, но работает криво (схема в Протеус и код в архиве)....

11
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
09.07.2013, 13:06 2
В пртеусе так нарисовал... что прям как будто лабиринт.... типа "угадайте.. что куда подключено..."
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 13:53 3
Прошу прощения. Первый раз протеусом пользовался и делал в принципе схему только чтоб проверить. Сейчас перерисовал схему более культурно - и знаете, в протеусе все идеально заработало. Спасибо за тычок)). Почему ж тогда в реальном железе то не работает непонятно только.. Может кто нибудь на своем пинбоарде проверит?

[3.07 Кб]
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.07.2013, 13:56 4
Цитата Сообщение от tux
перерисовал схему более культурно - и знаете, в протеусе все идеально заработало.
А до "культурной перерисовки" схема в Протеусе соответствовала схеме в железе? Теперь схему в Протеусе Вы изменили (раз она не работала раньше, а теперь заработала). Ну, и в "железной" схеме надо так же изменить.
0
09.07.2013, 13:56
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
09.07.2013, 14:01 5
Осциллограф есть?
Если осциллографа нет, надо узнать контроллер вообще работает? Например временно написать код мигания с низкой частотой светодиода или дисплея, если получается - дальше разбиратся...
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 14:07 6
Да в пинбоарде вроде менять то нечего. подключение вроде то же самое все осталось. убрал хаос и добавил резистор в цепь питания на коллектор.
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 14:10 7
Цитата Сообщение от ShodS
Осциллограф есть?
Если осциллографа нет, надо узнать контроллер вообще работает? Например временно написать код мигания с низкой частотой светодиода или дисплея, если получается - дальше разбиратся...
У меня есть программа просто вывода 000, есть просто программа отсчета секунд. Они как бы работают. Доберусь до компа с виндой - попробую перепрошить. Может коряво код записался..
0
ZIvS
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 157
09.07.2013, 14:18 8
Цитата Сообщение от tux
Помогите, пожалуйста, начинающему. ...
В обработчике прерывания таймера нужно обязательно сохранять регистр SREG, у Вас не сохранен.

Например так можно сделать:
push temp
in temp,SREG
push temp
...
...
pop temp
out SREG,temp
pop temp
reti
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 15:20 9
Цитата Сообщение от ZIvS
В обработчике прерывания таймера нужно обязательно сохранять регистр SREG, у Вас не сохранен.

Например так можно сделать:
push temp
in temp,SREG
push temp
...
...
pop temp
out SREG,temp
pop temp
reti
Спасибо за совет, но не помогло. На дисплей в реале ничего не выводится. Если прошить код от программы просто с выводом 000 все работает. Приложил архив с файлами протеуса и своей програмкой

[53.42 Кб]
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 15:40 10
Когда пальцем трогаешь контакты - начинают бегать цифры..
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.07.2013, 17:16 11
Цитата Сообщение от tux
Когда пальцем трогаешь контакты - начинают бегать цифры..
Тогда надо бы фьюзы проверить в МК. Покажите, кАк сконфигурировано.
0
tux
0 / 0 / 0
Регистрация: 19.05.2008
Сообщений: 16
09.07.2013, 18:19 12
Я ж через бутлоадер гружу код..
0
09.07.2013, 18:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 18:19

Считывание числа и вывод на светодиоды (ATMega16, ASM)
Приветствую. Нужно считать 4-х разрядное число с выводов РА5-РА2, разделить на 4 и прибавить 5 (в...

Организация приема байт на PortB (ASM, ATMega16)
Помогите пожалуйста с кодом. AVRStidio, Ассемблер. Задание Организовать прием семи байт данных...

АЦП+UART+семисегментный индикатор(ATMega16, asm)
Пытаюсь разобраться с АЦП на AVR. Взял за исходник вот эту программу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru