Cześć,
Walczę z problemem już kilka dni. Kończą mi się już pomysły więc proszę o pomoc. Płytka z paroma modułami komunikacyjnymi, zasilaniem, XMega128A4 i wyświetlacz z serii WEH 16x4 - driver zgodny z hd44780.
Przed zamówieniem pcb soft pisany był na prototypie w płytce stykowej z XMegą16A4. Tam LCD dział jak trzeba. Sam wyświetlacz był testowany też ZL15AVR z ATMegą32 z podobnym rezultatem. Fragmenty schematów poniżej:
Moduły GSM, BT, przetwornica do SIM300 zostały odcięte i na chwilę obecną nie wnoszą nic do działania reszty więc pominę je w opisie.
Sam wyświetlacz został najpierw uruchomiony z ATMegą32, później kod przerobiony pod XMegi i sprawdzony z XMegą16A4. Po przyjsciu płytek docelowych wyświetlacz trafił na stałe na pcb razem z XMega128A4. Wtedy pojawiły sie problemy.
Po zasileniu, wyświetla się prawidłowo tekst powitalny - utrzymuje się na wyświetlaczu do następnego odświeżenia. Następne wartości maja bardzo duża szanse zostać wyświetlone źle lub wcale. Im więcej razy odświeżam wartość tym większe bzdury są wyświetlane. Za pierwszy razem jest to przekłamanie np. tylko jednego znaku, za drugim trzech a za trzecim kursor wypada poza zakres ekranu i tekst znika częściowo lub całkowicie. To tylko przykład ponieważ w jaki sposób się to objawi jest dosyć losowe natomiast pewne jest to, że wysypie się tym bardziej im częściej zmieniona będzie zawartość.
Oczywiście fizycznie płytka "przedzwoniona" nie ma zwarć miedzy liniami. Wszystkie luty poprawione 3 razy. Wszystkie siejące interfejsy, zasilania odcięte. Na chwile obecną działa tylko MCU, LCD i dwa LDO. Próbowałem walczyć z wartosciami rezystorów szeregowych na interfejsie LCD. Dolutowałem po 10nF do każdego pinu LCD:
Odciąłem wejscie LDO 3V3 i podlutowałem do wyjscia LDO 5V0 (LCD). Rozpiąłem interfejs LCD i przelutowałem na inny port MCU. Niestety nic nie wskórałem. Mój kod jest całkowicie amatorski i zapewne zawiera błędy - mam nadzieje, że tam kryję sie probem ponieważ MCU do tanich nie należał i jego wymiana mi się nie uśmiecha.
Przypomnę tylko, że ten sam kod, działa prawidłowo na innej XMedze oraz ATmedze (przerobione mapy).
[/code]
Walczę z problemem już kilka dni. Kończą mi się już pomysły więc proszę o pomoc. Płytka z paroma modułami komunikacyjnymi, zasilaniem, XMega128A4 i wyświetlacz z serii WEH 16x4 - driver zgodny z hd44780.
Przed zamówieniem pcb soft pisany był na prototypie w płytce stykowej z XMegą16A4. Tam LCD dział jak trzeba. Sam wyświetlacz był testowany też ZL15AVR z ATMegą32 z podobnym rezultatem. Fragmenty schematów poniżej:
Moduły GSM, BT, przetwornica do SIM300 zostały odcięte i na chwilę obecną nie wnoszą nic do działania reszty więc pominę je w opisie.
Sam wyświetlacz został najpierw uruchomiony z ATMegą32, później kod przerobiony pod XMegi i sprawdzony z XMegą16A4. Po przyjsciu płytek docelowych wyświetlacz trafił na stałe na pcb razem z XMega128A4. Wtedy pojawiły sie problemy.
Po zasileniu, wyświetla się prawidłowo tekst powitalny - utrzymuje się na wyświetlaczu do następnego odświeżenia. Następne wartości maja bardzo duża szanse zostać wyświetlone źle lub wcale. Im więcej razy odświeżam wartość tym większe bzdury są wyświetlane. Za pierwszy razem jest to przekłamanie np. tylko jednego znaku, za drugim trzech a za trzecim kursor wypada poza zakres ekranu i tekst znika częściowo lub całkowicie. To tylko przykład ponieważ w jaki sposób się to objawi jest dosyć losowe natomiast pewne jest to, że wysypie się tym bardziej im częściej zmieniona będzie zawartość.
Oczywiście fizycznie płytka "przedzwoniona" nie ma zwarć miedzy liniami. Wszystkie luty poprawione 3 razy. Wszystkie siejące interfejsy, zasilania odcięte. Na chwile obecną działa tylko MCU, LCD i dwa LDO. Próbowałem walczyć z wartosciami rezystorów szeregowych na interfejsie LCD. Dolutowałem po 10nF do każdego pinu LCD:
Odciąłem wejscie LDO 3V3 i podlutowałem do wyjscia LDO 5V0 (LCD). Rozpiąłem interfejs LCD i przelutowałem na inny port MCU. Niestety nic nie wskórałem. Mój kod jest całkowicie amatorski i zapewne zawiera błędy - mam nadzieje, że tam kryję sie probem ponieważ MCU do tanich nie należał i jego wymiana mi się nie uśmiecha.
Przypomnę tylko, że ten sam kod, działa prawidłowo na innej XMedze oraz ATmedze (przerobione mapy).
Kod: C / C++
Kod: C / C++
Kod: C / C++
