die normalen 8bit atmels haben ein Global Interrupt Flag dass man mit cli() für clear und sei() für set enabled steuert
wenn man den AVRGCC von Atmel unter Eclipse einsetzt (im Markteplace nach dem AVRPlugin suchen, ist sehr leicht einzurichten) kann man ISRs einfach so schreiben:
Code:
ISR(<ISR_Vector_Name>)
{
//mein code
}
er fügt automatisch beim compilieren den prolog und epilog hinzu, der zum einen das GI-Flag sperrt bzw. am Ende freigibt und das auslösende Interrupt Flag für diesen Interrupt Vector löscht.
bei den STMs muss man das auslösende Flag meist selber löschen, je nach peripherie, setze die auch nicht gerne ein.
Was den Betrieb angeht, die Tinys haben einen internen RC Oszi (Default Einstellung bei den Fuses, eine Art extern programmierbares Config Register) einen externen brauchst du in der Regel für solch einfache Anwendungen nicht (auch die Aruinos können ohne externne Oszillator auskommen, aber man muss die Fuse mit einem Programmiergerät vorher umschalten und der interne RC ist auch nicht sehr genau was die Kalibirierung angeht! Wie gesagt unbedeutend für solch einfache Anwendungen aber blöd bei präzisen Projekten)
Lesezeichen