Gast
#688000
Hallo, ich bin absoluter anfänger! Ich habe mir ein LPC2294 board von Philips angeschafft und zusätzlich noch eine erweiterung, mit schaltern, LEDs, Poti, motor,... Ich habe nun ein Programm geschrieben in der IDE Keil. Diese soll die Spannung am AD Converter messen und je nachdem wie hoch die Spannung ist, verschiedene LEDs zum leuchten bringen. Wenn ich im debug mode nach dem Fehler suche, kann ich sehen, dass das Programm gar nicht in die main methode springt. Es bleibt vorher stehen, am SWI_Handler. Hat jemand eine Idee an was dies liegen könnte? Danke im Vorraus und Gruß Timo Hier der Quellcode: #include <lpc22xx.h> // LPC2200 definitions #include <stdio.h> // standard I/O .h-file #define VREF 3,6 unsigned int val; unsigned int chan; extern void init_serial (void); int main(void) { init_serial(); // Initialize Serial Interface /* Setup the A/D converter */ IODIR1 = 0x00FF0000; // P1.16..23 defined as Outputs VPBDIV = 0x02; // Set the Pclk to 30 Mhz ADCR = 0x00210601; // Setup A/D: 10-bit AIN0 @ 3MHz while(1) { ADCR |= 0x01000000; // Start A/D Conversion while ((ADDR & 0x80000000) == 0); val = ((ADDR >> 6) & 0x03FF); // Extract the A/D result chan = ((ADDR >> 24) &0x0007); // Channel (should be 0) printf ("Digital Value %4u = %01u.%04u Volts\r", (unsigned) val, (unsigned) (val * VREF) >> 10, (unsigned) ((val VREF 10000UL) >> 10UL) % 10000); //Digital value: LED ON IODIR1 = 0x00FF0000; if ( val <= 30 ) { // 0 Volt; IOCLR1 = 0x00FF0000; } else if ( val <= 169 ) { IOSET1 = 0x00010000; } else if ( val >= 303 ) { IOSET1 = 0x00030000; } else if ( val >= 414 ) { IOSET1 = 0x00070000; } else if ( val >= 552 ) { IOSET1 = 0x000F0000; } else if ( val >= 690 ) { IOSET1 = 0x001F0000; } else if ( val >= 828 ) { IOSET1 = 0x003F0000; } else if ( val >= 966 ) { IOSET1 = 0x007F0000; } else if ( val >= 1104 ) { IOSET1 = 0x00FF0000; } IOCLR1 = 0x00FF0000; } }