Forum: Mikrocontroller und Digitale Elektronik Seriell Parallel Wandlung mit PIC 12F629


von Bimbel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche ein eingehendes 8 Bit Signal mit dem PIC 12F629 in ein 
Register zu schreiben.
Im Simulator habe ich allerdings ständig das Problem, dass er die 
Bittest-Befehle nicht richtig umsetzt.

Wäre schön wenn da mal jemand drüber schauen könnte, vielleicht sieht ja 
jemand meinen Fehler.

Vielen Dank schonmal.

von Karl T. (karl43)


Lesenswert?

Hallo, ich mache sowa über das CY, etwa

bcf CY
btfsc GPIO_in
bsf CY
rlf INDATA ,F

etc

von Michael K. (bimbel)


Lesenswert?

Mein Problem ist das die Befehle BTFSC und BTFSS immer so "reagieren" 
als ob eine "0" am Eingang 4 anliegt. Wenn ich den Eingang im Simulator 
manuell auf "1" setzte verändert sich nichts.

Für mich liegt die Vermutung nahe das es eventuell an einer falschen 
Konfiguration oder ähnliches liegt, aber ich finde den Fehler dabei 
einfach nicht.

von karl43 (Gast)


Lesenswert?

Eingänge kannn man nicht setzen, nur Ausgänge, denke ich

von Michael K. (bimbel)


Lesenswert?

ich hab dies im Simulator gesetzt ;-)

von Karl T. (karl43)


Lesenswert?

Du hast im Stimulus ein passendes Eingangs Signal definiert ? Nochmals:
Eingänge kannst Du nicht einfach setzen .

von Michael K. (bimbel)


Lesenswert?

du hast es geschafft..der groschen ist gefallen :)

ich hab den Eingangspin im Simulator Manuell gesetzt. Darauf reagiert er 
allerdings nicht. Habe dann ein Eingangssignal erzeugt und schon hats 
geklappt.

Danke dir für die Hilfe.

von karl43 (Gast)


Lesenswert?

Fein, viel Spass

von Michael K. (bimbel)


Lesenswert?

Hallo, ich bins nochmal :)

meine Seriell-Parallel Wandlung funktioniert soweit, allerdings hab ich 
noch ein Problem und zwar ist die Dauer der Wandlung abhängig davon 
wieviele einsen eingelesen werden.
Hat jemand eine Idee wie man das so machen kann, dass die Dauer immer 
konstant ist?

MfG

von André (Gast)


Lesenswert?

mmh?

bcf carryflag
btfsc GPIO_in
bsf carryflag
rlf INDATA ,F

ist doch immer genau gleich lang die Zeit?
- wenn GPIO_in = 0
bcf carryflag -- genau 1 Takt
btfsc GPIO_in -- braucht dann zwei Takte, weil der bsf carryflag 
übersprungen wird
rlf INDATA,F -- 1 Takt

also gesamt 4 Takte.

- wenn GPIO_in = 1
bcf carryflag -- genau 1 Takt
btfsc GPIO_in -- ein Takt (da der nachfolgende Befehl nicht verworfen 
wird)
bsf carryflag -- ein Takt
rlf INDATA ,F -- ein Takt

d.h. 4 Takte gesamt - ist doch also in Ordnung?

von Michael K. (bimbel)


Lesenswert?

ahja, danke. wusste nicht das der btfsc das mit der zyklenanzahl so 
handhabt :)

Vielen Dank euch :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.