Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega8] - Pomiar ADC i wysyłanie przez USART - 34 pomiary i cisza

Defozo 30 Mar 2013 15:19 1197 4
  • #1 30 Mar 2013 15:19
    Defozo
    Poziom 17  

    Witam, mam taki kod programu, który skleiłem z fragmentów znalezionych w Internecie:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Program ma za zadanie wysłać 'p' przez USART, a następnie dokonać pomiaru napięcia na porcie PC1 (ADC1) i wysłać odczytaną wartość przez USART i tak w kółko.

    Niestety dzieje się tak tylko 34 razy od momentu uruchomienia mikrokontrolera.

    Dane z terminala:
    Code:
    p0p927p1020p1023p1023p1023p1023p1023p1023p1023p1023p1023p1023p
    
    1023p1023p1023p1023p1023p1023p1023p1023p1023p1023p1023p1023p1023p102
    3p1023p1023p1023p1023p1023p1023p1023pppppppppppppppppppppppppppppppp
    pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
    ppppppppppppppppppppppppp


    Co jest źle? Dlaczego pomiar nie jest kontynuowany?

    Między Aref a GND podłączony jest kondensator 47nF, dławik między AVCC a VCC.

    Proszę o pomoc,
    Defozo

    0 4
  • #2 30 Mar 2013 15:25
    mickpr
    Poziom 39  

    Robisz malloc, ale free już nie?

    0
  • Pomocny post
    #4 30 Mar 2013 15:52
    mickpr
    Poziom 39  

    Nie wystarczy itoa?
    http://pl.wikibooks.org/wiki/C/itoa
    Ja wiem, wiem - biblioteki zwiększają zajętość flash... , ale myślę (w tym przypadku), że jeżeli projekt jest mały i masz jeszcze trochę flash'a i RAM oszczędzanie - poprzez pisanie własnych funkcji konwertujących int na string nie ma sensu.

    Ale wracając do twojego kodu:
    W twoim przykładzie brak zwolnienia pamięci po jej użyciu - przy czym tmp możesz zwolnić od razu (przed wyjściem z funkcji),

    Kod: c
    Zaloguj się, aby zobaczyć kod


    zaś ret zadeklaruj globalnie (poza tą funkcją) jako zmienną
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 30 Mar 2013 16:03
    Defozo
    Poziom 17  

    Dziękuję za szybką odpowiedź!
    Funkcja itoa spełnia swoje zadanie.


    Poprawiony kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Temat zamykam.

    Defozo

    0