logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

HD44780 miga kursor na 4 pozycji i na tym koniec

bisz 09 Mar 2010 16:46 1497 5
REKLAMA
  • #1 7805717
    bisz
    Poziom 18  
    Problem wygląda tak, że wyświetlacz już mi kiedyś działał i to z dwoma różnymi bibliotekami, obecnie nie wiedzieć czemu wygląda to tak. Wszystko poprawnie podłączone, sprawdzane 1000 razy. Program skompilowany, wgrany, zeby napisal poprostu 'marek'

    .



    
    
    #include <avr/io.h>
    
    #include "lcd.c"
    
    int main(void)
    {
        char buffer[7];
        int  num=134;
        unsigned char i;
    
        lcd_init(LCD_DISP_ON);
        lcd_command(LCD_HOME);
    
        for (;;) {
            lcd_clrscr();
            lcd_puts("marek");
    }
    }
    


    W efekcie mam po skompilowaniu kursor migający w miejscu 4-go znaku i na tym koniec, a po kazdej kompilacji przeskakuje co 4 znaki dalej.... Czy wyswietlacz sie jakos zablokował przez kombinowanie na kabelkach podczas jego pracy ? Jest to mozliwe? Trzeba coś w jego pamięci przestawić by znów zaczął ze mną gadać?
  • REKLAMA
  • #2 7805758
    szelus
    Poziom 34  
    No, ale jeżeli w pętli na przemian piszesz coś na wyświetlacz, a następnie natychmiast go czyścisz, to jak chcesz odczytać ten napis?
    Co znaczy, że po kompilacji przeskakuje dalej? Po ponownym załadowaniu programu?
    Zablokowanie wyświetlacza nie jest możliwe, ale możesz mieć np. błędy w inicjalizacji.
  • REKLAMA
  • #3 7805832
    bisz
    Poziom 18  
    Niezaleznie czy ta funkcja do czyszczenia jest czy nie, efekt taki sam. Gdy nie resetuje sprzetowo ukladu, w sensie nie odlaczam napiecia od calosci, tylko robie nowa kompilacje to kuror ten migajacy skacze kolejne 4 miejsca dalej.
  • REKLAMA
  • #4 7805901
    tos18
    Poziom 42  
    a może tak:
    
    #include <avr/io.h> 
    
    #include "lcd.c" 
    
    int main(void) 
    { 
        char buffer[7]; 
        int  num=134; 
        unsigned char i; 
    
        lcd_init(LCD_DISP_ON); 
        lcd_command(LCD_HOME); 
        lcd_clrscr(); 
        lcd_puts("marek"); 
        for (;;) { } 
    } 
    


    ewentualnie po każdej komendzie dotyczącej lcd daj opóźnienie 1,5ms
  • REKLAMA
  • #5 7805903
    szelus
    Poziom 34  
    To by znaczyło, że procedura inicjalizacji wyswietlacza nie jest wykonywana prawidłowo (tzn. zgodnie ze specyfikacją). Niestety, nie wszystkie biblioteki, dostępne w sieci, są tu OK.
    Podłączenie masz 4-ro, czy 8-mio bitowe?
  • #6 7805999
    bisz
    Poziom 18  
    Wyszło szydło z worka, okazało się żę 2 wyjścia z procka mam uwalone. Przelutowalem je na inny port i zadziałało, dzięki za dobre chęci!
REKLAMA