-
-
Neuer Benutzer
Öfters hier
Problem mit 12F675
Folgendes Problem:
Ich habe an meinen 12F675 an den Pins 2,3,4 Pull down Widerstände und Vorwiderstände zum Schutz der Eingänge; sowie an den Pins 5,6,7 LED´s mit Vorwiderständen.
Mein Programm in MPLAB sieht so aus:
list p=p12F675
#include <P12F675.INC>
__CONFIG _CP_OFF & _BODEN_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF
i equ 0x20
org 0x00
goto main
org 0x04
init
bcf STATUS,RP0
clrf GPIO
movlw 0x07
movwf CMCON
bsf STATUS,RP0
clrf ANSEL
movlw 0x38 ;5,4,3 als Eingang 2,1,0 als Ausgang
movwf TRISIO
bcf STATUS,RP0 ; Bank 1
call 0x3FF
movwf OSCCAL ; 4-MHz-Kalibrierung
bcf STATUS,RP0 ; Bank 0
return
main
call init
movf GPIO,0
movwf i
btfsc i,3
bsf GPIO,2
btfsc i,4
bsf GPIO,1
btfsc i,5
bsf GPIO,0
goto main
end
Kurz die Funktion:
Wenn Pin 2 high Signal hat soll die LED an Pin 7 leuchten,
wenn Pin 3 high Signal hat soll die LED an Pin 6 leuchten,
wenn Pin 4 high Signal hat soll die LED an Pin 5 leuchten.
So, jetzt hab ich das Problem wenn ich über die Vorwiderstände der Eingänge 5V lege, leuchtet nur die LED an Pin 5 alle anderen sind aus.
Woran könnte das liegen?? Bin für jeden Rat dankbar
-
Erfahrener Benutzer
Roboter Experte
so direkt fällt mir nix auf, aber kann sein dass ich heute abend blind bin 
kannst ja mal die zuordnungen ändern, so dass statt pin 5 der pin 6 oder 7 angehen müssten... wenn se dann angehen, kannste mal die reihenfolge der bit-tests drehen - obwohl das nichts bringen "darf"...
ansonsten muss ich doch mal nen blick ins datenblatt werfen 
MfG
Stefan
-
Neuer Benutzer
Öfters hier
also, bit-tests drehen bringt nix
aber wenigstens gehen die Ausgänge
d.h. es muss irgendwie an den Eingängen liegen, hab grad nochmal meine Platine gecheckt, passt aber alles
-
Neuer Benutzer
Öfters hier
Hey
Also ich bin die ganze Sache mal überflogen, dabei hab ich folgende Probleme entdeckt:
1. Du musst 0x80 ins OPTION_REG schreiben, sonst hast Du interne Pull-ups! Da werden dann die Eingänge nicht mitspielen!
2. Bevor Du den Oszillator kalibrierst wechselst Du nicht wirklich nach Bank 1 (bcf statt bsf)
3. Wenn Du den PIC einmal löscht und danach neu programmierst, wird beim Löschen auch der Code der Zeile 0x3FF gelöscht, sprich: Diese Kalibrierung funktioniert nur einmal. Du müsstest die letzte Zeile vorm ersten Programmieren auslesen und danach "mitprogrammieren".
Am besten Du versuchst es mal ohne Kalibrierung.
4. Ich vermute, dass die LED's auch wieder ausgeschaltet werden sollen, wenn Du den Eingang wegnimmst, und genau diese Automatik fehlt mir in deinem Programm.
Ich hoffe diese Tips helfen Dir, ansonsten musst Du mal genauer ins Datenblatt schauen!
Tux
-
Neuer Benutzer
Öfters hier
danke,
nachdem ich das OPTION_REG beschrieben hab geht es
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen