Witam
Od paru dni próbuję zaprząc do pracy czujniki DS18B20 na przykładzie z książki "Mikrokontrolery AVR Język C Podstawy programowania"
Swój termometr chcę postawić na Atmedze 8 a nie jak w przykładzie 32.
Tu pierwszy problem - zmiana ustawień timera (to mój pierwszy raz
)
Z pomocą książki i Noty Atmegi Ustawiłem to tak:
Kod:
/* ustawienie TIMER2 dla F_CPU=1,000000 MHz */
TCCR2 |= (1<<WGM21); /* tryb CTC */
TCCR2 |= (1<<CS22)|(1<<CS21); /* preskaler = 256 */
OCR2 = 39; /* dodatkowy podział przez 39 (rej. przepełnienia) */
TIMSK |= (1<<OCIE2); /* zezwolenie na przerwanie CompareMatch */
/* przerwanie wykonywane z częstotliwością ok 10ms (100 razy na sekundę) */
/* do naszych celów nie musi być to bardzo dokładne 10ms */
tutaj przykład z książki:
Kod:
/* ustawienie TIMER0 dla F_CPU=11,0592MHz */
TCCR0 |= (1<<WGM01); /* tryb CTC */
TCCR0 |= (1<<CS02)|(1<<CS00); /* preskaler = 1024 */
OCR0 = 108; /* dodatkowy podział przez 108 (rej. przepełnienia) */
TIMSK |= (1<<OCIE0); /* zezwolenie na przerwanie CompareMatch */
/* przerwanie wykonywane z częstotliwością ok 10ms (100 razy na sekundę) */
/* do naszych celów nie musi być to bardzo dokładne 10ms */
W pliku lcd44780.h zmieniłem konfigurację pinów i adresy wierszy:
Kod:
// definicje adresów w DDRAM dla różnych wyświetlaczy
// inne są w wyświetlaczach 2wierszowych i w 4wierszowych
#if ( (LCD_Y == 4) && (LCD_X == 16) )
#define LCD_LINE1 0x00 // adres 1 znaku 1 wiersza
#define LCD_LINE2 0x28 // adres 1 znaku 2 wiersza
#define LCD_LINE3 0x14 // adres 1 znaku 3 wiersza
#define LCD_LINE4 0x54 // adres 1 znaku 4 wiersza
#else
#define LCD_LINE1 0x00 // adres 1 znaku 1 wiersza
#define LCD_LINE2 0x40 // adres 1 znaku 2 wiersza
#define LCD_LINE3 0x14 // adres 1 znaku 3 wiersza Tutaj
#define LCD_LINE4 0x54 // adres 1 znaku 4 wiersza i tu
#endif
Używam wyświetlacza WM-C2004M 4x20
(wyświetlacz podpięty prawidłowo - sprawdzałem z inną biblioteką)
Do pinu PD0 podpięty jest jeden czujnik z rezystorem 4.7k (nie wiem jak podłączyć drugi
Z kolejnym rezystorem? )
Program kompiluje sie z jednym warningiem:
ain.c:123: warning: 'TIMER0_COMP_vect' appears to be a misspelled signal handler
Niestety na wyświetlaczu nic się nie pojawia
Próbowałem też wyświetlić napis tuż po inicjalizacji wyświetlacza, niestety efekt ten sam - 0
Proszę szanownych kolegów o pomoc, ja już nie wiem, co może być nie tak.
Jeśli ktoś chce, wstawię wszystkie pliki do przejrzenia.
------------------------ [ Dodano po: 14 minutach ]Działa !!!
W pliku lcd44780.h zamiast #define LCD_D7PORT D miałem PORT B
Temperatura pojawia się na chwile co ok sekundę i znika.
Jak podłącza się drugi czujnik ??