Witam.
Dopiero zaczynam pogramowanie w C i tym razem postanowiłem pobawić się na początek licznikiem.
Przykład jest na tej stronie Link
Jeśli ktoś by mi wytłumaczył parę szczegółów byłbym wdzięczny, a więc do rzeczy:
Nie wiem co oznacza to wyrażenie przypuszczam, że deklaracja zmiennej led na ośmiu bitach.
Dalej w pętli while :
Mam rozumieć, że dopóki w rejestrze TIFR, TOV0 ma stan wysoki (jest przepełnienie) to dalsze instrukcje nie są wykonywane?
Dalej np.
Ja to rozumię tak:
jeśli nastąpiło przepełnienie to biorąc pod uwage, że występuje ono po dwóch impulsach zewnętrznych to trzeba dodać do zmiennej led 1 ?
I jeszcze po co się ją neguje?
Dopiero zaczynam pogramowanie w C i tym razem postanowiłem pobawić się na początek licznikiem.
Przykład jest na tej stronie Link
// Testowanie licznika 0 (polling)
#include <avr/io.h> // dostęp do rejestrów
uint8_t led;
int main( void )
{
DDRC = 0xFF; // PortC jako wyjścia
TCNT0 = 0xFE; // wartość początkowa T/C0
TCCR0 = _BV(CS01)|_BV(CS02);
// T/C0 zlicza opadające
// zbocza na wejściu T0
while(1)
{
loop_until_bit_is_set(TIFR,TOV0);
// ta pętla sprawdza bit przepełnienia
// w rejestrze TIFR
TCNT0 = 0xFE; // przeładuj T/C0
PORTC = ~led++; // wyślij ilość przepełnień na PortC
sbi(TIFR,TOV0);
// jeśli wpiszemy 1 do bitu TOV0
// to ten bit zostanie skasowany
// przy następnym przepełnieniu licznika 0
}
}
Jeśli ktoś by mi wytłumaczył parę szczegółów byłbym wdzięczny, a więc do rzeczy:
uint8_t led;Nie wiem co oznacza to wyrażenie przypuszczam, że deklaracja zmiennej led na ośmiu bitach.
Dalej w pętli while :
loop_until_bit_is_set(TIFR,TOV0);Mam rozumieć, że dopóki w rejestrze TIFR, TOV0 ma stan wysoki (jest przepełnienie) to dalsze instrukcje nie są wykonywane?
Dalej np.
PORTC = ~led++;Ja to rozumię tak:
jeśli nastąpiło przepełnienie to biorąc pod uwage, że występuje ono po dwóch impulsach zewnętrznych to trzeba dodać do zmiennej led 1 ?
I jeszcze po co się ją neguje?
