Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Програмирование таймера.


Автор: Mura-vey 5.3.2005, 18:14
Скачал апликейшен ноутс AVR130 про програмирование таймера. Там приводится программа


.include "m8535def.inc"
.cseg
.org 0 ;
rjmp init ;
rjmp no_vec
rjmp PRER
rjmp no_vec

init:


LDI R16,0X02
OUT TCCR0,R16
LDI R16,0X02
OUT TIMSK,R16

ldi r16,(1<<CS02)|(1<<CS00)
out TCCR0,r16
ldi r16,1<<TOV0
out TIFR,R16
ldi R16,1<<TOIE0
out TIMSK,r16


LDI R16,0XFF
out DDRA,r16
out DDRB,r16
out DDRC,r16


sei
; ldi r16,0xFE
; out tcnt0,r16
main:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
rjmp main
PRER:


PUSH R16
IN R16,SREG
PUSH R16
IN R16,PORTB
COM R16
OUT PORTB,R16
OUT PORTA,R16
POP R16
out SREG,r16
POP R16
RETI
no_vec:
RETI


.EXIT

Прогаю под ATmega8535. При пересчёте на частоту 1 МГц светики должны моргать с частотой 1,5-2 Гц. Но ничего не работает вообще. Может кто объяснит в чём дело?

Автор: bzx 5.3.2005, 18:29
У Вас не включены глобальные прерывания. Бит I регистра SREG должен быть =1.

Автор: Mura-vey 5.3.2005, 18:47
bzx Спасибо! А поточнее нельзя, где и какую команду вставить. Заранее благодарен!

Автор: bzx 5.3.2005, 18:51
Для Вас Выставить бит I в регистре SREG проблемотично?

Например, можно сделать так
LDI R16,0X80
OUT SREG,R16
и поставить до main

Автор: Mura-vey 5.3.2005, 19:08
Всёравно не работает. smile Толька что всё написал, зашил. Нефига - контролер молчит. Думал с портами проблемы. Поставил начальное значение порта В - FF. Светики нагло горят и не мограют. smile
Добавлено @ 19:10
smile

Автор: PILOT 5.3.2005, 23:56
А откуда клоки зафьюзил?

СУВ.

Автор: Mura-vey 6.3.2005, 14:36
PILOT По русски нельзя? Я русский человек.
Добавлено @ 14:38
bzx Вообще я включил глобальные прерывания (чё-то я стрормозил) командой sei. Зачем так геморно их включать?

Автор: PILOT 7.3.2005, 21:17
Что есть источник тактовых импульсов?

СУВ.

Автор: bzx 9.3.2005, 14:08
1. Убедитесь в симуляторе, что Ваша программа работает, т.е. прерывания происходят и, самое главное, изменяются состояния портов. Если с этим всё ok, далее
2. проверьте конфигурацию (биты конфигурации) mcu
3. питание.
4. сигнал сброса
5. генерация кварца (проверить с помощью осциллографа)

Автор: PILOT 10.3.2005, 00:40
Кста, ты уверен что ты пральна частоты рассчитал? smile
А если серьезно, то проверь таблицу прерываний... это раз.
Во-вторых, так бездумно копировать код не стОит! Зачем ты повторяешь код (инициализация таймеров), зачем столько нопов?
Разберись с архитектурой, а? (без обид) Готов ответить на любые вопросы.

СУВ.

Автор: jimmi 29.3.2005, 10:28
smile

Автор: PILOT 29.3.2005, 19:19
Если серьезно, то я бы руки оторвал тому кто пишет AN для AVR.
Жуть...

СУВ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)