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

 
 
> Timer1 в ATmega128 режим сравнения, в AVR Studia 4 непонятная путаница с адрессами регистров
Ph. Anatoliy
сообщение Nov 7 2009, 15:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-12-07
Из: г. Таганрог, Ростовская обл.
Пользователь №: 33 310



Написал следующий код. При пошаговом прохождении в AVR studia 4 значения загружаются совершенно не в те регистры.

Пдскажите пожалуйста, может у кого есть кусочек кода как на 128 меге настроить таймер 1 на срабатывание прерываения COMPA и COMPB при этом при срабатывании COMPB сбрасывать таймер счетчик в 0.

Код
#include <avr/io.h>
#include <avr/interrupt.h>

ISR(TIMER3_COMPA_vect)
{
  
    PORTF = 0x01;
}

ISR(TIMER3_COMPB_vect)
{
  
    PORTF = 0x03;
}


int main (void)
{
    unsigned char sreg;

    DDRF = 0xff;
    PORTF = 0x00;

    OCR3AH=0x05;
    OCR3AL=0x03;
    
    TCCR3A=0xA0;
    TCCR3B=0x02;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x18;
    ETIMSK=0x00;

    sei();
    
    while (1)
    {
    }

    return 0;
}
Причина редактирования: Оформление цитаты исходника.

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
chief_olimp
сообщение Nov 8 2009, 08:18
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344



SIGNAL уже давно устарел, хотя и работает. И говоря про режим сравнения по А или В я использую строку вида
Код
ISR(TIMER3_COMPB_vect)
{
  TCCR3В += 0xA0;
}
И не нужно сам таймер обнулять. Он просто будет считать дальше.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 8 2009, 17:09
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(chief_olimp @ Nov 8 2009, 10:18) *
TCCR3В += 0xA0;

И что бы это значило?
Насилуете ICNC и пишете "1" в reserved bit?

• Bit 5 – Reserved Bit
This bit is reserved for future use. For ensuring compatibility with future devices, this bit
must be written to zero when TCCRnB is written.


Цитата
И не нужно сам таймер обнулять. Он просто будет считать дальше.

Если не видите разницы в частоте между счетом до 500 и счетом до 65535... то лучше ничего не советуйте.
Go to the top of the page
 
+Quote Post
chief_olimp
сообщение Nov 8 2009, 19:48
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344



Цитата(defunct @ Nov 8 2009, 21:09) *
И что бы это значило?

Ну погарячился чего уж там laughing.gif , бывает wacko.gif . А вы не подумали и не исправили smile3009.gif . Я имел ввиду строку вида
Код
OCR3B += 0xA0;
т.е. при каждом обращении будет увеличиваться регистр сравнения. А счетчик будет считать по кругу. Таким образом довольно легко можно использовать все три прерывания сравнения. yeah.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 8 2009, 23:37
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(chief_olimp @ Nov 8 2009, 21:48) *
А вы не подумали и не исправили smile3009.gif . Я имел ввиду строку вида
Код
OCR3B += 0xA0;

Точно smile.gif
Cложновато было представить, что TCCRxB там в результате опечатки появился.

Цитата
т.е. при каждом обращении будет увеличиваться регистр сравнения.

Да, это тоже вариант
Go to the top of the page
 
+Quote Post



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

 


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


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