eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaWinAvr tablica wskaźników funkcji jak?Re: WinAvr tablica wskaźników funkcji jak?
  • Data: 2009-04-21 20:07:30
    Temat: Re: WinAvr tablica wskaźników funkcji jak?
    Od: Zbych <a...@o...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Zbych pisze:
    > azazel pisze:
    >
    >> udało mi sie stworzyc taka tablice i wywoływanie po numerze z pamieci ram
    >> ale nie wiem jak to umiescic w pamieci flash i uruchamiac procedury
    >> majac tylko pozycje
    > [...]
    >> Może ktoś z szanownych grupowiczów wie
    >> jak to umieścić i jak wywołac?
    >
    > Tablicę wskaźników do funkcji umieszczasz we flashu tak samo jak każdą
    > inną stałą - dodając PROGMEM.
    > http://www.nongnu.org/avr-libc/user-manual/group__av
    r__pgmspace.html
    >
    > Wywoływanie jest trochę bardziej upierdliwe. Najpierw musisz obliczyć
    > adres wskaźnika we flashu, potem podać adres do makra pgm_read_word i
    > dopiero mając wskaźnik możesz użyć go do wywołania funkcji.
    >

    Tutaj masz przykład:

    #include <avr/io.h>
    #include <avr/pgmspace.h>


    void a( void ){
    PORTC = 0xFF;
    }

    void b( void ){
    PORTC = 0x00;
    }


    typedef void (*fp)(void);

    const PROGMEM fp Tab[]={&a,&b};


    void main( void ){

    ((fp)pgm_read_word(&Tab[0]))();
    ((fp)pgm_read_word(&Tab[1]))();
    }

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: