Gast
#170206
Hallo, mache gerade meine ersten Schritte mit einem ARM-MC. Alles funktioniert soweit super, nur die Nutzung von Interrupts bereitet Probleme. Sobald ich diese global aktiviere, schießt sich der Controller ab. void adc_isr (void) _attribute_ ((interrupt ("IRQ"))); void adc_isr (void) { VICVectAddr = 0; unsigned int temp = ADDR; } void adc_init (void) { VICIntSelect &= ~(1<<18); VICVectCntl1 = (1<<5) | 18; VICVectAddr1 = (unsigned int) adc_isr; VICIntEnable = (1<<18); } Löse ich jetzt eine AD-Wandlung aus und gebe vorher die Interrupts (IRQ) global frei dann verabschiedet sich das Teil. unsigned int adc_get (unsigned int pin) { ADCR = (1<<pin) | (ADCLK_DIV<<8) | (1<<21) | (1<<24); while (!(ADDR & (1<<31))); return ((ADDR>>6) & 0x03FF); } Habe analog schon probiert mit dem Timer0 zyklisch Interrupts erzeugen zu lassen, führt natürlich zum selben Ergebnis ... Jemand eine Idee?