Gast
#589790
Hallo Ich benutze einem ATMEGA32. Dort möchte ich folgendes implementieren: Wärend der Initialisierung soll ein Array im S_RAM implementiert werden. Das Array soll 400 Elemente a unsigned int besitzen. Im Hauptprogramm soll dann das Array auf einen DA-Wandler ausgegeben werden. Hierzu habe ich eine Funktion geschrieben, der in die 1. Adresse des Arrays übergebe. Nun soll der Inhalt des Arrays per Interrupt geändert werden. In der Interruptserviceroutine soll eine Funktion aufgerufen werden, die auf das Array zugreift und die Werte verändert. Im Hauptprogramm werden dann die veränderten Werte wieder ausgegeben. Ich habe im Tutorial gelesen das man hierzu den Befehl "volatile" benutzt, jedoch habe ich es damit nicht hinbekommen Hier mein Quellcode: //Initialisierung des µC volatile unsigned int spiegelpositionen[400]; void main(void) { // globale Interrupts deaktivieren #asm("cli") daten_auf_da_wandler_ausgeben(&spiegelpositionen[0]); //globale Interrupts aktivieren #asm("sei") delay_ms(100); }; } / External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // hier will der Compiler nicht "undefined symbol spiegelpositionen" neue_daten_ins_array_schreiben(&spiegelpositionen[0]); } Was mache ich falsch, oder wie kann ich der Unterruptserviceroutine die Adresse des Arrays übergeben Grüsse Sebastian