Hallo alle zusammen, Ich habe in meinem Programm ein Denkfehler. Ich will zwei Kanäle für AD-Wandler benutzen, und sie über Interrupt steuern. Mit P6SEL |= 0x03; versetze ich die Pins 6.0 und 6.1 in ADC Modus. dann ADC12CTL0 = REF2_5V + REFON + SHT0_2 + ADC12ON + MSC; Referenzspannung 2,5 Volt und ich schalte ADC an. dann benutze ich ADC12CTL1 = SHP ; SHP Modes und konfiguriere beide MEM-Register auf verschiedene Eingänge: ADC12MCTL0 = SREF_1 + INCH_0; // Kanal 1 ADC12MCTL1 = SREF_1 + INCH_1; // Kanal 2 und schalte AD-Wandler an. Das Problemm ist, dass am MEM1 nichts ankommt. woran könnte es liegen? was mache ich falsch??? Ich danke Ihnen für die Hilfe schon mal im voraus.
du mußt dem Wandler in ADC12CTL1 auch noch sagen das er mehrere Wandlungen machen soll und in ADCMCTL1 sollte er noch erfahren das dieses die letzte Wandlung ist ( + EOS). Es gibt von TI auch Beispiele für alle möglichen ADC-Sequencen in C. Nutzt du den MSP-GCC so findest du diese im CVS unter Examples.
was ist MSP-GCC??? ich dachte, dass der Prozessor sobald ein Interrupt kommt das Analogsignal wandelt und dann wieder wartet. wie kann ich denn ihm sagen, dass er mehrere Wandlungen macht??? danke
MSP-GCC = Gnu C Compiler http://www-s.ti.com/sc/techzip/slac015.zip ... da sind unter anderem 11 Beispiele in C für den ADC12 drin.
Danke für die Beispiele. Eine Grundlegende Frage: Wenn ich einfach ADC12MEM1 benutzen will, dann reicht es ja, wenn ich folgendes Konfiguriere: P6SEL |= 0x01; // Kanal 1 ADC12CTL0 = REF2_5V + REFON + SHT0_2 + ADC12ON ; ADC12CTL1 = SHP ; ADC12MCTL1 = SREF_1 + INCH_1; ADC12IE = 0x01; ADC12CTL0 |= ENC; WDTCTL = WDT_ADLY_250; IE1 |= WDTIE; _EINT(); for (;;) { _BIS_SR(LPM0_bits); _NOP(); sprintf(rf_buf,"%d\r",adc2); // rf_poi = rf_buf; } } interrupt [WDT_VECTOR] void wdt_isr(void) { ADC12CTL0 |= ADC12SC; } interrupt[ADC_VECTOR] void ADC12ISR (void) { adc2 = ADC12MEM1; // Kanal 2 _BIC_SR_IRQ(LPM0_bits); } das Programm läuft nämlich auch nicht. und da frage ich mich, welchen Konfigurationsfehler mache ich dabei. Danke für den Hinweis. Schönen Tag noch
du solltest dem ADC auch sagen welches ADC12MEM-Register er benutzen soll: ADC12CTL1 = CSTARTADD_1 + SHP ; Die ADC12MEM-Register sind den Eingängen ja NICHT fest zugeordnet. ---------------------------------------- (slau049e.pdf) ADC12CTL1/CSTART Bits: Conversion start address. These bits select which ADC12 ADDx 15-12 conversion-memory register is used for a single conversion or for the first conversion in a sequence. The value of CSTARTADDx is 0 to 0Fh, corresponding to ADC12MEM0 to ADC12MEM15. ---------
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.