eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaWinAVR, jak zmienić funkcję obsługi przerwania w trakcie wykonywania programuRe: WinAVR, jak zmienić funkcję obsługi przerwania w trakcie wykonywania programu
  • Received: by 10.52.70.173 with SMTP id n13mr1213788vdu.15.1349369400013; Thu, 04 Oct
    2012 09:50:00 -0700 (PDT)
    MIME-Version: 1.0
    Received: by 10.52.70.173 with SMTP id n13mr1213788vdu.15.1349369400013; Thu, 04 Oct
    2012 09:50:00 -0700 (PDT)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin2!goblin.stu.neva.ru!xlned.com!feeder7.xlned.com!news2.euro.net!
    209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!216.196.98.1
    42.MISMATCH!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.gi
    ganews.com!l8no24712446qao.0!news-out.google.com!e10ni165558057qan.0!nntp.googl
    e.com!l8no25223103qao.0!postnews.google.com!p5g2000vbl.googlegroups.com!not-for
    -mail
    Newsgroups: pl.misc.elektronika
    Date: Thu, 4 Oct 2012 09:49:59 -0700 (PDT)
    Complaints-To: g...@g...com
    Injection-Info: p5g2000vbl.googlegroups.com; posting-host=80.109.193.38;
    posting-account=LtRNCAoAAAACVwjGJC66ygSl50zdeDtv
    NNTP-Posting-Host: 80.109.193.38
    References: <506d9da7$0$26696$65785112@news.neostrada.pl>
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
    Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET
    CLR 3.0.30729; Media Center PC 6.0; .NET4.0C),gzip(gfe)
    Message-ID: <5...@p...googlegroups.com>
    Subject: Re: WinAVR, jak zmienić funkcję obsługi przerwania w trakcie wykonywania
    programu
    From: Marcin <m...@o...pl>
    Injection-Date: Thu, 04 Oct 2012 16:50:00 +0000
    Content-Type: text/plain; charset=ISO-8859-1
    Lines: 92
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:636191
    [ ukryj nagłówki ]

    Witam,

    do zmiany "w locie" cu wykonuje sie w przerwaniu dobrze sie
    wykorzystuje wskaznik do funkcji.
    Zadeklaruj sobie zmienna typu wskaznik do funkcji w pliku, gdzie masz
    obsluge przerwania . Dodatkowo, w tym samym pliku stworz funkcje
    SetIrqHandler(), ktorej parameterm jest wskaznik na funkcje.
    W samym przerwaniu wywolujesz funkcje przez jej wskaznik.


    na szybko cos podobnego do:

    static void(*pIrqHandler)(void);



    /** @file main.c */

    // zmienna globalna dla tego pliku, niedostpena z innych modulow
    static void (*pIrqHandler)(void);

    // funkcja do inicjalizacji wskaznika do funkcji, exportowana w irq.h
    void SetIrqHandler(void( *pNewHandler)(void))
    {
    pIrqHandler = pNewHandler;
    }

    /**
    to wlasciwa funkcja przerwania SIGNAL (SIG_OVERFLOW1)
    ale nie mam WinAvr zeby calosc kompilowac, testowalam
    poprawnosc skladni na Yagarto
    */
    //SIGNAL (SIG_OVERFLOW1)
    void Doirq(void)
    {
    pIrqHandler();
    }


    /****************************/

    int EnableIrq()
    {
    return 0;
    }

    int DisableIrq()
    {
    return 0;
    }


    void f1(void)
    {
    // zrob cos
    }

    void f2(void)
    {
    // zrob co innego
    }

    void main1 (void)
    {
    StandardowaInicjalizacja();
    SetIrqHandler(f1);

    EnableIrq();

    while(1)
    {

    // zrob co trzeba
    // a jak dojdziesz ze irq ma robic co innego to:
    // to tylko do testow, normalnie funkcja wywolana przez
    hardware irq
    Doirq();
    DisableIrq();
    SetIrqHandler(f1);
    EnableIrg();
    // to tylko do testow, normalnie funkcja wywolana przez
    hardware irq
    Doirq();
    // kontynuuj z main
    }

    }

    mankament jaki widze, to to ze obsluga przerwania wydluzy sie o
    wywolanie kolejnej funkcji oraz odlozy troche na stos.
    Ogowlnie, wskazniki do funkcji to bardzo uzyteczna rzecz, np. tablica
    takich wskaznikow zastepuje swietnie skomplikowane if czy switch no i
    mozna zmieniac je podczas dzialania programu

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: