-
Eingänge einlesen (AND)
Hallo miteinander,
Hab gestern ein kleines Programm geschrieben, leider will das Ganze nicht funktionieren ( wer hätte das gedacht :-))
Ich programmiere in C und der Controller ist ein PIC16F690 (vom PICKIT2)
Das Programm ist glaub ich ziemlich selbsterklärend:
Code:
#include <pic.h>
void main(void)
{
TRISC = 0b00000000;
TRISA = 0b11111111;
for( ;; )
{
if
(
PORTA == 3)
{
PORTC = 1;
}
else
{
PORTC = 2;
}
} // for( ;; )
}
Nun die zweite Led an PORTC leuchtet immer. Es scheint als ob die Eingänge nicht richtig eingelesen werden.
Kann es daran liegen, dass man den Port von AD zu I/O umschalten muss.
ADCON0= 00000000 so irgendwas?
Die Schalter schalten die Eingänge immer zwischen Vdd und Vss.
Bin um jeden Rat dankbar
-
Hallo sky2,
ich kenn mich mit PICs nicht aus, aber von AVRs her kenn ich das so, dass das PORTX-Register nur für die Ausgabe zuständig ist und es für das Abfragen von Zuständen ein anderes Register gebt (PINX bei AVRs). Vielleicht ist ja bei PICs ähnlich.
MfG Mark
-
Ich hab mir das Datenblatt jetzt nicht angeschaut, aber ja du musst die Analogeingänge auf Digital umschalten.
-
Muss ich alle Eingänge einzeln umschalten?:
ADCON0 = 00000000
ADCON0 = 00000100
ADCON0 = 00001100
Hab schon etwas rumprobiert und im Datenblatt gelesen und und und...
Ach ja, ich hab die HI-TECH-Software mit MPLAB.
-
if (PORTA == 3)
klappt nur, wenn wirklich genau 0b00000011 an dem Port anliegt.
Ist das auch so gemeint ?
-
Ja, die LED soll nur leuchten wenn an den Eingängen RAO und RA1 ein HIGH und an den anderen ein LOW ist.
Mier ist aber gerade aufgefallen, dass RA3 das Reset ist und dies NICHT auf LOW darf!
Werde die Eingänge mal auf den PORTB wechseln.
Beim umschalten des PORTs brauch ich aber trotzdem noch etwas Hilfe :oops: