Страница 1 из 1

таймер1 в atmega8

Добавлено: Вт мар 22, 2011 11:40:47
vovik15
здравствуйте,вот пытаюсь настроить прерывание по переполнению таймера 1 для управления динамической индикацией
пишу в CVAVR все сделал как сказано в датащите,но компилятор почему то ругаеться на регистры ,и выдает ошибки

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

void podgot (void) //подготовка МК
{
PORTB=0x00; //чистим порт
DDRB=0xFF; //все линии на выход
PORTC=0x00; //чистим порт
DDRC=0xFF; //все линии на выход
PORTD=0x00; //чистим порт
DDRD=0xFF; //все линии на выход
// прерывания таймера 1
TOIE1 = 1; //разрешаем прерывание по переполнению Т1
COM1A = 0;  //отключаем линии для перрывания
COM1B = 0;
//тактирование Т0
CS12 = 0; CS11 = 0; CS10 = 1; //СLK
//CS12 = 0; CS11 = 1; CS10 = 0; //СLK /8
//CS12 = 0; CS11 = 1; CS10 = 1; //СLK /64
//CS12 = 1; CS11 = 0; CS10 = 0; //СLK /256
//CS12 = 1; CS11 = 0; CS10 = 1; //СLK /1024
#asm("sei"); //разрешаем прерывания глобально
}


а так я организовал обработчик прерывания

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

 //прерывания по переполнению таймера Т1
  interrupt [TIM1_OVF] void timer1 (void)
  {
       PORTB = 0x00;
        delay_us(10);
        PORTB = 0xFF;
        delay_us(10);
  }


все ли верно я сделал? спасибо!

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 12:13:45
ARV
вы сделали все неверно.
для начала внимательно прочтите и вникните в то, чем вас обругал компилятор.
затем разберитесь с тем, что такое CS11 и т.п., при этом заглядывая в даташит.
после этого при помощи поиска по форуму разберитесь, почему задержки в обработчике прерывания - это очень плохо.

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 14:40:20
ksv82
Жуть! Даж не знаю что сказать на это....

Напишите хотябы одну программу на асме, чтобы лучше понимать как работает контроллер. Ну или хотябы прочитайте обучалку по программированию которая лежит тут http://radiokot.ru/start/mcu_fpga/avr/ . А то, судя по вашему коду понимание работы контроллера отсутствует напрочь.

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 14:42:40
vovik15
ошибаетесь. я понимаю как работает контроллер,просто я к пикам привык,там каждый регистр можно изменять своими битами
а в авр так нельзя делать,только присваиванием.
я уже с этим делом разобрался,спасибо за ответы

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 14:50:27
Psych
Вы наверное на пике под ассемблером писали, а тут на си пишите.

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 14:51:21
vovik15
на си я писал :)

Re: таймер1 в atmega8

Добавлено: Вт мар 22, 2011 15:38:35
ChipKiller
vovik15 писал(а):я понимаю как работает контроллер,просто я к пикам привык,там каждый регистр можно изменять своими битами а в авр так нельзя делать,только присваиванием.
у AVR тоже можно, только точно не так CS12 = 0; CS11 = 0; CS10 = 1; //СLK :)