Forum: Mikrocontroller und Digitale Elektronik RB0 am PIC16F884


von Dieter K. (dikomoe)


Lesenswert?

Hallo, Forum,
bei folgender Einstellung:
TRISB = 0: PORTB = Ausgang
ANSELH = 0: PORTB = digital I/O
PORTB = b'11111111'
werden an RB1 bis RB7 angeschlossene LEDs wie gewünscht, eingeschaltet,
die an RB0 gleichartig angeschlossene LED erhält keinen Strom. Am freien 
Pin RB0 liegt die volle Versorgungsspannung an; wenn die LED 
angeschlossen wird, geht die Spannung auf 1,9 V runter, ohne dass die 
LED leuchtet.
(LED-Typen 2mA, Rv = 1 k). Wo steckt der Wurm?
Dieter

von Teo D. (teoderix)


Lesenswert?

Dieter K. schrieb:
> Wo steckt der Wurm?

Im Code... Zeile 42?!

von Sven P. (svepas)


Lesenswert?

Prüfe mal ob du das einstellen der Register TRISB und ANSELH auch in der 
richtigen jeweiligen Bank erledigst.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

Teo D. schrieb:
> Dieter K. schrieb:
>> Wo steckt der Wurm?
>
> Im Code... Zeile 42?!

Könnte auch Zeile 45 sein..

von Rahul D. (rahul)


Lesenswert?

Jan S. schrieb:
> Könnte auch Zeile 45 sein..

Zumindest irgendwo im unsichtbaren Quellcode.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

Rahul D. schrieb:
> Jan S. schrieb:
>> Könnte auch Zeile 45 sein..
>
> Zumindest irgendwo im unsichtbaren Quellcode.

Der TO gab schon in seinem letzen thread nur häppchenweise Informationen 
zu seinem Problem.-

von H. H. (Gast)


Lesenswert?

Dieter K. schrieb:
> Wo steckt der Wurm?

Im Pinout falsch gezählt.

von Johannes R. (oa625)


Lesenswert?

Der Code an sich ist korrekt, der Wert in ANSELH ist bei Output 
unerheblich, stört hier aber nicht.

Mögliche Fehler:
- Feinschluss in der Verdrahtung/auf dem PCB?
- kalte (hochohmige) Lötstelle, die 1,9V sind die Flußspannung der LED, 
beim hochohmigen Messen ohne LED gibt es kaum Spannungsabfall
- PIC defekt?

Kannst Du den PIC entfernen und den PORTB.0 - Anschluss direkt an VDD 
klemmen und leuchtet die LED dann?

Gruß
JRo

Edit:
@hhinz: >Im Pinout falsch gezählt.
Ist möglich, aber unwahrscheinlich, da RB0 zwischen RB1 und VDD liegt,
also würde der Anschluss von RB1 oder von VDD versorgt.

: Bearbeitet durch User
von Hans (piaggio)


Angehängte Dateien:

Lesenswert?

1)
Würde versuchen, den Port so wie im Datenblatt beschrieben zu 
initialisieren.
2)
Hat der Widerstand wirklich 1k ?

von Dieter K. (dikomoe)


Lesenswert?

Johannes R. schrieb:
> Mögliche Fehler:
> - Feinschluss in der Verdrahtung/auf dem PCB?
> - kalte (hochohmige) Lötstelle, die 1,9V sind die Flußspannung der LED,
> beim hochohmigen Messen ohne LED gibt es kaum Spannungsabfall
> - PIC defekt?
>
> Kannst Du den PIC entfernen und den PORTB.0 - Anschluss direkt an VDD
> klemmen und leuchtet die LED dann?

Alles das habe ich ausprobiert, bevor ich den thread geschrieben habe.
Ich habe auch einen zweiten PIC erfolglos eingesetzt.
Dieter

von Thorsten S. (whitejack)


Lesenswert?

Dieter K. schrieb:
> Alles das habe ich ausprobiert, bevor ich den thread geschrieben habe.

Und was noch?

von Dieter K. (dikomoe)


Lesenswert?

Hans schrieb:
> 1)
> Würde versuchen, den Port so wie im Datenblatt beschrieben zu
> initialisieren.
> 2)
> Hat der Widerstand wirklich 1k ?

Initialisierung so geschehen.
Widerstand = 1k erprobt am anderen Pin erfolgreich
Dieter

von Hans (piaggio)


Lesenswert?

weak pullups disabled?
interrupt on change disabled?

von Dieter K. (dikomoe)


Angehängte Dateien:

Lesenswert?

Rahul D. schrieb:
> Zumindest irgendwo im unsichtbaren Quellcode.
Das stimmt sehr wahrscheinlich, denn ich habe mal zum Testen praktisch 
den gesamten Code gelöscht s. Anhang, und so funktioniert es. Was mich 
so verunsichert, ist, dass im dem gesamten (gelöschten) Code der PORTB 
nicht vorkommt, weshalb ich keinen Anhalt für eine Fehlersuche im Code 
erkennen kann.
Dieter

von Dieter K. (dikomoe)


Lesenswert?

Teo D. schrieb:
> Im Code... Zeile 42?!

Tatsächlich, allerdings in Zeile 196 stand ein auf RB0 bezogener Befehl,
den ich aus einem anderen Programm übernommen hatte, der aber in diesem 
Programm überflüssig war. Warum aber dieser Befehl in einem nicht 
aufgerufenen Unterprogramm die beschriebene Auswirkung hatte, bleibt mir 
schleierhaft.
Besten Dank für Eure Hinweise!
Dieter

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.