Пример? Ну, в общем, вот такой вызов
====GCC-RTOS.с
ISR(ADC_vect)
{
SetTask(Convert_OUT);
}
Это дало:
+000000E9: 921F PUSH R1 Push register on stack
+000000EA: 920F PUSH R0 Push register on stack
+000000EB: B60F IN R0,0x3F In from I/O location
+000000EC: 920F PUSH R0 Push register on stack
+000000ED: 2411 CLR R1 Clear Register
+000000EE: 932F PUSH R18 Push register on stack
+000000EF: 933F PUSH R19 Push register on stack
+000000F0: 934F PUSH R20 Push register on stack
+000000F1: 935F PUSH R21 Push register on stack
+000000F2: 936F PUSH R22 Push register on stack
+000000F3: 937F PUSH R23 Push register on stack
+000000F4: 938F PUSH R24 Push register on stack
+000000F5: 939F PUSH R25 Push register on stack
+000000F6: 93AF PUSH R26 Push register on stack
+000000F7: 93BF PUSH R27 Push register on stack
+000000F8: 93EF PUSH R30 Push register on stack
+000000F9: 93FF PUSH R31 Push register on stack
72: SetTask(Convert_OUT);
+000000FA: EF8D LDI R24,0xFD Load immediate
+000000FB: E091 LDI R25,0x01 Load immediate
+000000FC: 940E02F2 CALL 0x000002F2 Call subroutine
73: }
+000000FE: 91FF POP R31 Pop register from stack
+000000FF: 91EF POP R30 Pop register from stack
+00000100: 91BF POP R27 Pop register from stack
+00000101: 91AF POP R26 Pop register from stack
+00000102: 919F POP R25 Pop register from stack
+00000103: 918F POP R24 Pop register from stack
+00000104: 917F POP R23 Pop register from stack
+00000105: 916F POP R22 Pop register from stack
+00000106: 915F POP R21 Pop register from stack
+00000107: 914F POP R20 Pop register from stack
+00000108: 913F POP R19 Pop register from stack
+00000109: 912F POP R18 Pop register from stack
+0000010A: 900F POP R0 Pop register from stack
+0000010B: BE0F OUT 0x3F,R0 Out to I/O location
+0000010C: 900F POP R0 Pop register from stack
+0000010D: 901F POP R1 Pop register from stack
+0000010E: 9518 RETI Interrupt return
Забросило дааалеко не все регистры ,а только те что активно юзаются по ходу пьессы.
SetTask находится
в EERTOS.c которая подключена просто к проекту (AVR Studio сама сделала мейк, я лишь подцепил исходник прям через среду, добавив в дерево проекта.)
Хидеры это хидеры, сорцы это сорцы. Кода в хидерах нет. Про инклюд я криво выразился. Эт ассемблерные привычки
Вот кусочек мейка:
## Include Directories
INCLUDES = -I"D:\Coding\AVR\GCC-RTOS\."
## Objects that must be built in order to link
OBJECTS = GCC-RTOS.o EERTOS.o HAL.o EERTOSHAL.o VM.o
## Objects explicitly added by the user
LINKONLYOBJECTS =
## Build
all: $(TARGET) GCC-RTOS.hex GCC-RTOS.eep GCC-RTOS.lss size
## Compile
GCC-RTOS.o: ../GCC-RTOS.c
$(CC) $(INCLUDES) $(CFLAGS) -c $‹
EERTOS.o: ../EERTOS.c
$(CC) $(INCLUDES) $(CFLAGS) -c $‹
HAL.o: ../HAL.c
$(CC) $(INCLUDES) $(CFLAGS) -c $‹
EERTOSHAL.o: ../EERTOSHAL.c
$(CC) $(INCLUDES) $(CFLAGS) -c $‹
VM.o: ../VM.c
$(CC) $(INCLUDES) $(CFLAGS) -c $‹