-
1. Data: 2011-07-22 04:09:55
Temat: Generowanie przerwań programowo w AVRach
Od: slawek7 <s...@w...pl>
Z góry przepraszam za nowy temat a nie kontynuację poprzedniego, ale
łatwiej dostrzec.
Czy jet możliwośc w AVR'ach wygenerowania przerwań programowo? Np mamy
przewranie od poadajacego zbocza INT0. Zostanie obsluzone jak pojawi
sie zbocze na wejsciu, ale czy można wygenerować takie przerwanie
programowo?
Myślałem o programowym zerowaniu linii INT0, ale potem trzeba powrocic
do stanu jako wejscie a dodatkowo do tego pinu moga byc podlaczone
uklady ktore moga nie zniesc podania z zewnatrz sygnalu L. A co z
przerwaniami od Timerow?
I jeszcze jedno. Flage przerwania zeruje sie wpisujac 1 do niej. A co
jesli flaga nie byla ustawiona a wpisze sie 1? Czy to moze generować
przerwanie?
-
2. Data: 2011-07-22 05:42:37
Temat: Re: Generowanie przerwań programowo w AVRach
Od: Grzegorz Kurczyk <g...@c...slupsk.pl>
W dniu 22.07.2011 06:09, slawek7 pisze:
> Z góry przepraszam za nowy temat a nie kontynuację poprzedniego, ale
> łatwiej dostrzec.
>
> Czy jet możliwośc w AVR'ach wygenerowania przerwań programowo? Np mamy
> przewranie od poadajacego zbocza INT0. Zostanie obsluzone jak pojawi
> sie zbocze na wejsciu, ale czy można wygenerować takie przerwanie
> programowo?
> Myślałem o programowym zerowaniu linii INT0, ale potem trzeba powrocic
> do stanu jako wejscie a dodatkowo do tego pinu moga byc podlaczone
> uklady ktore moga nie zniesc podania z zewnatrz sygnalu L. A co z
> przerwaniami od Timerow?
>
A musi to być "przerwanie" ? Nie wystarczy Koledze po prostu skoczyć do
obsługi tego przerwania.
> I jeszcze jedno. Flage przerwania zeruje sie wpisujac 1 do niej. A co
> jesli flaga nie byla ustawiona a wpisze sie 1? Czy to moze generować
> przerwanie?
Jeśli ma Kolega na myśli główną flagę przerwań (sei/cli) to nie. Ale o
ile mnie pamięć nie myli, to np. ustawienie w rejestrze ADCSRA bitu ADIF
przy ustawionym wcześniej ADIE spowoduje wygenerowanie przerwania.
Pozdrawiam
Grzegorz
-
3. Data: 2011-07-22 09:07:27
Temat: Re: Generowanie przerwań programowo w AVRach
Od: slawek7 <s...@w...pl>
Skoczyć może i można ale jak to sie robi w WinAvr?
W drugiej czesci chodzilo mi raczej o flagi przyporzadkowane do
konkretnego układu jak TOV1 lub ICF1, INTF1.
Czy ustawienie ktorejs z nich spowoduje przerwanie i skok do jego
obslugi?
-
4. Data: 2011-07-22 09:21:47
Temat: Re: Generowanie przerwań programowo w AVRach
Od: "Lelek@" <r...@i...iw>
"slawek7" <s...@w...pl> wrote in message
news:fec7d625-b48b-42ab-b77e-9b5507c44381@c29g2000yq
d.googlegroups.com...
Z góry przepraszam za nowy temat a nie kontynuację poprzedniego, ale
łatwiej dostrzec.
Czy jet możliwośc w AVR'ach wygenerowania przerwań programowo? Np mamy
przewranie od poadajacego zbocza INT0. Zostanie obsluzone jak pojawi
sie zbocze na wejsciu, ale czy można wygenerować takie przerwanie
programowo?
No jasne. W PDF-ie jest gdzieś to opisane. Chyba wystarczy przestawić pin na
out i wpisać mu tam zero przy pomocy sbi/cbi to załatwisz, po czym w
przerwaniu sprawdzisz czy ustawiłeś pin na "out" i go ustawisz ponownie na
"in"
sbi DDRA,1
cbi PORTA,0
a w c
DDRA |= 0b00000010;
PORTA &= (~PORTA) & 0x02;
one ci wygenerują sbi i cbi
-
5. Data: 2011-07-22 16:59:20
Temat: Re: Generowanie przerwań programowo w AVRach
Od: Konop <k...@g...pl>
> W drugiej czesci chodzilo mi raczej o flagi przyporzadkowane do
> konkretnego układu jak TOV1 lub ICF1, INTF1.
> Czy ustawienie ktorejs z nich spowoduje przerwanie i skok do jego
> obslugi?
A jak nazywa się funkcja, która to przerwanie obsługuje?? Zapewne
deklarujesz coś takiego (przykład dla TIMERA2):
SIGNAL(TIMER2_OVF_vect)
No i jeden rzut oka na plik avr/interrupt.h i już widzisz, co oznacza
SIGNAL i że deklaruje on funkcję:
TIMER2_OVF_vect (void)...
No i wystarczy wywołać tą funkcję:
TIMER2_OVF_vect();
Zwróć tylko uwagę na jedną rzecz. Normalnie przy wywołaniu przerwania
następuje zablokowanie wszystkich przerwań (tak jakby wywołanie cli()).
Po wykonaniu przerwania obsługa ta jest włączana (sei()). W przypadku
ręcznego wywołania funkcji przerwania nie będą blokowane, ale będą
właczane przy wyjściu... .
--
Pozdrawiam
Konop
-
6. Data: 2011-07-23 08:58:21
Temat: Re: Generowanie przerwań programowo w AVRach
Od: slawek7 <s...@w...pl>
Dziękuję, działa. Nie wiem jak na to wpadłeś.
Przy okazji zapytam się o cos co mnie zaskoczyło.
Spotkałem taką deklaracje funkcji
memcopy(void *, const void *, size_t) : void *;
Dlaczego tam jest na końcy dwukropek?
Szukałem w opisie standardu C i nie znalazłem takiego opisu.