działa, w 5.1 nie

Feb 24, 2012 9 Replies

Opisałem skrótowo, chodzi o kompilowany kod przez AS 5.1 (5.0 tak samo). Raczej prosty program, kod obsługi wyświetlacza 2x16 ze strony

formatting link
programie głównym inicjalizacja wyświetlacza i wypisanie tekstu. Biblioteka sprawdziła mi się już wcześniej (AS4 z WinAVR-20100110) więc dodałem do większego projektu pisanego w nowoczesnym, ładnym, ciężkim... AS 5.0. Nie działa LCD. Co jest?! Porty, JTAG włączony, z LCD coś nie tak. Po chwili zmian w kodzie poprzerywanych 'wiązankami' słownymi sprowadziłem do tego, że jest tylko i wyłącznie obsługa LCD - minimum! Przeniosłem kod do projektu AS4, kompilacja i działa! Parametry kompilacji domyślne, (optymalizacja ustawiona -Os, chociaż przy -O0 nie ma poprawy), F_CPU to samo, programator pobierający HEX ten sam. Aha, przed inicjalizacją LCD załączam LED - program startuje. Inicjalizacja LCD też raczej ok, ponieważ przechodzi wzrokowy test na ciemne bloki pierwszego wiersza. Nie wyświetla najprostszego znaku za pomocą LCD_WriteData :( Nie miałem czasu analizować źródeł, nie mam też możliwości JTAG. A! ATmega128@16MHz, 5V. Miał ktoś podobne problemy? Słyszałem niepochlebne opinie AS5, ale mimo to chciałem spróbować, żeby nie zostać w tyle... Projekciki mogę gdzieś umieścić, może po południu.



Michał


Cześć,

zdaje się, że mam podobne objawy. Kompilacja na Atmega64 z AS4 działa, a z AS5 nie do końca... No i czemu rózny jest rozmiar kodu? Kompilator przecież ten sam, opcej kompilacji te same.

Maciek

Użytkownik "Michał Lankosz" snipped-for-privacy@tlen.pl napisał w wiadomości news:ji7g9o$e47$ snipped-for-privacy@inews.gazeta.pl...

Link do projektów pod AS4 i AS5:

formatting link
że jakiś zapis w kodzie jest nieprawidłowy...

Michał

Michał Lankosz snipped-for-privacy@tlen.pl napisał(a):

A nie mógłyś normalnie, po ludzku, wystawić ZIPa? Chyba, że przeoczyłem jak można ściągnąć całość naraz.

Maciek snipped-for-privacy@interia.pl napisał(a):

Na pewno ten sam? Sprawdź wersję kompilatora. Nowsze wersje GCC dają z jakiegoś powodu większy kod, już było o tym na grupie.

Michał Lankosz snipped-for-privacy@tlen.pl napisał(a):

Jesteś pewien? Moim zdaniem plik hd44780.c nie ma prawa znać tego symbolu w projekcie dla wersji 5.

Nie :) Moim zdaniem nie przeniosłeś poprawnie projektu z wersji 4 do 5.

Jakie opinie? Mnie zmartwiło zaprzestanie obsługi starszych JTAGów, czasem też dziwnie zachowuje się debugger. Ogólnie jednak jest bardzo przyjemnie dzięki oparciu softu o Visual Studio Isolated Shell.

Przy okazji zaciekawiło mnie takie coś:

LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite >> 4); LCD_E_PORT &= ~LCD_E; LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite);

Czy to nie jest za szybko? Czy nie powinno być jakiegoś, choćby mikrosekundowego, opóźnienia po ustawieniu stanu linii E?

Impuls na E (stan wysoki) powinien trwać minimum 450 ns Dane powinny być stabilne miniumum 195 ns przed opadającym zboczem E i minimum 10 ns po. Między tymi narastającymi zboczami na E minimum 1 µs. Nie podają ile może trwać stan niski, ale zakładam, że minimum te 10 ns powyżej. Brzydko jest to zrobione. Może przez to nie działać

W dniu 2012-02-24 22:24, Grzegorz Niemirowski pisze:

Przepraszam, nie wiedziałem i nie sprawdziłem, że Gugiel pokaże podgląd zipa. ZIP tutaj:

formatting link
Michał

W dniu 2012-02-24 22:51, Grzegorz Niemirowski pisze:

Mea culpa! Nie wiem, dlaczego nie zauważyłem ostrzeżenia... mogłoby to być jakoś lepiej zrobione w AS5, a ja ręcznie przełączam na 'Error list'... czasem. Teraz przyczepiłem sobie okienko tak, żeby było widoczne. Definicję F_CPU dodałem jednak do do okienka 'Defined symbols' w opcjach Toolchain. Chyba tak lepiej, niż doczepianie do każdego kolejnego pliku kolejnego pliku nagłówkowego z definicją F_CPU.

Fakt, niezbyt ładnie mimo, że działa. Kiedyś popełniałem swoje wersje obsługi LCD, również w asm, ale jakoś ostatnio przyjęła mi się ta biblioteka. Na wszelki wypadek wstawiłem w kilku miejscach wymagane przez HD44780 opóźnienia (mniej więcej).

Michał

Grzegorz Niemirowski snipped-for-privacy@poczta.onet.pl> napisał(a):

Zrobiłem teraz upgrade z 5.0 do 5.1 i JTAG przestał działać, tzn. działa zupełnie losowo, widać ewidentne przekłamania, np. jak zczytuje sygnaturę atmegi to potrafi w dwóch bajtach ustawić wszystkie bity na 1. Co za badziew.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required