PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit 12F675



PIC_Newbie
12.02.2006, 23:36
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

stegr
13.02.2006, 00:45
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

PIC_Newbie
13.02.2006, 01:25
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

tux1
13.02.2006, 08:59
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

PIC_Newbie
13.02.2006, 16:13
danke,
nachdem ich das OPTION_REG beschrieben hab geht es