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

[ATmega8][C] LCD HD44780 - inicjalizacja poprawna, ale nie wyświetla znaków

Vister26 08 Wrz 2014 18:27 2004 9
  • #1 13944658
    Vister26
    Poziom 8  
    Witam,
    Bez zbędnych formalności przejdę do opisu:
    Prosty schemat połączeń. Podpiąłem: RS-PD3, E-PD4, D4-PD5, D5-PD6, D6-PD7, D7-PD0.

    Korzystam z bioblioteki radzia(4-bitowy tryb pracy bez odczytu flagi zajętości).

    Oto mój kod w "main.c"
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    I moja konfiguracja "HD44780.h"
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jedyne co mi się wyświetla to rząd białych prostokątów w pierwszym rzędzie. Inicjalizacja zachodzi poprawnie(znika rząd prostokątów, następnie zaczynają bardzo słabo świecić dwa rzędy). Nie wiem czy mam włączony JTAG, fusebity są ustawione na low-E1 i high-D9.
  • #2 13945491
    Konto nie istnieje
    Poziom 1  
  • #3 13946164
    tmf
    VIP Zasłużony dla elektroda
    A ta biblioteka pozwala, żeby linie danych nie zajmowały kolejnych linii IO portu? Bo teraz masz DB4-DB6 na PD5-7, a DB7 na PD0. Dziwne by było gdyby to było poprawne.
  • #4 13946258
    Konto nie istnieje
    Poziom 1  
  • #5 13946354
    tronics
    Poziom 38  
    @tmf - pozwala i jest to poprawne (w znaczeniu, że ma prawo działać, nie, że to dobra praktyka). Osobiście (jak chyba atom również) podejrzewam problemy z timingami spowodowane złą deklaracją zegara w stosunku do tego jak jest rzeczywiście. Są wyświetlacze bardzo pod tym kątem kapryśne.
  • #6 13947045
    Vister26
    Poziom 8  
    Zegar mam zdefiniowany na 1MHz(jest definicja w programie i w fusebitach ustawiony), co do kolejności pinów, nie sprawdzałem. Wiem tylko że podobny program (już z nieskończoną pętlą) na ATmega16 działa idealnie.
    U was na ATmega8 działa bez zarzutów? Może to wina tego uC? To takie moje luźne przypuszczenia ;)

    atom1477 napisał:
    Jaką masz zadeklarowaną częstotliwość taktowania procesora?

    chodzi o dyrektywę define? Nie to żebym się czepiał, ale w C to się nazywa definicją. No chyba że o czymś nie wiem :|
  • #7 13947069
    dondu
    Moderator na urlopie...
    Vister26 napisał:
    Zegar mam zdefiniowany na 1MHz(jest deklaracja w programie ...

    I pierwsza możliwa przyczyna ponieważ: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html


    Vister26 napisał:
    ... co do kolejności pinów, nie sprawdzałem.

    Biblioteki Radosława Kwietnia są tak napisane, że nie ma to znaczenia.


    Vister26 napisał:
    Wiem tylko że podobny program (już z nieskończoną pętlą) na ATmega16 działa idealnie.

    Choć brak pętli to błąd, jednak nie w przypadku tej biblioteki - powinno działać OK ale mikrokontroler będzie stał w pętli (którą doda kompilator) z wyłączonymi przerwaniami.

    Vister26 napisał:
    U was na ATmega8 działa bez zarzutów? Może to wina tego uC? To takie moje luźne przypuszczenia ;)

    I dobrze, że są tylko przypuszczenia - najpierw szukaj błędów w swoim zakresie :)
  • #9 13947248
    Konto nie istnieje
    Poziom 1  
  • #10 13957419
    Vister26
    Poziom 8  
    Dzięki wszystkim za pomoc! Znalazłem dzisiaj trochę czasu. Rozmontowałem jeszcze raz cały układ, napisałem od nowa, skonfigurowałem i skompilowałem cały program. Zmontowałem, podłączyłem i działa! Najprawdopodobniej było coś nie tak z zegarem, choć nie dam sobie ręki uciąć.
    Temat zamykam :D
REKLAMA