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

 
 
> Отстает секундомер, ATmega8
LexRoss
сообщение Oct 23 2010, 08:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202



Отстает секундомер на 2 минуты за полчаса. И в протеусе и в железе примерно так же. Резонатор керамический 1 МГц, ATmega8L. Компилятор WinAvr. Что не так?
Код
#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdlib.h>
#include <lcd_lib.h>
#include <lcd_lib.c>
#include <avr/signal.h>

unsigned int counter; // счетчик для секундомера: 488 прерываний = 1 секунда
unsigned char sec,minut,hour; // сек.,мин.,часы для секундомера
unsigned char c[5];

ISR(TIMER0_OVF_vect)
{
counter++;
if (counter==488)
{  
   Lcd_Goto(0,0);  
   Lcd_WriteData('t');
   Lcd_WriteData('i');
   Lcd_WriteData('m');
   Lcd_WriteData('e');
   Lcd_WriteData(' ');
   itoa(hour,c,10);
   if (hour<10)
   {
    Lcd_WriteData('0');
    Lcd_WriteData(c[0]);
   }
   else
   {
    Lcd_WriteData(c[0]);
    Lcd_WriteData(c[1]);
   }
   Lcd_WriteData(':');
   itoa(minut,c,10);
   if (minut<10)
   {
    Lcd_WriteData('0');
    Lcd_WriteData(c[0]);
   }
   else
   {
    Lcd_WriteData(c[0]);
    Lcd_WriteData(c[1]);
   }
   Lcd_WriteData(':');
   itoa(sec,c,10);
   if (sec<10)
   {
    Lcd_WriteData('0');
    Lcd_WriteData(c[0]);
   }
   else
   {
    Lcd_WriteData(c[0]);
    Lcd_WriteData(c[1]);
   }
   Lcd_WriteData(' ');
   Lcd_WriteData(' ');
   Lcd_WriteData(' ');
    
  counter=0;                
  sec++;
  
   if (sec==60)
   {
    sec=0;
    minut++;
    if (minut==60)
    {
     minut=0;
       hour++;
    }
   }
}
}


int main (void) {
   Lcd_Init();
   DDRD = 0b00000001;
   sei();
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
TCCR0=0x02;
TCNT0=0x00;
TIMSK=0b00000001; // разреш. прерыв. timer0
while (1)
{
}
  return 0;
}

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- LexRoss   Отстает секундомер   Oct 23 2010, 08:34
- - kolobok0   Цитата(LexRoss @ Oct 23 2010, 12:34) Отст...   Oct 23 2010, 08:43
- - Палыч   Цитата(LexRoss @ Oct 23 2010, 12:34) Что ...   Oct 23 2010, 08:44
- - Vasily_   Секундомер на керамическом резонаторе? забавно...   Oct 23 2010, 08:53
- - DpInRock   И когда вынесите процедуру вывода на экран наружу,...   Oct 23 2010, 08:56
- - LexRoss   Вынес вывод на экран в main. Вроде лучше стало. Ке...   Oct 23 2010, 09:17
|- - kolobok0   Цитата(LexRoss @ Oct 23 2010, 13:17) ..Те...   Oct 23 2010, 10:01
|- - chief_olimp   Цитата(LexRoss @ Oct 23 2010, 12:17) Пита...   Oct 23 2010, 13:08
- - DpInRock   Ну, вообще-то математика доступная. Резонатор 0.5%...   Oct 23 2010, 10:00
|- - demiurg_spb   Цитата(DpInRock @ Oct 23 2010, 14:00) А п...   Oct 23 2010, 11:09
- - ILYAUL   Почему бы просто не задействоать асинхронный тайме...   Oct 23 2010, 13:56
|- - LexRoss   Цитата(ILYAUL @ Oct 23 2010, 17:56) Почем...   Oct 23 2010, 14:41
|- - ILYAUL   Цитата(LexRoss @ Oct 23 2010, 18:41) 32,7...   Oct 23 2010, 15:07
|- - LexRoss   Цитата(ILYAUL @ Oct 23 2010, 19:07) Не по...   Oct 23 2010, 15:48
- - Xenia   Ваши часы шли бы точнее, если бы вы нормально запр...   Oct 23 2010, 15:01
- - ukpyr   сначала измените программу - в прерывании таймера ...   Oct 23 2010, 15:02
- - ILYAUL   Посчитал: Только 16 битный таймер при прескалере...   Oct 23 2010, 16:29
- - DpInRock   Поставьте кварц - ЛЮБОЙ - и не канифольте себе моз...   Oct 23 2010, 16:32
- - ukpyr   ЦитатаНо для велосекундомера - это совершенно не к...   Oct 23 2010, 16:46
- - DpInRock   Вы тоже мозг не канифольте, а посмотрите на стабил...   Oct 23 2010, 16:54
- - LexRoss   Кварц есть только на 4Мгц, причем потребление с ни...   Oct 23 2010, 17:33
- - Клим   Цитата(LexRoss @ Oct 23 2010, 20:33) Квар...   Oct 23 2010, 17:59


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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 10:37
Рейтинг@Mail.ru


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