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

 
 
> Есть код для CodeVision. Хочу его адаптировать под WinAVR
-=Женек=-
сообщение Sep 18 2006, 09:44
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Вот простенькая программка, работающая в CodeVision:

Код
unsigned char h=0,m=0,sec=0;

void timer_init(void)
{
// timer
TCNT1H=TCNT1L=0;
TCCR1A=0;
TCCR1B=12; // cl/256  1000000/256=15625
// 15625/5=3125
OCR1A=3125;
TIMSK=16;
asm("sei");
}    

char get_time()
{
   sec++;  

    if(sec==60)  {sec=0;m++;}
    if(m==60)  {m=0;h++;}
    if(h==23)  {h=0;}
}

interrupt[TIM1_COMPA] comp(void) {get_time();}  // на эту строку ругается компилятор.


Посмотрел я в хидеры - в CodeVision TIM1_COMPA равняется 8. В WinAVR восьмерке соответствует SIG_OUTPUT_COMPARE1B. По моему что-то не то...

В общем программка должна каждую секунду что-нибудь делать а точнее, запускать get_time().

Помогите, плз.
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 34)
singlskv
сообщение Sep 18 2006, 17:59
Сообщение #31


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(-=Женек=- @ Sep 18 2006, 21:25) *
А функция _delay_ms() из delay.h как должна испльзоваться? в хидере установлена частота 1 МГц. Менять хидер под новый кварц? Кстати #define F_CPU 16000000UL в фале программы не помогает.

-=Женек=-
Убедительная просьба к Вам,
в следующий раз задавая вопрос пишите сразу же примерно так:
чип ATmega32
clock 16МГц
компилятор WinAVR-XXXXXXXX
далее суть проблемы...

Иначе слишком много времени тратится зря sad.gif
Go to the top of the page
 
+Quote Post
Shurmas
сообщение Sep 18 2006, 18:20
Сообщение #32


Местный
***

Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332



ИМХО оптимальный вариант из проги востановить алгоритм и записать его уже в CVAVR.
Go to the top of the page
 
+Quote Post
aesok
сообщение Sep 18 2006, 18:35
Сообщение #33


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(-=Женек=- @ Sep 18 2006, 21:25) *
А функция _delay_ms() из delay.h как должна испльзоваться? в хидере установлена частота 1 МГц. Менять хидер под новый кварц? Кстати #define F_CPU 16000000UL в фале программы не помогает.


Я не использовал _delay_ms[us](). Но если F_CPU задаеться в Makefile то та установка будет иметь более высокий приоритет. Посмотрите чему равна F_CPU в Makefile и задайте правильное значение.

Анатолий.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 18 2006, 19:11
Сообщение #34


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(-=Женек=- @ Sep 18 2006, 20:39) *
Сейчас у меня вот что:
Код
OCR1A = 0xf424
TCNT1 = 0x0bdc;
TCCR1A = 0x00;
TCCR1B = 0x04;
TIMSK=16;

сгенерировал при помощи AtmanAvr

неправильно !
должно быть:
Код
OCR1A = 0xf423
TCNT1 = 0;
TCCR1A = 0x00;
TCCR1B = 0x04;
TIMSK=16;
Go to the top of the page
 
+Quote Post
-=Женек=-
сообщение Sep 18 2006, 19:33
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Я уже сделал, как мне советовали.

Код
TCNT1H=TCNT1L=0;
  OCR1A=15624;
  TCCR1A=0;
  TCCR1B=(1<<WGM12)|(1<<CS12)|(1<<CS10);  
  TIMSK=(1<<OCIE1A);


ТОлько делитель поменял, учитывая что частота 16 МГц
Go to the top of the page
 
+Quote Post

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

 


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


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