Mam problem aby zmienić taktowanie timera z wew. generatora atmegi na zew. kwarc zegarkowy (timer 1). Po podłączeniu kwarcu do wejść TOSC1 i TOSC2, ustawiłem flagę CS12 i zmieniłem liczbę zliczanych cykli. Po tych zmianach nic się nie dzieje (nie są zliczane sekundy itd.). Co jeszcze trzeba zrobić? Szukałem, ale niby nic więcej nie trzeba było ustawiać
Edit: Z wykorzystaniem timera2, zegarek działa z kwarcem 32768Hz przy przerwaniu (przepełnienie). Pomimo tego chciałbym wiedzieć, co zrobiłem źle na timerze 1. W przyszłości może będę chciał wykorzystać przerwania CTC.
Poniżej kod mojego programu. Na wyświetlanie LCD nie zwracajcie większej uwagi, zrobiłem to na szybkiego
Ogólnie zaczynam robić mój pierwszy projekt. Zegar + czujnik temperatury (do tego sterowanie urządzeniami). Zaznaczam, że jestem początkujacy
Jeśli macie jakieś rady co do zegara to piszcie śmiało.
Edit: Z wykorzystaniem timera2, zegarek działa z kwarcem 32768Hz przy przerwaniu (przepełnienie). Pomimo tego chciałbym wiedzieć, co zrobiłem źle na timerze 1. W przyszłości może będę chciał wykorzystać przerwania CTC.
Poniżej kod mojego programu. Na wyświetlanie LCD nie zwracajcie większej uwagi, zrobiłem to na szybkiego
#define F_CPU 1000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
#include <util/delay.h>
#include <hd44780.c>
/* zmienne globalne - sekundy, minuty, godziny */
int second=0;
int min=0;
int hour=0;
/* przerwanie dla timera1, zliczanie czasu */
ISR(TIMER1_COMPA_vect)
{
if(++second==60)
{
second=0;
if (++min==60)
{
min=0;
if(++hour==24)
hour=0;
}
}
}
int main(void)
{
TCCR1B |= (1 << WGM12); /* ustawia timer w tryb CTC */
OCR1A=32768; /* zlicza cykle zagara */
TCCR1B |= ((1 << CS10) | (1 << CS11) | (1 << CS12)); /* ustawia timer na pracę z zew. kwarcem */
TIMSK |= (1 << OCIE1A); /* zezwolenie na przerwania dla CTC */
sei(); /* zezwolenie globalne na przerwania */
LCD_Initalize();
LCD_Clear();
/* Wyśietlanie czasu na LCD, na razie tylko sekundy*/
while(1)
{
char t[2];
itoa(second,t,10);
LCD_GoTo(0,0);
LCD_WriteText(t);
}
}Ogólnie zaczynam robić mój pierwszy projekt. Zegar + czujnik temperatury (do tego sterowanie urządzeniami). Zaznaczam, że jestem początkujacy