PIC 16F876 Port RA1 als digitaler Eingang

Gast #3332576
Lesenswert?

Hallo

Ich schaffs einfach nicht, beim PIC 16F876 den Port RA1 als digitalen 
Eingang zu verwenden. Das hier ist mein Code, bzw, die betreffenden 
Ausschnitte:



So initialisiere ich die Ports:
1
void InitPorts(void)
2
{
3
  PORTA = 0x00;    // All outputs = 0
4
  TRISA = 0x03;    // RA0,1: IN RA2..5: OUT
5

6

7
  PORTB = 0x00 ;    // Ausgänge: RB4=1 RB3/RB5/RB6/RB7=0
8
  TRISB = 0x07 ;    // Eingänge: RB0..RB2
9
  OPTION &= ~0x80;
10

11
  PORTC = 0x23 ;    // RC0,1,5 = 1 (Mode, /Enable, /Brake)
12
  TRISC = 0xD8 ;    // RC0,1,2,5: OUT RC 3,4,6,7: IN
13

14

15
}


Und so frage ich den Port ab:
1
if (RA1 == 0)
2
{
3
PositionInit();
4
nextState = WaitForCommand;  // Set next State    
5
}

Obwohl RA1 mit einem Pullup auf VCC gezogen wird, springt das Programm 
andauernd in den if-Block hinein :-(

Sieht jemand, was ich falsch mache? Bie Port B funktionieren die 
Eingänge und ich habe sie ja, genau gleich konfiguriert. Und 
standardmässig ist ja der Port A auf die Digitaleingänge geschaltet und 
nicht auf die Analogperipherie ...

Vielen Dank und Gruss

David
Gast #3332613
Lesenswert?

Zusatz zu meinem Vorredner:

Im Datenblatt befinden sich immer auch Blockbilder mit 
Gatterschaltungen, an denen man sich eine Funktionsweise noch mal genau 
anschauen kann.

Davon bin ich sogar mit dem anscheinend nur popeligen 12F675 auch immer 
wieder selbst betroffen.
#3332649
Lesenswert?

Ich schätze das 95% aller "Port-Probleme" auf der vergessenen 
Analog/Digital Umschaltung beruhen.
Und wenn man das mal "intus" hat, stolpert man irgendwann über das 
"Comperator-Problem" - welcher auch Analog ist, sich aber nicht mit den 
ANSELx bzw. ADCONx Register umschalten läßt, sondern über das COMCON 
abgeschaltet werden muss ;-)
Gast #3332687
Lesenswert?

Chris B. schrieb:

> Ich schätze das 95% aller "Port-Probleme" auf der vergessenen
> Analog/Digital Umschaltung beruhen.
> Und wenn man das mal "intus" hat, stolpert man irgendwann über das
> "Comperator-Problem" - welcher auch Analog ist, sich aber nicht mit den
> ANSELx bzw. ADCONx Register umschalten läßt, sondern über das COMCON
> abgeschaltet werden muss ;-)

Genau.

Ich liebe und hasse das auch, aber da gibt es nichts, man muß einfach da 
durch.

Das Datenblatt ist immer dabei, es muß immer wieder hinein geschaut 
werden, wenn ich am PIC diesbezüglich was mache.

Normalerweise weigere ich mich davor, mal eben 150 Seiten Datenblatt zu 
drucken. Beim PIC machte ich es aber, jedoch nur etwa ein Drittel, was 
ich gerade am meisten brauchte.

Zur Ehrenrettung des PIC: Sowas gibt es bei anderen auch. Für den 8051 
habe ich allerdings schon alte Bücher aus der Vor-Internet-Zeit, die 
brauchen ja nicht mehr nochmals ausgedruckt zu werden.

;-)
Gast #3332797
Lesenswert?

Wilhelm F. schrieb:
> PIC 16F876 den Port RA1

Da ist ein analog Eingang mit drauf. Die sind nach Reset aktiv.
Hast du den ausgeschaltet?

Da fast alle Pics mehrere Funktionen auf einem Pin haben muss man die 
gewünschte aktivieren.

Etwas überspitzt gesagt geschieht das sinnvollerweise dadurch das man 
alle anderen deaktiviert ;-) Ist nun mal so.

> Normalerweise weigere ich mich davor, mal eben 150 Seiten Datenblatt zu
> drucken.

dann such im pdf mal nach ADCON
Gast #3332804
Lesenswert?

Jens Martin schrieb:

> Wilhelm F. schrieb:
>> PIC 16F876 den Port RA1
>
> Da ist ein analog Eingang mit drauf. Die sind nach Reset aktiv.
> Hast du den ausgeschaltet?
>
> Da fast alle Pics mehrere Funktionen auf einem Pin haben muss man die
> gewünschte aktivieren.
>
> Etwas überspitzt gesagt geschieht das sinnvollerweise dadurch das man
> alle anderen deaktiviert ;-) Ist nun mal so.
>
>> Normalerweise weigere ich mich davor, mal eben 150 Seiten Datenblatt zu
>> drucken.
>
> dann such im pdf mal nach ADCON

Äääääh, du hast dich bestimmt im Zitat vertan. Macht aber nichts. Ich 
beteiligte mich hier nur mal an Hinweisen.
Gast #3332819
Lesenswert?

Danke für den Tip. Im Moment bin ich gerade überfordert. Hier zu Hause 
finde ich im Internet nicht das selbe Datenblatt wie am Arbeitsplatz... 
Das, welches ich jetzt gerade im Internet gefunden habe, ist irgendwie 
anders... Seltsam... Ich muss morgen im Labor nochmals nachschauen und 
melde mich dann nochmals.

Aber danke schon mal jetzt ;-)
Gast #3332857
Lesenswert?

> Hier zu Hause
> finde ich im Internet nicht das selbe Datenblatt wie am Arbeitsplatz...

Guggel findet bevorzugt steinalte, noch mit "Preliminary" 
gekennzeichnete
Versionen, von Microchip Produkten.

Vielleicht sollte Microchip seiner Webseite mal eine Sitemap goennen,
die immer auf die aktuellen Versionen zeigt.

Bis dahin sollte man seine Datenblaetter eben nicht ueber den Umweg
der Suchmaschine sondern direkt beim Hersteller suchen.
Gast #3333142
Lesenswert?

Ok, jetzt hab ichs gesehen: Ich verwende fälschlicherweise das 
Datenblatt
PIC16F876A
anstatt
PIC16F876

Aber sehe ich folgendes richig?

Datenblatt PIC 16F876A, Seite 135 und 136:
Register CMCON Bit 0..2 sind per default auf 111

Somit sind die Komparatoreingänge per default auf Masse geschaltet und 
die Pins RA0..RA3 als Digitalports verwendbar?

Der Initialwert von CMCON steht auf Seite 43 (= 0000 0111)

Dies steht aber im Widerspruch zu der Note auf Seite 41:

"On a Power-on Reset, these pins are configured
as analog inputs and read as ‘0’.
The comparators are in the off (digital)
state."



Im Datenblatt von PIC16F876 (ohne A) sehe ich, dass die Pins per default 
auf die Analogperipherie geschaltet sind. Das werde ich als nächstes 
ausprobieren. Lieder aber erst übermorgen, ich muss an so ne lustige 
Weiterbildung :-)

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