реклама на сайте
подробности

 
 
> Прерывание переполнения MEGA8535
karavaev
сообщение Oct 10 2005, 14:49
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 10-10-05
Пользователь №: 9 465



Уважаемые знатоки !
Разрешите задать ламерский вопрос. Мне надо генерить прерывание переполнения 8-битного таймера 0 на ATmega8535. Использую пару WinAVR( версия 20030913)+VMLab 3.11 текст такой:

SIGNAL(SIG_OVERFLOW0) {
TCNT0=56;

PORTB=!PORTB;
}

int main(void) {
cli();

DDRB=0xFF;
PORTB=0x00;

DDRC=0xFF;
PORTC=0xAA;

TCNT0=56;
TIMSK=0x01; // Разрешено только прерывание переполнения
TCCR0=0x02; // Делитель системного такта на 8

sei();

while(1);

}

Модифицировал Fuses: CKSEL=0x0F CKOPT=0, чтобы 16 МГц кварц можно было поставить (пока тестирую с 6МГц)

В VMLab видно, что прерывание ни разу не вызывается, более того, как только таймер переполняется, в регистре TIFR устанавливается в 1 бит №1 (Output compare) вместо бита №0 (Переполнение) и в таком состоянии TIFR остается вечно, после зашивки в MEGA8535, естественно, железка PB0 не меняет.
Если в проекте ".PRJ" заменить контроллер .MICRO "ATmega8535" на .MICRO "AT90S8535" программа требуемые действия выполняет, прерывание с требуемой частотой генерится и после зашивки в 90S8535 устройство работает корректно.

Я раньше с MEGA-ми дела не имел, подозреваю, что дело в каких-то их особенностях.
Подскажите, пожалуйста, в чем может быть дело.

С уважением, Анатолий
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016