AVR-GCC ISR in ASM

Gast #2701387
Lesenswert?

Hallo Leute,

ich möchte einen ISR möglichst effektif in ASM abarbeiten lassen. Das 
restliche Programm ist in C geschrieben.

Passieren soll folgendes:
pro PIN an 2 Ports zähle ich einen Counter herunter und setze ihn sofern 
er == 0 ist wieder auf seinen Startwertund toggle den PIN. 
(Frequenzerzeugung)
Ließe sich zwar auch mit dem eingebauten Frequenzgenerator lösen, dabei 
kann ich zwar größere Frequenzen effektiver nutzen aber nicht 
gleichzeitig 16+ verschiedene Frequenzen ausgeben.

Also kurz:
Wie kann ich in einem sonst in C geschriebenen Programm die ISR in ASM 
schreiben ohne das der avr-gcc etwas davor schiebt.

Danke euch !

SukApx
Gast #2701390
Lesenswert?

Kopiert aus dem Code vom zabex'schen Tablettenwecker, sollte das Prinzip 
verdeutlichen.
1
void  __attribute__ ((naked)) TIMER1_COMPA_vect(void){
2
  asm("in  r0, 0x3f"  );    //Status sichern
3
  asm("inc r3"       );    //tic++;
4
  asm("out  0x3f, r0");    //Status wiederherstellen
5
  asm("reti         ");
6
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren