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

[atmega8][LCD][C][BASCOM] lcd nie działa prawidłowo

Tom1988p 21 Sty 2012 13:05 2379 6
REKLAMA
  • #1 10427458
    Tom1988p
    Poziom 16  
    Witam

    Mam taki problem. LCD na sterowniku hd44780 podłączony do atmega16 działa prawidłowo, przestaje po podłączeniu do atmega8. Obaw to czarna górna linia.
    Podłączony jest w taki sposób:
    RS - PC0
    RW - GND
    E - PC1
    DB4 - PC2
    DB5 - PC3
    DB6 - PC4
    DB7 - PC5

    Co znalazłem temat z podobnym problemem to że LCD trup.
    Z bezsilności zacząłem kilkukrotnie resetować atmegę i zauważyłem ze na krótką chwile pojawia się napis po czym znika i jest czarna linia. Kręcenie kontrastem nic nie daje.

    Programu nie podaje (wyświetla "witaj") bo czy to na C czy BASCOM efekt jest taki sam.

    Taka sytuacja powtarza mi się na dwóch m8 oraz na m88 (podłączane w wielu różnych kombinacjach, układy sprawne) na m16 działa prawidłowo (na wszystkich zegary wewnętrzne 1MHz).

    Za wszystkie sugestie będę wdzięczny.
  • REKLAMA
  • #2 10427580
    janbernat
    Poziom 38  
    Czy jest podłączone zasilanie do AVCC i kondensatory 100nF?
  • REKLAMA
  • #3 10427727
    Tom1988p
    Poziom 16  
    Tak.
  • REKLAMA
  • #4 10427759
    janbernat
    Poziom 38  
    Schemat, zdjęcia czy na stykówce czy na uruchomieniowej, jak sprawdziłeś że 1MHz- no wszystkie szczegóły- które będą ważne a które nie- to się zobaczy
  • REKLAMA
  • #5 10427841
    Tom1988p
    Poziom 16  
    schemat zasilania układu jest taki:
    [atmega8][LCD][C][BASCOM] lcd nie działa prawidłowo
    ze strony: Link

    Płytki mam modułowe. Atmega8 na jednej płytce LCD na innej połączone kabelkami.
    Szedłem tropem ze jak LCD działa prawidłowo na m16 to przeniosłem m8 na stykową i podłączyłem zasilanie w identyczny sposób jak na schemacie LCD wg. opisu wyżej. Efekt ten sam.

    Sprawdzałem w taki sposób:
    #define F_CPU 1000000L
    #include <avr/io.h>
    #include <util/delay.h>
    
    int main(void)
    {
      
      DDRB = 0x01;
      PORTB = 0x01;
      while(1)
      {
        PORTB ^= 0x01;
    	_delay_ms(1000);
      }
    }

    liczyłem ile jest zmian stanu diody podłączonej do PB0 i porównałem to ze stoperem, było 30 razy na 30s (15 zapaleń i 15 wygaśnięć diody).
  • Pomocny post
    #6 10427972
    janbernat
    Poziom 38  
    Teraz tak:
    Odłączamy zasilanie.
    Miernik ustawiamy na "przedzwanianie" przewodów (ma piszczeć po zwarciu końcówek sond)
    Sprawdzamy przejścia- między nóżką procesora a polem lutowniczym na LCD.
    Nie na wtyczkach, nie na kabelkach- ale na pinach procesora i na polach lutowniczych LCD.
    Zapisujemy na karteczce- co prawda jak napis się na moment pojawia to pewnie kolejność połączeń jest dobra.
    Podobnie sprawdzamy przewody zasilające i masę.
  • #7 10429294
    Tom1988p
    Poziom 16  
    Z miernikiem ciężka sprawa. Omomierz mam i nastawiony na 20k wyświetla 0.00. Badane jak wyżej podałeś.

    Jednak po podłączeniu na ostro kabelkami uC LCD działa prawidłowo.
    Dzięki za podpowiedz.
REKLAMA