Постараюсь покороче: ATMega16 + код (без таблицы прерываний). Кварц 10Мгц По идее (что и показывает студия) портС должен моргать в режиме SOS с периодом точки - 1 сек, тире - 2 сек, пауза между ними - 2 сек что задается в массиве и умножением значения задержки на 98. В реале же порт моргает гораздо чаще. Переключения порта еле заметны глазом. Подскажите пожалуйста в чем я ошибся.
tim1a: push temp push R1 push R0 ldi temp, 0 out TCNT1H, temp out TCNT1L, temp ldi temp, 98 mul time, temp out OCR1AL, R0 out OCR1AH, R1 ldi time, 0 pop R0 pop R1 pop temp reti
_________________ не выдрючивайся, да не выдрючен будешь ...
А по коду что скажете? Я правильно настроил таймер? По идее при максимальном значении в регистре сравнения таймера пауза должна быть около 6 секунд. На деле светодиод мигает на частоте 10-20 герц.
_________________ не выдрючивайся, да не выдрючен будешь ...
По идее (что и показывает студия) портС должен моргать в режиме SOS...
... не знаю, что там "показывает студия", но программа будет делать именно то, что написано Вами. В чем могут быть ошибки - уже писал. Не обладая возможностью телепата - не могу знать, правильно ли заданы параметры симулятора. Что касается кода - то
tim1a: push temp push R1 push R0 ldi temp, 0 out TCNT1H, temp out TCNT1L, temp ldi temp, 98 mul time, temp out OCR1AL, R0 out OCR1AH, R1 ldi time, 0 pop R0 pop R1 pop temp reti
akl ))) Только что сам нашел это и хотел написать что проблема решена.
Проблема была именно из за этого. Так как протеус показывал результаты схожие с реалом начал отслеживать различия между протеусом и студией пошагово. Оказалось что если сначала загружать данные в OCR1AL то число в OCR1AH почему то не загружается.
В связи с этим вопрос : это баг или фича и почему студия этого не учитывает?
_________________ не выдрючивайся, да не выдрючен будешь ...
это баг или фича и почему студия этого не учитывает?
Порядок записи и чтения 16-разрядных регистров объявлен DS на AVR To do a 16-bit write, the High byte must be written before the Low byte. For a 16-bit read, the Low byte must be read before the High byte. Почему студия не учитывает этот факт. Фиг его знает.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения