Wpis z mikrobloga

@AlteredState: Pod AVR'y masz albo Bascoma(wersja na avr), albo C

Niestety nienawidzę, C, a Bascom jest bardzo miły pod te procki i stosunkowo szybki, lecz fakt - wydajnością i optymalnością kodu nie zachwyca, ale cóż...
  • Odpowiedz
Ja nie korzystałbym z dwóch przerwań, a jedynie z przerwania od przepełnienia timera. W przerwaniu sprawdzasz , czy jest wciśnięty przycisk, jeżeli tak to inkrementujesz flage z 0 na 1. Jeżeli w następnym przerwaniu przycisk już nie jest wciśnięty, to do interwal dodajesz 5 i zerujesz flage, a jeżeli wciśnięty to inkrementujesz flage. W każdym przerwaniu sprawdzasz, czy flaga nie jest równa 6. Jeżeli tak to bezwzględnie flaga= 0 i interwal =
  • Odpowiedz
@miszczo997: Tutaj wszystko działa, tylko impuls sterujący migawką jest złej długości(wypełnienie impulsów mam 50%), a częstotliwość się zmienia odpowiednio. Impuls wyzwalający powinien mieć zawsze 0.3s (powinien się wyłączać, gdy Clock = 3)
  • Odpowiedz
@kjuba13: No to z tego co widzę, to przerwanie od timera masz co 0,1s. No to daj zmienną którą będziesz inkrementował co przerwanie i taki warunek, że if(zmienna<=2) PORTxx=1 else PORTxx=0. I za każdym razem sprawdzasz, czy zmienna ma wartość interwal, jak tak to ją zerujesz i znowu ustawiasz stan wysoki na porcie.
  • Odpowiedz
@miszczo997: Już ogarnąłem - pomyliłem PINB z PORTB...

Zawsze się robi głupie błędy :)

Apropo 2 przerwań naraz - przerwanie od przycisku ma niższy priorytet, więc sobie nie wadzą nawzajem
  • Odpowiedz