Skocz do zawartości

Nie rozumiem wyrażenia


rzorrz

Pomocna odpowiedź

Witam:]

Zaczynam programowanie AVR w języku C i natknąłem się na taka instrukcję:

TIFR=1<<TOV0; //KASOWANIE FLAGI PRZEPEŁNIENIA

Jak to wyrażenie kasuję tę flagę?

Wiem, że operator << oznacza przesunięcie.

Ktoś może mi wyjaśnić ten zapis??

Dzięki z gory

Link do komentarza
Share on other sites

Chodzi o to że do rejestru TIFR w miejsce bitu TOV0 wpisywana jest jedynka.

Za TOV0 wpisywany jest nr tego bitu. Zamiast szukać który to bit rejestru i pisać

TIFR=1<<(nr bitu TOV0);

wpisujemy

TIFR=1<<TOV0;

Tak jest czytelniej. W razie czego nie trzeba szukać co to za bit ma ten nr tylko od razu mamy nazwę bitu.

Nie zamieszałem?😉

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dzięki:] już trochę czaję, ale mam jeszcze takie pytanka:

1. Dlaczego do TOV0 trzeba wpisać 1 żeby wyzerować tę flagę?

Przecież gdy licznik osiągnie odpowiednią wartość, to ustawiana jest ta właśnie flaga- wpisywana jest tam jedynka. Zawsze myślałem, że kasowanie TOV0 robi się przez wpisanie 0.

2. Po czym odróżnić w takim wyrażeniu:

TIFR=1<

że chodzi o podstawienie 1 do TOV0 a nie o przesunięcie bitowe?

Szukałem ale nie znalazłem odpowiedzi.

Dzięki

Link do komentarza
Share on other sites

To proste, zacznę od początku

TOV0 to bit numer 1 w rejestrze TIFR (w atmega8 przynajmniej), bity numeruje się zaczynając od zera

00000001 - liczba 1 przedstawiona dwójkowo

TIFR = (00000001 << TOV0 )

preprocesor języka C, przed kompilacją zamienia w kodzie każdy napis "TOV0" na "1"

TIFR = (00000001 << 1 ) = 00000010

Wpierw wartość 00000001 zostaje przesunięta o jedną pozycję w lewo, następnie do

TIFR trafia wartość 00000010, czyli ustawiany jest bit nr. 1(licząc od zera)

A czemu w rejestrze TIFR kasuje się bit TOV0 wpisują wartość bitu "1", a nie "0"

Bo tak i już.

Fragment z atmega8 datasheet:

"The bit TOV0 is set (one) when an overflow occurs in Timer/Counter0. TOV0 is cleared by

hardware when executing the corresponding interrupt Handling Vector. Alternatively, TOV0 is

cleared by writing a logic one to the flag."

Czasem tak bywa. Kiedyś widziałem na filmie jak gaszono płonący szyb naftowy wysadzając go w powietrze 😅

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.