amilo_pa napisał(a):
Jeżeli użyję zapisu TIMSK = (1<<OCIE2); to dokonam przesunięcia w lewo całego rejestru TIMSK w lewo
O żesz sobie kolega teraz wymyślił .... przesunięcie rejestru

Widzę, że masz Bluebooka .... więc proszę poczytaj KONIECZNIE o przesunięciach bitowych i jak to działa bo bez zrozumienia tego - będziesz robił jeszcze gorsze kwiatki ....
Zrozum - zapis
Kod:
(1<<OCIE2)
to tylko WYRAŻENIE w języku C ..... więc pierwsze co musisz zrobić to zobaczyć jaka jest jego wartość panie kochany więc jak to zrobić?
jaką wartość reprezentuje OCIE2 ? no jak widać z noty 7 a więc mamy zapis
Kod:
(1<<7)
czyli ile to się równa ?
Kod:
(1<<7) = 128
czyli ?
Kod:
TIMSK = 127;
czyli ? czyli ustawiłeś pan bit OCIE2 ale skasowałeś wszystkie inne bity .... i jeśli robisz to po resecie procka to przecież nic się nie stanie bo przecież w TOIE2 było zero
ale gdybyś zrobił tak:
Kod:
TIMSK = (1<<TOIE2);
TIMSK = (1<<OCIE2);
no to najpierw ustawiłbyś bit TOIE2 a w drugiej linijce skasowałbyś TOIE2 a ustawił OCIE2
więc aby tego uniknąć warto używać operacji OR czyli
Kod:
TIMSK |= (1<<TOIE2);
TIMSK |= (1<<OCIE2);
oczywiście tu w pierwszej linijce nie jest to konieczne ale ja wolę dla bezpieczeństwa i kosztem małego nadmiaru tak właśnie ustawiać bity
a tobie jeszcze raz polecam poczytać o przesunięciach i wyrażeniach w C bo na razie coś jeszcze mocno tego nie rozumiesz ok ?
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]