atmega8 i spowolnione działanie

Dec 05, 2004 2 Replies

Witam,



Mam następujący problem: robię układzik na atmega8. LCD, pomiar temperatury itp. uruchomiłem wersję prototypową i gdy dopracowałem wszystko wykonałem już ostateczną wersję płytki. Po montażu i uruchomieniach okazało się że procek chodzi na szybkości o wiele niższej niż w prototypie. (samego protoypu nie mogę już włączyć bo uległ znacznej dewastacji w trakcie uruchamiania i potem demontażu). atmega wykorzystuje wewnętrzny oscylator 1MHz czyli niżej już nie mogła zejść (a jest ok. 10 razy wolniej - aczkolwiek się waha). Początkowo myślałem że timer jest coś źle ustawiony natomiast to nie jest możliwe bo nawet inicjalizacja LCD i wyświetlenie na nim ciągu znaków jest znacząco spowolniona (przy wyświetleniu ciągu znaków widzę po kolei jak wyświetla się każdy znak - jeden za drugim. A to już nie ma nic wspólnego z timerami.)



Grupę przeszukałem i nic. Wcześniej nie zauważyłem aby ktoś miał taki problem. Nie ukrywam że ta sztuka Atmegi przeżyła swoje podczas uruchamiania ale chodzi. (Ale jest to inna sztuka niż ta z prototypu).



Do linii XTAL1 i 2 podłączone są linie danych wyświetlacza LCD.



Ma ktoś jakiś pomysł?



Rogher


snipped-for-privacy@wp.pl (Rogher) napisał(a): ..

..

To chyba z przerwaniami coś nie tak :( Procek traci zbyt dużo czasu(mocy obliczeniowaj) na obsługę przerwań timera(ów),sprawdź wartość preskalera. Podaj więcej szczegółów - jakie przerwania wykorzystujesz i jak często.

Pozdrawiam Piotrek Sz.

Piotrek Sz. napisał(a):

To raczej nie o to chodzi. Przerwania mam od timera1, i int0. Też na początku sądziłem że tu coś nie tak, jednak wykluczyłem to bo po resecie układu jest kawałek kodu z inicjalizacją peryferiów a potem procedura inicjalizacji LCD itp. W programie głównym raz w pętli odświeżana jest zawartość ekranu LCD. Kod napisany jest w C (CodeVision) i wykorzystuję procedurę lcd_puts(string). W pierwszej pętli po resecie (gdy LCD jest czysty) widać kolejno pojawiające się znaki na LCD. A z tego co wiem funkcja lcd_puts() opiera swoje delaye na pętlach opóźniających czyli tylko zegar ma tu znaczenie. Co dziwne w prototypie wszystko było ok. Obecnie podniosłem zegar z 1MHz na 8 MHz i chodzi mniej więcej jak w prototypie ale to nie jest rozwiązanie. Chcę wiedzieć o co chodzi.

Rogher

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required