Forum: Mikrocontroller und Digitale Elektronik PIC change a port direction , wie in C?


von Christoph N. (mrmister)


Lesenswert?

Ich habe im Datenblatt des PIC folgendes Codebeispiel in Assembler 
geunden um zwischen dem Aendern der Portrichtung einen Instruction cycle 
zu definieren...
1
MOV 0xFF00, W0 ; Configure PORTB<15:8> as inputs
2
MOV W0, TRISB ; and PORTB<7:0> as outputs
3
NOP ; Delay 1 cycle
4
BTSS PORTB, #13 ; Next Instruction

...wie kann ich das in C machen?

von A. (Gast)


Lesenswert?

BTSS kenne ich nicht, aber btfss?
1
TRISB = 0xFF;
2
Nop();
3
if((PORTB & 0x2000) == 0)
4
{
5
6
7
}

statt PORTB vielleicht LATB benutzen.

von A. (Gast)


Lesenswert?

sorry aber : TRISB = 0xFF00;

von Christoph N. (mrmister)


Lesenswert?

@ A.

...ich meine nicht das schlaten des Ports selber sondern eben diese 
Nop(); instruction...also kann ich Nop(); einfach in C verwenden?

...brauch ich da noch eine include?

EDIT: ...laeuft...

von Christoph N. (mrmister)


Lesenswert?

...prinzipiell geht es naemlich darum, das es bei mir der Falls ist, das 
am ADC Eingang bevor ich messe eine hohe Spannung anliegt (natuerlich <= 
Vref)...

...jetzt versuch ich den Ausgang erst dann TRIS=1 zu setzten wenn ich 
ihn brauchen, um so die Spietz am Eingang abzufangen, oder gibts da eine 
elegantere Loeseung?

von A. (Gast)


Lesenswert?

ADC richtig einstellen, Module starten und auf Interupt warten.

von Tom (Gast)


Lesenswert?

oder
1
while(!(ADCREG.DONE));
2
val = ADCxBUF;

von Christoph N. (mrmister)


Lesenswert?

...ja den ADC hab ich schon richtig eingestellt, startet wenn ich meine 
Sample() aufrufe und generiert einen Inrreupt wenn er fertig 
ist....trotzdem muss ich die TRIS Bits doch schon vorher setzen, oder 
meinst erst in der Sample Funktion des ADCs?

von A. (Gast)


Lesenswert?

ich weiss nicht was für ein PIC das ist, aber du musst den Pin als 
Eingang (TRISBx = 1) und als analog (ADCxCFGx = 0)vor der Messung 
einschalten.

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.