slawek55 pisze:próbuje zaobserwowac jakąś reakcję bitów FOC ale w tym programie niestety nie ma reakcji.
Zacytuję fragment z książki "
ATMega w praktyce" Rafała Baranowskiego:
Jeśli licznik pracuje w trybie innym niż PWM (np. normalnym), możliwe jest wymuszenie zmiany stanu na wyprowadzeniu OCn (OCnx) tak, jakby wystąpiło zdarzenie zgodności porównania. Dokonuje się tego, zapisując odpowiedni znacznik FOCn (FOCnx) w rejestrze TCCRn (TCCRnx) wysoką wartością logiczną. Operacja ta nie generuje przerwania wynikającego ze zgodnego porównania, a jedynie zmienia stan linii OCnx w sposób zależny od nastawy znaczników COMnx z rejestrów TCCRnx.
Zatem zmieniając stan FOCnx z L -> H, to zgodnie z ustawieniem COMnx, stan OCnx powinien zostać wymuszony w następnym takcie CLKi/o. Jeśli zatem COM1A0:COM1A1 zostanie ustawione w opcji zmiany stanu na przeciwny, to cykliczne ustawianie FOC1A będzie powodować "natychmiastowe" zmiany stanu na linii OC1A.
I jeszcze jedna ważna rzecz - po wpisaniu jedynki do FOCnx stan OCnx się zmienia, a bit FOCnx (ma on status "Tylko zapis") zostaje automatycznie wyzerowany!
slawek55 pisze:Czy możesz coś podpowiedzieć jak aobserwować na czym polega dzialanie tych bitów FOC.
Zatem sprawdzać należy czy zmienia się stan końcówek OCnx podczas ustawiania FOCnx...
W tym oto celu napisałem sobie taki programik w asemblerze w AVR Studio (v4.12). Rozwinąłem sobie gałęzie TIMER_COUNTER_0 oraz PORTB i sprawdziłem czy opcja FOC działa.
Kod: Zaznacz cały
.include "m128def.inc"
'PB3 jako wyjście
ldi r16, 0b00010000
out DDRB, r16
'pozycja startowa licznika
ldi r16, 0b00000000
out TCNT0, R16
'porównanie z 127
ldi r16, 0b01111111
out OCR0, r16
'start preskalera i opcja Toggle OC0
ldi r16,(1<<COM00)|(1<<CS01)
out TCCR0,R16
petla:
'tutaj mam pełną swobodę
rjmp petla
Niestety, także nie potrafię tego zasymulować. W trakcie pracy licznika próbowałem sobie zmieniać stan FOC0, ale reakcja na porcie nie była odwzorowywana...

Trzeba wprawdzić w realnym układzie lub wierzyć "na słowo" projektantom.
[ Dodano: 2006-10-08, 22:23 ]
slawek55 pisze:tutaj jak FOC jest wyzerowany czy ustawiony to i tak następuje przerwanie i reakcja na wyjsciu OC1A bez względu na stan bitów.
Dlatego, iż już samo wybranie trybu zmiany stanu koncówki OCnx za pomocą bitów COMnx włącza tryb porównywania z jego przerwaniami. Jeśli zostaną odblokowane, to będą generowane.
[ Dodano: 2006-10-09, 07:06 ]
slawek55 pisze:Wisz co właśnie napisałem bardzo długi post ale mi wyparował.
Jeśli cię w międzyczasie wylogowało, to zrób tak: po naciśnięciu Wyślij forum prosi o zalogowanie, zaloguj się ponownie i gdy pokaże się opcja Napisz odpowiedź z pustą treścią klinij w przeglądarce 2 razy wstecz, a wrócisz do poprzednio napisanej treści i po ponownym kliknięciu Wyślij odpowiedź będzie wysłana.