Frage zum PIC C-Tutorial - Pullupwiderstände

Gast #4071987
Lesenswert?

Ich arbeite gerade ein Tutorial durch. Es geht darum auf Tastendruck 
eine LED-Reihe der Reihe nach weiterzuschalten. Der Programmablauf ist 
auch völlig klar, aber eine Frage zur Aktivierung der Pullupwiderstände 
hätte ich.

Hier mal ein Codefragment:
1
INTCON2bits.RBPU = 0;    // enable PORTB internal pullups
2
WPUBbits.WPUB0 = 1;    // enable pull up on RB0

Zuersteinmal die Frage, kann jemand die kryptischen Bezeichnungen 
INTCON2bits.RBPU und WPUBbits.WPUB0 entschlüsseln?

Und nun meine Frage, warum aktiviere ich in der ersten Zeile die 
internen Pullups bei PortB und muss dann nochmal den Pullup beim Pin B0 
aktivieren? Gibts da ein Schaltbild oder eine gute Erklärung dafür?
Gast #4072020
Lesenswert?

In MPLAB kannst du so ein einzelnes Bit adressieren.
REGISTERNAMEbits.BITNAME.
Und ich nehme an, mit dem ersten Bit aktivierst du die Pull ups 
generell, mit dem zweiten sagst du, welchen Pin du hochziehen willst.
#4073723
Lesenswert?

> Zuersteinmal die Frage, kann jemand die kryptischen Bezeichnungen
> INTCON2bits.RBPU und WPUBbits.WPUB0 entschlüsseln?
>
> Und nun meine Frage, warum aktiviere ich in der ersten Zeile die
> internen Pullups bei PortB und muss dann nochmal den Pullup beim Pin B0
> aktivieren? Gibts da ein Schaltbild oder eine gute Erklärung dafür?

ALLE deine Fragen werden im Data Sheet sehr ausführlich beantwortet.
(Suche z.B. einfach mal nach INTCON2 und WPUB ;-)

PS: MPLAB ist eine IDE. <REGISTERNAMEbits.BITNAME> hat aber was mit 
deinem C-Compiler zu tun. Ist leider nirgends vernünftig dokumentiert.
Am besten schaust du in das Header File für deinen PIC und googlest nach 
"C Bitfelder"

<edit> Die Definition für das Bitfeld im Header ist vermutlich 
gleichzeitig noch eine Union und bietet dir so mehrere Namen für das 
selbe Bit. Da RBPU low-aktiv ist müsste da noch so was wie NOT_RBPU 
sein. Wäre hier sinnvoller ...
(INTCON2bits.NOT_RBPU = 0)
#4074638
Lesenswert?

wulga schrieb:
> Zuersteinmal die Frage, kann jemand die kryptischen Bezeichnungen
> INTCON2bits.RBPU und WPUBbits.WPUB0 entschlüsseln?

INTerrupt CONtrol 2 Register, bit RB (PortB) Pull Up enable
Weak PullUp port B, bit Weak PullUp portB0

Vor dem Gebrauch einer uCs sollte man unbedingt das Datenblatt und die 
Errata laden und angucken. Eine Suche im Datenblatt (PDF -> STRG+F) 
hätte es dir verraten.
Gast #4074672
Lesenswert?

> warum aktiviere ich in der ersten Zeile ... und muss dann nochmal

Typisches PIC Problem. Die behalten alle Register aus früheren Pics bei 
und packen dann für die neuen Features zusätzliche Register dazu. Da 
kommen dann Sachen raus, die man nicht wirklich als Sinnvoll bezeichnen 
kann.
Gast #4074677
Lesenswert?

Volker SchK schrieb:
> Ist leider nirgends vernünftig dokumentiert.

Zeig doch den kompletten Code

#define nirgends "MPLAB® XC8 C Compiler User’s Guide"

> The names of the structures that hold the bit-fields will typically
> be those of the corresponding register followed by bits. ...

MfG Klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren