PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere (unabhängige) ADC-Eingänge am 16F876 benutzen?



PICBeginner
06.03.2009, 18:07
Hallo, Ihr Assembler-Experten da draußen - könnt Ihr mir helfen?
Bin blutiger PIC-Anfänger und komme hier nicht weiter. Ich will mit einem 16F876 3 unabhängige Analogspannungen über ADC auswerten und u.a. ein PWM-Signal ausgeben. Habe das ADC-PWM-Beispiel von sprut (so gut ich konnte) für erstmal 2 ADC-Eingänge modifiziert, wobei ich zu Testzwecken einen Wert nach PORTB und den anderen an den PWM-Ausgang ausgebe. Ich hätte gerne, dass beide Werte unabhängig voneinander wären, aber das sind sie nicht! Ich klemme einen ADC an Masse, den anderen an eine variable Spannung - und sowohl PORTB als auch der PWM ändern sich!
Könnte sich mal bitte jemand den Code im Anhang ansehen? Wäre echt super. Ich bin am Verzweifeln. Halte auch ein (vorsichtiges) Kopfwaschen aus.

(Variable time -> PORTB, Variable bright -> PWM)

the_Ghost666
06.03.2009, 21:54
Moin,
Ich habe dein File mal eben im Simulator von MPLAB angesehen, das ist sehr seltsam, denn dort funktioniert dein Code eigentlich. Ich habe brakepoints an den Punkten gesetzt, wo die Variablen zugegriffen werden, d.h. wenn das AD-Ergebnis vorliegt, hab dann Werte in ADRESH geschrieben und diese wurden auch richtig an bright und time, und danach auch richtig an CCPR1L und PORTB übergeben.

Du versuchst das direkt in ner fertigen Schaltung oder? Schonmal geprüft, ob vielleicht eine Verbindung zwischen den Pins exisitiert, ne kleine Brücke aus nem Spritzer Zinn oder Stück Litze? Ein bischen Schwankung ist bei nem AD-Wandler normal, aber eigentlich sollte es auf jeden Fall auf das niedrigste Bit genaus ein.
Hast du einen Schaltplan, wenn du es in Hardware testest?
In welchem Wertebereich ändern sich die Ausgangswerte? Wie lässt du sie dir anzeigen?

PICBeginner
07.03.2009, 13:26
Hallo the_Ghost666,
vielen Dank für Deine Mühe. Habe gerade das Problem gelöst. Typischer Anfängerfehler (denke ich) - nach dem Schalten der Eingänge braucht der ADC etwas Zeit, um wieder loslegen zu können. :oops:

Nach den 3 ADCHSs ein 1ms Päuschen, und schon klappt's. #-o

Trotzdem nochmal vielen Dank. Gut zu wissen, dass man nicht allein im Regen steht mit der modernen Technik.

Nur der Vollständigkeit halber:

- Benutze "Hardware-Testschaltung" auf Steckboard 1K2V (Reichelt)
- Eingangsspannungen kommen von Potis - "Enden" an VDD und VSS
- Anzeigen über 1k Widerstände und low-current-LED (Reihenschaltung, klar)
- Takt von 4-Pin 4Mhz-Quarz-Oszillator

Die endgültige Schaltung wird natürlich klassisch verlötet.

the_Ghost666
07.03.2009, 13:31
Achso, du hast nur einmal bis 256 gezählt, also vielleicht 500 Befehle pause bei 4MHz.
Der Nachteil am Simulator ist natürlich, dass man sowas nicht unbedingt sieht. Aber der grundlegende Algorithmus klappt, sehr gut!