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

Atmega32 i wyświetlacz Nokia6100 - czarny ekran, sprawdzony kod i połączenia

Andrzej_;) 09 Lip 2015 19:46 1137 17
  • #1 14835982
    Andrzej_;)
    Poziom 14  
    Witam,
    Wiecie Panowie męczę się już trzeci tydzień z uruchomieniem wyświetlacza od N6100 z atmegą32.

    1. Program jest dobry i przetestowany na atmega328P (działa)

    2. Wyświetlacz sprawy przetestowany wielokrotnie z powyższym mikrokontrolerem.

    3. Połączenie mikrokontrolera z wyświetlaczem przez dzielnik napięcia (z atmega328 działa)

    4. Uzbrojony w pozytywne wyniki powyższych eksperymentów zbudowałem nowy układ w oparciu o atmega32 z identycznym podłączeniem (wykorzystałem tylko inne piny procesora)

    5. Piny w programie zmienione na (PD0-data, PD1-/rst, PD3-clk, PD4-/cs), program skompilowany pod atmega32.

    6.Procesor pracuje na wewnętrznym rezonatorze 8MHz, JTAG wyłączony

    7. Efekt -> wyświetlacz nie rusza (mam czarny ekran)

    8. Porty sprawdzane (miganie diodami na wszystkich liniach i na każdej z osobna)

    9. Procesor działa bo po procedurze inicjalizacji wyświetlacza miga diodą w pętli.

    10. Problem potwierdzony a dwóch atmega32a i 32L

    Proszę o pomoc bo już nie wiem co jeszcze mogę sprawdzić i zrobić żeby to w końcu ruszyło... :(
  • Pomocny post
    #2 14836013
    excray
    Poziom 41  
    A na czym ma polegać nasza pomoc? Kodu nie załączyłeś więc nie ma co sprawdzać. Schematu też brak ew. zdjęć. Chyba pozostaje tylko wspólna modlitwa w intencji Twojego projektu. Ewentualnie możemy podtrzymywać Cię na duchu.
  • #3 14836382
    Andrzej_;)
    Poziom 14  
    Panowie, program jest standardowy, sprawdziłem ich kilka. Pobrałem kilka działających z różnych stron i wszystkie uruchomiłem na atmega328p z powodzeniem.

    Te same programy nie ruszają z atmega32 (tzn ruszają ale nie wyświetlają).
    Więc nie jest to problem softwarowy.

    Pozostaje więc hardware.
    które poza procesorem jest identyczne jak przy uruchamianiu programu na atmega328p.

    Rozwiązania szukałbym nie w błędzie w sofcie, czy w podłączeniach bo są sprawdzone na 120%
    Raczej w Atmedze32 siedzi coś czego nie wiem...

    Czy w atmega32 jest coś co blokowałoby realizację programu który pracuje na atmega328P?
  • #4 14836444
    Andrzej_;)
    Poziom 14  
    Uzupełniając powyższy wpis..

    Po wylutowaniu atmegi32A w jej miejsce -za pomocą przewodów poprowadziłem sygnały sterujące wyświetlaczem z atmegi328 i wyświetlacz ruszył !

    Więc i płytka i ścieżki i dzielnik napięcia i wyświetlacz są sprawne...

    Dlaczego więc, dobry program, nie działa na dobrej atmedze32 ?

    Tracę już cierpliwość do tego projektu :([/syntax]
  • Pomocny post
    #5 14836479
    dondu
    Moderator na urlopie...
    Może dlatego:

    Cytat:
    The device is shipped with internal RC oscillator at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz system clock.


    ATmega32 nie ma ckdiv8, ale nie przyglądałem się programowi, stąd sugestia sprzętowa (którą podejrzewasz).
  • Pomocny post
    #6 14836575
    excray
    Poziom 41  
    Kolego musisz się zdecydować albo USART albo wyświetlacz. Oba na tych samych pinach nie pociągną. Uruchamiając USART:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    automatycznie odłaczyłeś sobie 2 linie D0 i D1 od sterowania rejestrem PORTD.
  • #7 14836581
    Andrzej_;)
    Poziom 14  
    Dzięki za zainteresowanie,

    Ale w atmega328P bit ten jest wyłączony (tzn. nie dzielę przez 8) z resztą nie powinno mieć to znaczenia...
    -ale na wszelki wypadek próbowałem pchnąć ten program na 1MHz (jakby wyświetlacz przypadkiem się nie wyrabiał) ...niestety z tym samym skutkiem :(

    Dodano po 4 [minuty]:

    kolego excray, dziękuję za zainteresowanie,

    tam jest znaczek ~

    innymi słowy odłączam te piny od USARTa
    Tego nie było, w akcie rozpaczy dodałem ta linijkę żeby wyeliminować możliwość że coś kradnie mi kontrolę nad pinami..

    z tą linijką, czy bez niej, niestety bez efektów :(
  • Pomocny post
    #8 14836645
    excray
    Poziom 41  
    Andrzej_;) napisał:
    tam jest znaczek ~

    Rzeczywiście moje gapiostwo. Nie podoba mi się ten dzielnik rezystorowy. Czy masz możliwość zmniejszyć te wartości o połowę? Na atmegę328 wgrywasz jak rozumiem dokładnie ten sam kod? Poza tym w funkcjach "LCD_WriteData" i "LCD_WriteCmd" profilaktycznie odkomentuj ten delay.
  • #9 14836674
    Andrzej_;)
    Poziom 14  
    Mogę zmniejszyć te rezystory (już zmieniałem je chyba z N razy) - pierwotnie wyświetlacz miał działać na 2,8V, ale po tych problemach i wielu próbach postanowiłem wrócić do konfiguracji sprawdzonej (3,3V i właśnie te wartości rezystorów)

    Z resztą atmega328 pchnęła ten wyświetlacz na dokładnie tych rezystorach bez śladu problemu.
    Co więcej - w obu przypadkach mam dokładnie to samo zasilanie (z USBASP)

    W życiu nie spotkałem się z takimi "czarami" :)

    Dodano po 1 [minuty]:

    na atmegę328 wgrywam dokładnie to samo, zmieniam tylko piny (w programie zaremowane) i procesor w kompilatorze.
  • #10 14836686
    excray
    Poziom 41  
    W funkcjach "LCD_WriteData" i "LCD_WriteCmd" profilaktycznie odkomentuj ten delay.
  • #11 14836688
    Andrzej_;)
    Poziom 14  
    delaye odkomentowane...nadal nic...
  • #12 14836705
    excray
    Poziom 41  
    A mógłbyś podrzucić zdjęcie płytki?
  • #14 14836745
    Andrzej_;)
    Poziom 14  
    ten zwitek z zielonego drutu jest podłączony do masy, to też akt rozpaczy - miał eliminować ewentualne zakłócenia..

    Dodano po 5 [minuty]:

    Tutaj jeszcze jedna, trochę lepsza fotka...
  • #15 14836782
    excray
    Poziom 41  
    Napisz prosty program który ustawia jedynki na wyjściach PD0-PD4 i zmierz miernikiem napięcia w punktach gdzie przylutowane są przewody od LCD. Analogicznie zrób ustawiając 0 na tych wyjściach.
  • #16 14838539
    Andrzej_;)
    Poziom 14  
    Witam,
    Zrobiłem jak mówiłeś i po wysterowaniu pinów w stan wysoki na pinach mam 5V a w punkcie podłączenia lcd 3,22V.

    Przy wysterowaniu w stan niski wszędzie mam 0V

    Więc niby wszystko jest ok..
  • #18 14839937
    Andrzej_;)
    Poziom 14  
    Kolego wojekkk - jesteś wielki :)

    Działa! :D :D :D

    Jak Ty to znalazłeś? Jestem pod wrażeniem!

    (W funkcji LCD_WriteCmd() w jednej linijce zamiast makra LCD_PORT był wpisany na sztywno PORTB)

    Istotnie na atmega328 używałem pinów portuB więc nie było problemu, a przy przejściu na portD w atmega32 musiało się wysypać.

    Odezwij się proszę, na priw z adresem, to podeślę Ci coś ze swojego barku ;)

    Pozostałym kolegom także dziękuję, za poświęcony czas i chęć pomocy.
    Jestem wam bardzo wdzięczny.
    Pozdrawiam
REKLAMA