Program v C, obsluha přerušení v ASM

Dobrý den, prosím o radu s následujícím problémem: v ATMEL Studiu 6.2 jsem napsal program v jazyce C, obsluhu přerušení v asembleru. Nevím však, jak má v céčku vypadat odkaz na obsluhu přerušení tak, aby překladač vložil na patřičnou adresu správný skok na obsluhu přerušení. Může mi někdo poradit? Zatím se mé hledání této informace ani experimentování nesetkalo s úspěchem. Děkuji.

Hledání nezabralo ani 10 vteřin …

google.cz/webhp?tab=ww&ei=- … 0avr%20isr

Je to tam, musíš hledat…

A assemblerovský kód holt musíš vložit do patřičné rutiny.

Jenže to není vždy možné.

Jiná varianta je, že assemblerovský kód vložíš do souboru s příponou “.s”.
A pak ji zavoláš jako funkci.
Nejlépe je to i s příklady popsáno tady:
msoe.us/taylor/tutorial/ce2810/candasm

Keďže nepíšeš aký procesor , aké prerušenie, je to naozaj ťažké konkrétne poradiť, preto ti môžem len odporučiť prvý odkaz z googla od Balu-ho (sk klavesnica, a neviem, kde sa teraz dáva krúžok na u), kde je tabuľka pre skoro všetky procesory AVR a všetky prerušenia, ake tam môžu byť. Takže vieš kde, už to len nájsť…

Obsluhu přerušení napiš do souboru *.S (s velkým S !) a soubor přidej do “Source files”.

Příklad pro blikající ledku:

Soubor temp.c

[code]// mega88, 8 MHz
#include <avr/io.h>
#include <avr/interrupt.h>

int main (void)
{
DDRB = 0xff; // all outputs
TCCR1B = 4; // předdělič 256
TIMSK1 = (1<<TOIE1); // enable interrupt timer1_ovf

sei();

while (1)
{
}
}[/code]

Soubor temp1.S

[code]#include <avr/io.h>

.global TIMER1_OVF_vect

TIMER1_OVF_vect:
sbi _SFR_IO_ADDR(PINB), 1 // invertuj PORTB.1 (funguje jen u novějších typů)
reti[/code]

Jiná možnost:[code]// mega88, 8 MHz
#include <avr/io.h>
#include <avr/interrupt.h>

ISR (TIMER1_OVF_vect, ISR_NAKED)
{
asm volatile (“sbi 0x03, 1”); // invertuj PORTB.1
asm volatile (“reti”);
}

int main (void)
{
DDRB = 0xff; // all outputs
TCCR1B = 1; // /256
TIMSK1 = (1<<TOIE1); // enable interrupt timer1_ovf
sei();

while (1)
{
}
}[/code]

Děkuji všem za cenné rady, zvláště pak uživateli AB, neboť podle jeho návodu vše perfektně funguje. Ještě jednou díky.