ATtiny2313 : Таймер Т0

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 13
Зарегистрирован: Вс авг 19, 2007 18:18:37
Откуда: Мценск

Сообщение Georg »

Добрый день. Возникла проблема с таймером, при его включении на выходе PB2 включается выход схемы сравнения, правда я с этой проблемой столкнулся в симуляторе AVRstudio 4.8 возможно железо будет работать. Таймер конфигурирую примерно так
InitTim0:
ldi tmp,(1<<TOIE0)
out TIMSK,tmp
ldi tmp,$5
out TCCR0B,tmp
ret
прошу подскажите что делаю не так, заранее благодарю.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

Хм... по программе ничего подобного происходить не должно... я предлагаю вам выложить весь проэкт(если конечно там нет ничего секретного :roll: ). Затем проверить подключаемую библиотеку на соответсвие номеров битов. Ну а дальше походу разберёмся.
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вс авг 19, 2007 18:18:37
Откуда: Мценск

Сообщение Georg »

Ничего секретного нет просто я рещил попробовать слятать клавиатуру, с клавиатуры число должно передоваться на ПК. Я не волшебник я только учусь. Написал начало кода решил проверить в отладчике и вот завис . Вот сам кот
Вложения
asmkod.txt
(3.58 КБ) 376 скачиваний
Последний раз редактировалось Georg Чт авг 23, 2007 06:23:32, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3792
Зарегистрирован: Чт сен 14, 2006 11:42:09
Откуда: Обитаю на чердаке

Сообщение Мышонок »

Georg, в следующий раз прошу длинные листинги прицеплять к сообщению вложенным файлом, при необходимости - архивом. Так будет всем удобнее. :)
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 13
Зарегистрирован: Вс авг 19, 2007 18:18:37
Откуда: Мценск

Сообщение Georg »

Извеняюсь, исправлюсь :)
Не "исправлюсь", а "исправлю". Кнопка "правка" всегда в наличии!
Сэр Мурр, модератор .
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Есть грубейшая ошибка в программе: с метки RESET начинает выполняться основная программа, причем буквально сразу она ПЛАВНО ПЕРЕХОДИТ к выполнению обработчика прерываний OVF0, который завершается командой RETI, в результате которой наверняка произойдет "возврат" черти-куда. На метку MAIN программа не попадет никогда.
Возможно, причина странного поведения программы именно в этом.

P.S. И кто, скажите, учил вас NOP-ами забивать векторы прерываний в начале программы?! Блин, никакой пользы от этого нет, одно замусоривание программы!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

1-На кой столько NOPов?
2-Почему при инициализации таймера в TIMSK ноль?
3-Поменяй местами main и OVF0
4-И где наконец глобальное разрешение прерываний???
Родился
Сообщения: 13
Зарегистрирован: Вс авг 19, 2007 18:18:37
Откуда: Мценск

Сообщение Georg »

На счет NOP-ов то этому научился у В. Н. Баранова, а за советы спасибо буду пробовать применять.
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

Невнимательно Баранова читаеш... Он хоть нопов и натыкал(я сам так делаю) но все подпрограммы и обработчики прерываний записывает после основной программы. Строй программы так, чтобы у тебя в обработчике Ресета была инициализация всего-всего(можно вызов процедур, но ИМХО необязательно(настройка перферии и т.д.)) потом после настройки метка Main и сразу-же поставь rjmp Main, а потом между этими двумя строками пиши основную программу а все подпрограммы пиши после rjmp Main. Также не забывай, что таймер начинает считать сразу после настройки пределителя, а перейти на прерывание сможет, как правильно заметили товарищи, только после глобального разрешения прерываний. И если настроить таймер а потом ещё кучу девайсов настраивать, то может наступить момент, когда обработчик прерываний запустится до окончания настройки переферии. А оно тебе надо? Так что таймер настраивать в самую последнюю очередь, а перед меткой main ставить глобальное рарешение прерываний самое оно.
примерно так:

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


RESET: 
	;Initsializatsiya
	rcall InitUart
	rcall InitPort
	rcall InitRow
	rcall InitCol
	rcall InitTimer0
	sei

main: 
	nop 
	nop 
	nop 

rjmp main 
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»