eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Generowanie przerwań programowo w AVRach
Ilość wypowiedzi w tym wątku: 6

  • 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.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: