Guten Tag zusammen. Für ein Studienprojekt muss ich mit dem zigbee kit ez430rf2480 Daten einlesen. Über den integrierten msp430f2274 möchte ich 3 Signale über die AD-Wandler Eingänge A2,A3,A4 kontinuierlich wandeln um sie weitersenden zu können. Alle 3 einzeln und separat zu wandeln und weiterzuverarbeiten klappt einwandfrei, jedoch alle zusammen ist schon schwieriger. Ich denke, dass es mit dem "repeat sequence of channels mode" funktionieren müsste diese zu wandeln und dann zu speichern. Hat jemand einen sample code dafür, denn die von TI scheinen nicht so recht zu passen und ich habe sonst keine gefunden danke im voraus für die antwort
Einfaches Codebeispiel habe ich jetzt nicht zur Hand, die verschiedenen Modi (inkl. Multichannel) sind ausreichend im RefManual zum F2274 beschrieben. Für die Verwendung anderer Module ist's eh gut, sich mit den Manuals auseinanderzusetzen.
Das liegt meist am vergessenen EOS-Bit und Konsorten. Ist nicht schwer und funktioniert prima...wenns dann läuft. Zeig mal deinen Versuch.
ADC10CTL1 = INCH_4 + CONSEQ_3; // A2,A3,A4 repeat multi channel ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE + REFON + SREF_1 + REF2_5V; ADC10AE0 = 0x1C; // P2.2,3,4 ADC option select ADC10DTC1 = 0x40; // number of conversions -> steht so im sample code, aber ich brauch das sampling ja eigentlich in einer endlosschleife. nicht nur wie im beispiel 64 mal ADC10CTL0 &= ~ENC; ADC10SA = 0x200; // Data buffer start ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion ready das ist das Beispielprogramm ein wenig abgeändert, damits zu meinen adc eingängen passt
Hallo Tobias, mit dem F2274 hab ich noch nicht gearbeitet, ich poste mal meine init Funktion für den F449 ev. kannst du dir das so zusammenschnippseln,
1 | void adc_init(void) |
2 | {
|
3 | int16 i; |
4 | |
5 | // Enable A/D channel A3 to A7
|
6 | P6SEL |= BIT3 + BIT4 + BIT5 + BIT6 + BIT7; |
7 | |
8 | // Turn on and set up ADC12
|
9 | ADC12CTL0 = MSC + SHT0_2 + ADC12ON + REF2_5V + REFON; |
10 | ADC12CTL1 = CSTARTADD_0 + SHS_0 + SHP + ADC12DIV_0 + ADC12SSEL_3 + CONSEQ_1; |
11 | |
12 | // Messung xyz
|
13 | // EOS = 0 / VR+ = VREF+(2.5V) VR- = AVSS(GND) / INCH = A3
|
14 | ADC12MCTL0 = SREF_1 + INCH_3; |
15 | // Messung xyz
|
16 | // EOS = 0 / VR+ = VREF+(2.5V) VR- = AVSS(GND) / INCH = A4
|
17 | ADC12MCTL1 = SREF_1 + INCH_4; |
18 | // NTC Temperaturmessung
|
19 | // EOS = 0 / VR+ = VREF+(2.5V) VR- = AVSS(GND) / INCH = A5
|
20 | ADC12MCTL2 = SREF_1 + INCH_5; |
21 | // Akku
|
22 | // EOS = 0 / VR+ = VREF+(2.5V) VR- = AVSS(GND) / INCH = A6
|
23 | ADC12MCTL3 = SREF_1 + INCH_6; |
24 | // xyz
|
25 | // EOS = 1 / VR+ = VREF+(2.5V) VR- = AVSS(GND) / INCH = A7
|
26 | ADC12MCTL4 = EOS + SREF_1 + INCH_7; |
27 | |
28 | ADC12MEM5 = 0x00; |
29 | ADC12MEM6 = 0x00; |
30 | ADC12MEM7 = 0x00; |
31 | ADC12MEM8 = 0x00; |
32 | ADC12MEM9 = 0x00; |
33 | ADC12MEM10 = 0x00; |
34 | ADC12MEM11 = 0x00; |
35 | ADC12MEM12 = 0x00; |
36 | ADC12MEM13 = 0x00; |
37 | ADC12MEM14 = 0x00; |
38 | ADC12MEM15 = 0x00; |
39 | |
40 | // Delay for reference start-up
|
41 | for ( i=0; i<0x3600; i++); |
42 | |
43 | // Enable conversions
|
44 | ADC12CTL0 |= ENC; |
45 | }
|
und mit einem Timer, bzw. im Timerinterrupt starte ich das Sampeln alle x ms
1 | ADC12CTL0 |= ADC12SC; |
vielen dank für die antworten. aber ich versteh den quellcode vom adc12 da leider garnicht recht. die befehle sind scheinbar sehr unterschiedlich zur ansteuerung vom adc10, denn zb. EOS gibts als befehl garnicht oder adc12mtcl
Den ADC12 kannst du mit dem ADC10 garnicht vergleichen. Der ADC10 hat z.B. kein Ergebnisregister zu jedem Channel - du musst die Ergebnisse immer direkt abholen.
aber vom Prinzip her, mach einen Durchlauf, hol die Daten ab und schmeiss den ADC wieder an. Je nach dem was du Messen willst, Timer gesteuert oder halt immer wenn die Wandlung fertig ist.
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.