Witam, mój problem polega na tym, że chcę aby przerwanie zewnętrzne powodowało aby na wyświetlaczu LCD (2x16) została wyświetlana pewna dana. Niestety nie działa to poprawnie ponieważ wyświetlacz sprawia wrażenie jakby jakieś znaki były przemietane po nim, niestety częstotliwość jest na tyle duża, że jest to totalnie nieczytelne, nie mówiąc o tym, że chciałbym aby dany znak był w określonym stałym miejscu, a nie zapierdzielał po wszystkich możliwych komórkach.
Oto fragment kodu przerwania:
oraz konfiguracja przerwania
Zastanawiające jest to, że gdy kod, dotyczący wyświetlacza LCD wstawię do środka funkcji main, a nie do przerwania, wtedy wyświetlacz wyświetla znaki poprawnie
Mógłby ktoś mi wyjaśnić dlaczego tak jest, i co mam zrobić, żeby było dobrze
Dzięki z góry
Oto fragment kodu przerwania:
Cytat:
ISR (INT1_vect)
{
LCDinit();
LCDcursorOFF();
LCDGotoXY(0,1);
LCDstring(char1,1);
}
oraz konfiguracja przerwania
Cytat:
GICR = _BV(INT1);
MCUCR = _BV(ISC11);
Zastanawiające jest to, że gdy kod, dotyczący wyświetlacza LCD wstawię do środka funkcji main, a nie do przerwania, wtedy wyświetlacz wyświetla znaki poprawnie
Cytat:
int main (void) {
LCDinit();
LCDcursorOFF();
LCDGotoXY(0,1);
LCDstring(char1,1);
Mógłby ktoś mi wyjaśnić dlaczego tak jest, i co mam zrobić, żeby było dobrze
Dzięki z góry