12F675 und ADC
Freitag, 18. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  AD-Wandler (Assembler)  |  12F675 und ADC « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: 12F675 und ADC  (Gelesen 3186 mal)
 
Thorsten
Gast
« am: Juni 04, 2005, 22:27:07 »

Hallo an alle,
ich komme nicht weiter.
Eigentlich will ich nur den Zählerwert für eine Zeitschleife über den AD GPIO0 ändern aber es will nicht.
Was mache ich falsch?
Kann mir jemand die richtige Konfiguratin verraten? Alles andere arbeitet...

Danke und eine schöne Nacht noch

Thorsten
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: Juni 05, 2005, 06:53:22 »

Hallo Thorsten,

Zitat
Was mache ich falsch?

Ohne den relevanten Code (Initialisierung des A/D-Wandlers, Start der Wandlung, Auslesen des Ergebnisses ...) kann man diese Frage kaum beantworten.

Viele Grüße

Bernd
Gespeichert

Thorsten
Gast
« Antworten #2 am: Juni 05, 2005, 08:40:32 »

Ja das hatte ich mir schon gedacht nur ich war zu müde..
Hier nun der Code:

Code:

bsf     STATUS,RP0 ; Auswahl Bank 1
call 0x3FF ; laden des Calibrierungswertes aus der lesten Speicherstelle
movwf   OSCCAL ; schreiben des Calibrierungswertes für den internen Takt
movlw   B'00000001'     ; left, Analog input 0, AD on
movwf   ADCON0
movlw B'00110001' ; FOCS 16 und AN0
movwf ANSEL
  clrf CMCON     ; alle Comparatoren ausschalten
clrf VRCON
movlw B'00001111' ; Pins Konfiguriren
movwf TRISIO ; schreiben der Werte
bcf     STATUS,RP0 ; Auswahl Bank 0
bsf     INTCON,GIE       ; Disable Global ints
clrf GPIO

Nun die Schleife des lesens der AD Werte.
Das läuft auch, nur ich bekomme keine verschidenen Werte...
Code:

BLINK
BSF     ADCON0,1     ; ADC starten
ADCS
        BTFSC   ADCON0,1     ; ist der ADC fertig?
        GOTO   ADCS           ; nein, weiter warten
movlw D0_AN ; setzen der gewünschten LED durch definierte Maske
movwf GPIO ; schieben des geladenen Wertes ins Ausgangs (GPIO) - Register
movlw D'255' ; Dezimalwert für die Zeitkonstante zur Übergabe
movwf help ; Schieben des Wertes in die Variable Help
CALL PAUSE250ms ; Aufruf des Unterprogrammes Pause250ms
bcf     STATUS,RP0 ; Auswahl Bank 0
movlw D1_AN ; setzen der gewünschten LED durch definierte Maske
movwf GPIO ; schieben des geladenen Wertes ins Ausgangs (GPIO) - Register
movfw ADRESH ; Dezimalwert für die Zeitkonstante zur Übergabe
movwf help ; Schieben des Wertes in die Variable Help
CALL PAUSE250ms ; Aufruf des Unterprogrammes Pause250ms
GOTO BLINK

Das Blinken arbeitet..

Die Code Tag habe ich nun ein gefügt. Bei mir in MPLAB sind die Zeilen gleich nur hier nicht, wodran liegt das?

Gruß und Danke für die Hilfe
Thorsten
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #3 am: Juni 05, 2005, 09:26:45 »

Das Register ADCON0 ist in Bank0, bei Deiner Initialisierung ist aber Bank1 ausgewählt ("movwf ADCON0" schreibt nach ANSEL).

Zitat
Die Code Tag habe ich nun ein gefügt. Bei mir in MPLAB sind die Zeilen gleich nur hier nicht, wodran liegt das?

Ich bin mir nicht sicher, aber vermutlich liegt es daran, daß in Deinem Code "Tabs" und "Spaces" gemischt sind. Da die Foren-Software eine andere TAB-Größe als MPLAB verwendet, können Zeilen "ausreißen". Ist aber nicht weiter schlimm, da der Code trotzdem gut lesbar bleibt.

Viele Grüße

Bernd
Gespeichert

Thorsten
Gast
« Antworten #4 am: Juni 05, 2005, 09:45:10 »

Danke,

es war wohl gestern doch etwas zu spät.
Das habe ich total übersehen.

Gruß und schönes Wochenende
Thorsten
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.043 Sekunden mit 18 Zugriffen.
 
Top! Top!