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

 
 
> Странности с таймером при переводе программы с классики на мегу
AvrLamer
сообщение Jul 23 2007, 16:21
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 23-07-07
Пользователь №: 29 318



Написал такую программу на ICC:

#include <io8515v.h>
#include <macros.h>

#pragma interrupt_handler Timer:4 Timer:5

static volatile unsigned long currentTimerTick;


static void Timer(void)
{
currentTimerTick++;
}


void InitTimer(void)
{
TCCR1B = 0x00; // Stop Timer1
TCNT1H = 0x00; // Clear Timer1
TCNT1L = 0x00;

OCR1AH = 0x01; // Set Compare A to 391
OCR1AL = 0x87; // ((4MHz/1024)/391) = 100ms timer

TIMSK = 0x40; // Compare A Interrupt enable

TCCR1B = 0x0D; // Start Timer1 with clk/1024

SREG |= 0x80;
}


currentTimerTick увеличивает своё значение каждые 1/10 сек. С её помошью я (этого кода здесь нет) каждые 3 сек включаю светодиод, потом через 3 сек выключаю, и так по кругу. Так вот интерестно что на классике AT90S8515 это 3 сек, а при прошивке программы в ATMEGA8515 в режиме совместимости с классикой 3 секунды превращаются в почти 12 сек. Тоесть каждых 12 сек светодиод вкл. откл. В обоих случаях используется один и тот же кварц на 4 Мгц. В чём может быть причина такого странного поведения? Ведь программа одна и та же.
Go to the top of the page
 
+Quote Post



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

 


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


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