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:
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
David schrieb:> Und> standardmässig ist ja der Port A auf die Digitaleingänge geschaltet und> nicht auf die Analogperipherie ...
Ganz sicher nicht sondern genau umgekehrt und das steht auch im
Datenblatt!
Nach einem RESET steht in den ANSEL-Register(n) b11111111 und das ist
ANALOG!
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.
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 ;-)
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.
;-)
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
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.
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 ;-)
> 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.
Wilhelm F. schrieb:> Normalerweise weigere ich mich davor, mal eben 150 Seiten Datenblatt zu> drucken.
Eben, du sollst es ja auch lesen und nicht drucken.
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 :-)