avr-gcc i gen przebiegu

Jul 08, 2005 2 Replies

Witam. Jako, że jestem początkujący w avr-gcc proszę o wyrozumiałość i pomoc. Zadeklarowałem sobie w pamięci programu następującą tablicę:



const unsigned char sintab[512] PROGMEM = {128,129,...tu pozostałe wartości...,126,127};



Teraz chciałbym cyklicznie w obsłudze przerwania od timera wysyłać te wartości na jeden z portów mikrokontrolera (generować przebieg okresowy). Proszę o podpowiedź jak mogłaby wyglądać procedura takiego przerwania. Nie ukrywam, że zależy mi na jak najkrótszym kodzie. Procesor ATmega 162.



TIA Antek


Czy myślicie że takie rozwiązanie jest ok:

SIGNAL(SIG_OUTPUT_COMPARE2) { static unsigned int index=0;

index&=~(1111111<<9); PORTC=pgm_read_byte(sintab+index++); }

powinno dzialac, tylko nie moze sie nazywac 'index', ale zapisz moze lepiej jawnie: index &= 0x01FF; lub nawet index &= (512-1);

Chcialem zasugerowac:

*((char *)&indx+1) &= 1 ;

ale .. wyglada na to ze gcc lepiej sobie radzi z poprzednimi dwoma.

Zabawne te kompilatory :-)

J.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required