ATMega8 + C + zegar binarny

May 16, 2007 4 Replies

Witam



Robię sobie zegar binarny z termometrem, wyświetlam godzinę i temperaturę na matrycy 8 kolumn x 5 wierszy LED. Robię to na ATMedze8 z kwarcem 4MHz. Kompilator to gcc. Konstrukcja wymusza "przesuwanie" jedynki po kolumnach, a na wiersze konretnej kombinacji zapalonych lampek w jednym wierszu. Mam dwa pytania: Jak wywalać te 5 bitów (zmienna wyswietlacz) na port c, nie ruszając pozostałych? Na PORTC5 mam podpięty termometr przez 1-wire... Coś takiego?: PORTB = (PORTB & 0b11100000) | wyswietl; Czy może jest jakiś bardziej elegancki sposób?



Pytanie drugie: Jak najlepiej taktować te odświeżanie? W pętli głównej? Czy może zatrudnić do tego timer (jeden mam jeszcze wolny)? Wiem, że i tak i tak da się zrobić - ale chciałbym poznać opinie bardziej doświadczonych programistów :)


U¿ytkownik "scx" snipped-for-privacy@TO.wp.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@4ax.com...

jesli dzia³a, to ...

a co za ró¿nica ? taki program piszesz raz i o nim zapominasz ... procesor nie zu¿ywa siê od dzia³ania ...

@

Mnie tam zawsze uczuli że bardziej "elegancką" wersją jest używanie timera :P

U¿ytkownik "willy" snipped-for-privacy@interia.pl napisa³ w wiadomo¶ci

no jesli program ma równie¿ wygl±daæ, oprócz dzia³ania, to niech bêdzie elegancki ;)

@

scx napisał(a):

Sposób bardzo dobry i skuteczny.

Odświeżanie taktuj timerem, który będzie wywoływał przerwanie, a w nim dopiero będzie odbywało się wysyłanie kolejnych kolumn na port. Odświeżanie wyświetlacza będzie niejako "w tle" a w głównej pętli programu zajmiesz się bardziej przydatnymi zadaniami.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required