Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATmega8] - Ekran PCD8544 (Nokia 5110) i ATmega8

Matee1254 21 May 2014 00:44 5973 6
  • #1
    Matee1254
    Level 10  
    Witam

    Mam problem nie do przejścia, znalazłem na internecie kod do obsługi właśnie tego modelu ekranu, standardowo pisany był pod ATmega32, lecz pod ATmega8 również ma działać. Rozpocząłem naukę poruszania się po Eclipse, wcześniej pracowałem na "Programmers Notepad [WinAVR]"

    W czym problem? Opinie o tym kodzie są dobre, wiele osób pisało że działa, więc błąd leży po mojej stronie. Aby ułatwić znalezienie problemu, umieszczę skrypty na stronie wraz z podaniem źródła.

    main.c
    Code: c
    Log in, to see the code


    pcd8544.c
    Code: c
    Log in, to see the code



    pcd8544.h
    Code: c
    Log in, to see the code


    Dodałem do main.c pętle z diodą led, aby monitorować momenty zmiany wyświetlacza. Dioda reaguje, więc ATmega otrzymuje kod źródłowy.
    Dodam również, że ekran jest sprawny, działa na innym projekcie.

    Podłączenie Pinów
    [ATmega8] - Ekran PCD8544 (Nokia 5110) i ATmega8

    Konfiguracja pinów w bibliotece
    Code: c
    Log in, to see the code



    Źródło biblioteki:
    LCD Nokia – część 1
  • Helpful post
    #2
    Badmaneq
    Level 23  
    Pytaj na forum.atnel.pl, autor tego kodu jest tam bardzo aktywny.
    BTW. Jakim napięciem zasilasz ATmega8 ?
  • #3
    Matee1254
    Level 10  
    Dobrze, zaglądnę tam :)

    Jeśli problem rozwiąże, napiszę tutaj jak to zrobiłem, komuś może się przydać :)

    A co do twojego pytania, wymagania podświetlenia Led ekranu zmusiło mnie to zmiany napięcia z 5V na 3.3V, całość jest zasilana tym napięciem.
  • Helpful post
    #4
    Badmaneq
    Level 23  
    Jeżeli podpiąłeś wyświetlacz kiedy mikrokontroler był zasilany 5 V mogłeś uszkodzić wyświetlacz !
    Sprawdź czy nie pomyliłeś MOSI z MISIO.
  • #5
    Matee1254
    Level 10  
    Badmaneq wrote:
    Jeżeli podpiąłeś wyświetlacz kiedy mikrokontroler był zasilany 5 V mogłeś uszkodzić wyświetlacz !
    Sprawdź czy nie pomyliłeś MOSI z MISIO.


    Ekran sprawny, ponieważ nawet w tej chwili mogę uruchomić inny kod który testuje ekran, wszystko działa sprawnie. Jedynie problemem jest fakt, że ten program to 2 pliki, kompilacja w cmd i plik .hex dlatego muszę uruchomić ten kod ponieważ chce przelecieć cały kod aby zrozumieć działanie i jakoś ruszyć z tym fantem ;p
    A co do MOSI i MISO, mój Atmega pod PB3 ma MOSI, pod PB4 MISO, podłączenie jest dobrze.

    [ATmega8] - Ekran PCD8544 (Nokia 5110) i ATmega8


    EDIT:
    Posiedziałem, poczytałem i odkryłem, bardzo dziwna sprawa ale ważne że działa.
    Zmieniłem port PB4 na PB5, MISO na SCK, dziwne jest to że inny program działa na ustawieniu PB0-PB4, a tu zamiast PB4 to PB5
  • Helpful post
    #6
    Badmaneq
    Level 23  
    Matee1254 wrote:
    Posiedziałem, poczytałem i odkryłem, bardzo dziwna sprawa ale ważne że działa.
    Zmieniłem port PB4 na PB5, MISO na SCK, dziwne jest to że inny program działa na ustawieniu PB0-PB4, a tu zamiast PB4 to PB5


    Nie ma w tym nic dziwnego ! Spójrz na obrazek, który sam dołączyłeś SCK jest na PB5 natomiast makro
    Code:
    #define SPI_CLK_PIN                PB4  // CLK
    ustawia sygnał zegra na pin PB4.

    Przyjrzyj się funkcji wysyłającej dane do wyświetlacza
    Code: c
    Log in, to see the code

    korzysta ze sprzętowego SPI, więc musowo SCK musi być na PB5 a MOSI PB3.
    Podejrzewam, że inny kod Ci działał porawnie ponieważ korzystał z programowego SPI, gdzie podłączenie pinów jest dowolne uzależnione tylko definicjami SPI_MOSI_PIN, SPI_CLK_PIN.
  • #7
    Matee1254
    Level 10  
    Wyjaśnienie wymagane do zamknięcia tematu:
    Zmieniłem port PB4 na PB5, MISO na SCK. Powód braku reakcji opisuje użytkownik Badmaneq.

    Badmaneq wrote:
    Matee1254 wrote:
    Posiedziałem, poczytałem i odkryłem, bardzo dziwna sprawa ale ważne że działa.
    Zmieniłem port PB4 na PB5, MISO na SCK, dziwne jest to że inny program działa na ustawieniu PB0-PB4, a tu zamiast PB4 to PB5


    Nie ma w tym nic dziwnego ! Spójrz na obrazek, który sam dołączyłeś SCK jest na PB5 natomiast makro
    Code:
    #define SPI_CLK_PIN                PB4  // CLK
    ustawia sygnał zegra na pin PB4.

    Przyjrzyj się funkcji wysyłającej dane do wyświetlacza
    Code: c
    Log in, to see the code

    korzysta ze sprzętowego SPI, więc musowo SCK musi być na PB5 a MOSI PB3.
    Podejrzewam, że inny kod Ci działał porawnie ponieważ korzystał z programowego SPI, gdzie podłączenie pinów jest dowolne uzależnione tylko definicjami SPI_MOSI_PIN, SPI_CLK_PIN.


    Oczywiście dla użytkowników punkty "Pomógł", wielkie dzięki za zainteresowanie oraz objaśnienie wszystkich niewiadomych. Przepraszam za długi czas odpowiedzi, po uruchomieniu wyświetlacza "znikłem z tego świata" bawiąc się kodem :)

    Ale wróciłem do rzeczywistości, płytka stykowa idzie do szuflady na 3 miesiące (wyjazd za granice), lecz gdzie praktyki ćwiczyć nie można, teorią mogę zastąpić.
    Mam 12 tygodni na przeczytanie "Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji" autora Tomasz Francuz, ze swojej strony dodam, książka ma bardzo dużo dobrych opinii więc polecam nowym użytkownikom mikrokontrolerów i programatorów :)

    Pozdrawiam
    Mateusz Bechta