Je fais mes premiers pas bancaux en dehors de l'IDE Arduino et je n'ai pas beaucoup de succès avec les minuteries / interruptions. Je peux définir une broche pour émettre et allumer une LED avec des registres bien, mais je ne peux pas pour toute ma vie la faire clignoter à l'aide d'une minuterie. J'ai essayé de nombreux tutoriels et suivi de très près la fiche technique Atmel ATmega328.
Utilisation d'un Arduino Uno R3 & Atmel ICE (ISP.) Mon système de développement est Raspbian (Debian) avec la chaîne d'outils GNU AVR (avr-gcc , avr-objcopy, avrdude.) En plus de ne pas avoir de chargeur de démarrage, c'est une carte standard (y compris les fusibles).
Voici mon code actuel:
#include <avr / io.h> # include <avr / interrupt.h>ISR (TIMER0_COMPA_vect) {PORTB ^ = (1 << PB5); // Basculer la broche Arduino # 13} int main (void) {DDRB = (1 << DDB5); // La broche Arduino # 13 est Output cli (); // Effacer les interruptions OCR0A = (caractère non signé) 0xFF; // Comparer le registre A = 255 TIMSK0 = (1 << OCIE0A); // Activer l'interruption pour Comp. Reg. A TCCR0A = (1 << WGM01); // Mode CTC sei (); // Définir les interruptions TCCR0B = (1 << CS02) | (1 << CS00); // Diviser par 1024 Prescaler (GO!) Return 0;}
Je ne sais pas si je ne vois pas quelque chose ou si j'ai mis les registres dans le mauvais ordre mais ça me rend fou.