Forum: Mikrocontroller und Digitale Elektronik PIC antwortet nicht (UART)


von Markus K. (numax)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,
ich habe einen PIC18F14K50 mit dem ich eine einfache Kommunikation über 
UART aufbauen will.

Ich programmiere mit MikroC und habe dort auch schon diverse Demos und 
exsample Codes ausprobiert, doch immer mit dem selben Ergebnis.

Hier ein Beispiel:
1
void newline()
2
{
3
     UART1_Write(13);
4
     UART1_Write(10);
5
}
6
7
void main()
8
{
9
     unsigned char MyError, Temp;
10
     TRISB = 0b10100000;
11
     UART1_Init(9600);
12
     Delay_ms(100);
13
     UART1_Write_Text("Testing UART! ");
14
     newline();
15
     do { 
16
         UART1_Write_Text("Type in a Number: ");
17
         while(!UART1_Data_Ready());
18
              Temp = UART1_Read();
19
              newline();
20
              UART1_Write_Text("You entered: ");
21
              UART1_Write(Temp);
22
              newline();
23
     } while(1);
24
     
25
}

Wenn ich das nun in Proteus teste oder auf den PIC schreibe, dann 
bekomme ich im Terminal zwar die Texte angezeigt ("Testing UART!" und 
"Type in a Number") aber es gibt bei der Eingabe keine reaktion.
Also egal was ich an den PIC sende, es kommt nichts zurück.

Es scheint so (und das zeigen auch einige Tests), dass 
"UART1_Data_Ready()" niemals True wird.

Hat jemand eine Idee, warum ein so einfaches Ding nicht laufen will?

Gruß Numax

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Markus K. schrieb:
> dass "UART1_Data_Ready()" niemals True wird.
Was macht diese Funktion? Ist der Empfänger überhaupt eingeschaltet 
(RCSTA.CREN)? Was passiert, wenn du statt dieser Funktion ein delay() 
mit 1s einfügst?

: Bearbeitet durch Moderator
von Markus K. (numax)


Angehängte Dateien:

Lesenswert?

Diese Funktion wartet darauf, das Daten zu Lesen sind.

Im Bild ist der Auszug aus der Hilfe.

Ein Delay würde nichts bringen, da einfach keine Daten vom PIC empfangen 
werden. Nicht in der aufgebauten Schaltung und auch nicht in Proteus 
also in der Simulation.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Markus K. schrieb:
> da einfach keine Daten vom PIC empfangen werden.
Also: Empfänger eingeschaltet?

von Markus K. (numax)


Lesenswert?

Wo soll ich etwas einschalten können?
Den laut Hilfe vorgegebenen Befehl
1
 UART_Set_Active(&UART1_Read, &UART1_Write, &UART1_Data_Ready, &UART1_Tx_Idle);
habe ich testweise auch schon eingefügt, aber ohne erfolg.

Muss man da sonst noch was aktivieren?

von Stefan (Gast)


Lesenswert?

Wo ist denn das Programm, welches Sendet ?
Alle Ports auf digital geschaltet, die
man braucht ?

von Markus K. (numax)


Lesenswert?

Ich sende mit dem PICKit Serial Analyzer.
Dieser ist mit dem Pic verbunden und empfängt ja die Daten die zuvor als 
Texte übertragen werden.
Der Text "Testing UART!" kommt ja am PC an. Nur der Pic empfängt keine 
Daten bzw. gibt diese nicht an den PC zurück.

Ich denke, das es noch ein Fehler im Programmcode sein muss, aber diesen 
finde ich nicht.
Muss irgendwas in den Konfigurations-Bits des PICs eingestellt werden, 
damit der PIC Daten empfängt?

von Stefan (Gast)


Lesenswert?

Was soll der denn empfangen ?
Was sendet denn der PICKit Serial Analyzer ?
Alle Ports umgestellt ?

von Markus K. (numax)


Lesenswert?

Ahh, nun geht es.

Er soll das Empfangen was ich ihm sende, also einen Hexadezimalwert oder 
ASCII-Zeichen.

Nun geht es, ich musste die Ports auf Digital setzen.
Erst hatte das nicht so wirklich funktioniert, woraufhin ich diese 
Codezeile gelöscht habe. Diese habe ich dann aber vergessen wirder 
einzufügen.

Nun geht es, Vielen Dank.

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.