Bonjour
J'aimerais appeler une fonction "test" quand une interruption se créé sur le vecteur 16 (timer 0 overflow) sur l'atmega 328p:
Je ne sais pas comment en langage c faire un jmp (asm) vers ma fonction test quand il y a interruption.Code:#define DDRD (*(volatile unsigned int*) (0x2a)) #define PORTD (*(volatile unsigned int*) (0x2b)) #define SREG (*(volatile unsigned int*) (0x5f)) #define TCCR0B (*(volatile unsigned int*) (0x45)) #define TIMSK0 (*(volatile unsigned int*) (0x6e)) #define OCR0A (*(volatile unsigned int*) (0x47)) #define TIMER0_OVF_vector _VECTOR (16) void test() { DDRD = 0b00000001; PORTD = 0b00000001; } int main() { TCCR0B = 0b00000011; TIMSK0 = 0b00000001; OCR0A = 0b11111001; SREG |= 0b100000000; while (true) { } return 0; }
J'ai réussi à transformer:
assembleur en l'équivalent c:Code:#define DDRD 0x0a
Je pense que c'est donc possible également en c pour les interruptions, j'ai commencé avec ceci:Code:#define DDRD (*(volatile unsigned int*) (0x2a))
Normalement il y a une interruption qui se créé toutes les millisecondes avec les registres que j'ai changé (TCCR0B, TIMSK0, OCR0A, et SREG), mais évidement le but est d’appeler une fonction pour pouvoir exécuter des choses, incrémenter un int par exemple...Code:#define TIMER0_OVF_vector _VECTOR (16)
Pouvez-vous m'aider s'il vous plaît?
-----