ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

21

Sonntag, 17. Oktober 2010, 09:22

Hallo Thomas,
meine Vorfreude über die gelungene Programm. der 12f 675 ist getrübt.
Beim Test auf der Hardware mußte ich feststellen, daß der Pieper sofort
nach Anlegen der Versorg. im intervall zu piepen anfing. Wobei
der Beginn im Testmodus stattfand, d.h. er darf erst dann piepen, wenn
ich die Taste "Test" betätige.
Alles nochmal auf der Karte durchgeklingelt, einen 629 drauf, und alles
läuft ok!
Den 675 drauf und Messungen an den GP0 bis GP5 ergaben folgendes:
Versorg. an Pin1 = 4,86 V
an GP3 = 4,86 V (Taste Reset über 10K hochgebunden)
an GP1 = 1,03 V (Taste Test)
an GP4 = 0,62 V (S1)
an GP0 = 0,48 V (S2)
an GP5 = 4,86 V (S3)....komisch!
GP2 =Output (H/L)
Beim 629 liegen alle auf 4,86 Volt.
Ich habe gelesen und nochmal gelesen, ob vielleicht in meinem Qelltext
ein Fehler sich eingeschlichen hat....nichts!
Die Vorbereitung sieht so aus:
movlw 0x3F
movwf CMCON
bsf STATUS,RP0
errorlevel -302
movlw B'111011'
movwf TRISIO
movlw B'110011'
movwf WPU (GP0, 1, 4, 5 mit internen Hochziehwiderst. programm.)
bcf OPTION_REG,7
call 0x3FF
movwf OSCCAL
bcf STATUS,RP0
errorlevel +302
clrf GPIO
alle 675 zeigen diesen Fehler, beim Übersetzen trat kein Fehlerhinweis auf.
Jetzt steh ich erst mal wieder auf dem Schlauch!
Das WPU-Register in Bank1 hat nach dem Datenblatt Güldigkeit für beide
Typen 629 / 675.
Was könnt ich nur falsch gemacht haben. Auffallend ist, daß mein Messen
die Werte leicht absinken.
Grüße
Rolf

22

Sonntag, 17. Oktober 2010, 15:18

Hallo Rolf,

vermutlich hast Du das ANSEL Register nicht initialisiert. Dieses Register existiert nur beim 675, da es zur A/D-Wandler Funktion gehört, und nach einem Reset sind alle potentiellen A/D-Wandler Eingangspins auf "analoger Eingang" geschaltet. Daher funktionieren die Pins GP0, GP1,GP2 und GP4 dann nicht als Digitale I/O.

Lösung:
Zur Initialisierung/Vorbereitung das Register ANSEL (befindet sich in Bank 1) löschen, also z.B.:

Quellcode

1
2
3
4
5
6
7
8
bsf STATUS,RP0
errorlevel -302
clrf ANSEL
movlw B'111011'
movwf TRISIO
movlw B'110011'
movwf WPU (GP0, 1, 4, 5 mit internen Hochziehwiderst. programm.)
usw....


Grüße,

Thomas

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

23

Dienstag, 19. Oktober 2010, 09:34

Hallo Thomas,
dieses Ansel Register war der Grund, alle Ausgänge liegen jetzt auf
ca. 5 Volt und jetzt arbeitet es wie gewollt.
Beim nochmaligen Programmieren der 675 habe ich
call 0x3FF
movwf OSCCAL
heraus genommen

Danke nochmals

und viele Grüße

Rolf