Datum: 08.04.2008 15:17
Hallo. Ich benutze einen MSP430 F2272 Ich hab ein riesen Problem mit meinem AD Wandler. An P3.7 hängt ein Poti. Wenn ich nun das erste mal das Programm durchlaufe bekomme ich einen Wert in das ADC10MEM. Drehe ich jedoch beim Poti ändert sich der Wert darin nicht. Auch nicht wenn ich das Programm beende, am Poti drehe und die Debbug Session wieder starte. ich bekomme immer den Wert ADC10MEM 0x03A4. Was ist an meinem Programm falsch? Danke im voraus. Lg Waldner Günther
#include <msp430x22x2.h> void wait(unsigned int i); // prototypen int main(void); int main(void) { WDTCTL = WDTPW + WDTHOLD; // watchdog aus P1DIR=0xFF; // port 1 = output (8 LEDs) P3DIR=0x00; // port 3 = input Ppotis) P1SEL=0x00; // port 1 komplett als GPIO nutzen P3SEL=0xC0; // P3.6 und 3.7 als A/D-Wandler benutzen, den Rest als GPIO P1IE=0x00; // interrupt ausmachen P1OUT=0xFF; // initial alle LEDs aus (low aktiv) ADC10CTL0 = ADC10ON+ADC10SHT_0+REFON+REF2_5V; // ADC10 anschalten, Sample Time auf 4*ADC10CLKs,referenz auf 2,5V setzen ADC10CTL0 |= ENC; // jetzt anfangen ... ADC10CTL1 = INCH_7+SHS_3+CONSEQ_2; // P3.7, TA2 trigger sample start , Repeat single channel Modus ADC10AE0 |= BIT7; // P3.7 ADC10 option select for(;;) { // infinite loop ADC10CTL0 |= ADC10SC; // konvertierung durchfuehren wait(10000); if (ADC10MEM <= 0x0A4) P1OUT=0x00; // alle LEDs an else P1OUT=0xFF; // alle LEDs aus } } void wait(unsigned int i) // delay function { unsigned int j; for(j=0;j<i;j++); } |
Datum: 08.04.2008 15:29
Könnte das gute alte ENC rücksetz Problem sein.
Nach der Wandlung bzw. vor neuer Einstellung:
ADC10CTL0 &= ~ENC;
> wait(10000);
Warum nicht Abfrage des Busy Bit?
Datum: 08.04.2008 19:31
for(;;) { // infinite loop ADC10CTL0 |= ADC10SC; // konvertierung durchfuehren wait(10000); ADC10CTL0 &= ~ENC; if (ADC10MEM <= 0xFFF) P1OUT=0x00; // alle LEDs an else P1OUT=0xFF; // alle LEDs aus } |
Hab das jetzt mal so eingebaut. Ändert aber leider nichts an der Situation. Ist sonst etwas falsch am Programm??? Das Potentiometer hat 100k und liegt an einer Spannung von 3.3V.
Datum: 09.04.2008 09:04
> und liegt an einer Spannung von 3.3V. Bei einer Ref.Spannung von 2,5V natürlich etwas gefährlich. > Ist sonst etwas falsch am Programm??? Was machst du denn eigentlich mit "TA2 trigger sample start". Tatsächlich Timer gesteuert? > Repeat single channel Modus Bei Repeat Single Channel modus läuft der ADC von sich aus, warum startest du die Konvertierung überhaupt ständig neu?
Datum: 09.04.2008 09:46
Ich benutze das Board der FTKW Leipzig. Da ich Anfänger auf dem Gebiet bin hab und mit dem beiligenden ADC Programm zum Board nicht viel anfangen kann habe ich mich im Internet ein wenig umgesehen, und ein Bsp zum ADC12 auf meinen umgeschrieben. Und das TA2 Trigger Sample start hab ich aus dem beiligenden Programm Leider konnte ich nirgends ein einfaches Programm finden das den ADC10 verwendet und auch verständlich ist. Anbei hänge ich einmal die Beschaltung der Potentiometer. Danke für den Tipp mit dem starten. Ich werde es aus der Schleife entfernen. Hoffe ihr könnt mir weiterhelfen. Danke Günther
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel



