Forum: Mikrocontroller und Digitale Elektronik Port einstellungen


von rapeur (Gast)


Lesenswert?

Hallo Zusammen,
ich habe ein problem mit Port einlesen. ich habe eine Funktion 
geschrieben, und sie funktionniert nach meine Meinung gut(eine Logische 
AND Funktion). ich habe so in Hauptprogramm definiert:
void main (void)
{
TRISB=0x00;
TRISA=0x70;

PORTAbits.RA0=1;
PORTAbits.RA1=1;

while(1)
{
PORTBbits.RB1=AND(PORTAbits.RA0,PORTAbits.RA1);

}
}
und ich sehe nicht die Änderung im RB1. aber wenn ich so schreibt ( 
AND(1,1) im Programm) sehe ich alle Änderungen. Apropos ich habe die 
Funktion als Char definiert und benutzt das Programm MPLAB mit COmpiler 
C18. Ich brauche ihre Hilfe.
Grüß

von rapeur (Gast)


Lesenswert?

und PIC18F4550

von Gast (Gast)


Lesenswert?

Nimm für Schreibzugriffe das LAT-Register.
(genaueres steht im Datenblatt zum PIC)

Versuch folgendes:

while(1)
{
  LATBbits.LATB1 = AND (PORTAbits.RA0,PORTAbits.RA1) ;
}

Gruss

von rapeur (Gast)


Lesenswert?

Hallo Gast,
es geht immer noch nicht. aber wenn ich so schreibe AND(1, 1), geht es.
Gruss

von tastendrücker (Gast)


Lesenswert?

Mal geraten (da ich das PIC-Datenblatt nicht im Kopf habe):

Ist PORTA als DIGITAL I/O eingestellt? Kann sein, dass er defaultmäßig 
auf ANALOG-Eingang eingestellt ist.

von Gast (Gast)


Lesenswert?

RA0 und RA1 sind per Default/POR als Analog-In konfiguriert.
Versuch mal diese als Digital I/O zu konfigurieren.
Dies geschieht im Register ADCON1, Bits PCFG3-0 auf 1 setzen.
Siehe Datenblatt A/D-Konverter-Kapitel.

Gruss

von rapeur (Gast)


Lesenswert?

Hallo Gast,
ich bedanke dir. ich dachte ich hätte es beachten.
Gruss

von rapeur (Gast)


Lesenswert?

ich habe mit port C probiert und es hat funktionniert.

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.