RS232 programmierung unter C18

#817025
Lesenswert?

Hallo Leute,

ich habe folgendes Problem. Ich habe ein Demoboard und PC zur Verfügung. 
Hat jemand Erfahrung wie diese Geräte über RS232 verbinde, damit Daten 
zwischen beiden veschicken könnte? Ich habe schon ein Programm für 
meinen PIC geschrieben. PIC und PC verbinde über ein NullModem kabel. 
Für Kommunikation benutze Hyperterminal. Wenn die Daten vom PIC sende, 
werden sie von Hyperterminal empfangen, aber wenn ich ein Zeichen sende, 
wird von PIC gar nichts empfangen.
Danke, wenn jemand antwortet
#817061
Lesenswert?

Severino R. wrote:
> Du musst im Sourcecode auf Zeile 54 statt:
>
1
> if (c==0) {
2
>
> schreiben:
>
1
> if (c!=0) {
2
>
>
> Dann sollte es gehen. Sagt jedenfalls meine Kristallkugel.


ich habe folgender Sourcecode:

char z;


if(!DataRdyUSART())
{

z=ReadUSART();
Delay_ms(100);
putcUSART(z);

}

Ich möchte ein Zeichen epmfangen und dieses Zeichen zurück schicken. 
Leider klappt's nicht..
#817675
Lesenswert?

Hallo zusammen,

Arbeitet jemand mit C18-Compiler von Microchip? Ich versuche schon seit 
3 Tagen PC über USART mit PIC zu verbinden... In Dateianhang ist mein 
Sourcecode.  Wenn irgendwelches Zeichen sende oder empfange, dann sehe 
ich ganz anderes Symbol auf dem Bildschirm und LCD. Weisst jemand 
vielleicht, wo ich Fehler habe.
Danke
Angehängte Dateien:
#817686
Lesenswert?

ich muss ehrlich gestehen, dass ich bis jetzt nur immer USB gebraucht 
habe und nie RS232, aber von Michrochip gibts ganz bestimmt 
C18-sourcecode-beispiele (musst mal im installationsordner gucken). 
ansonsten kann ich dir auf die schnelle sagen, dass die schlaufe 
schneller durchlaufen wird, als dass du zeichen empfpfängst, die du 'z' 
übergeben kannst; geschweige denn zurücksenden ;) ...musst du da nicht 
irgend ein while(noch_nicht_übertragung_beendet) oder so ähnlich 
abfragen?
#817694
Lesenswert?

Andreas,

ich arbeite zwar nicht mit C18 sondern mit C30, aber probier doch mal 
den UART Empfangsinterrupt freizugeben, schreib eine ISR und setze im 
MPLAB eine breakpoint in die ISR um dann mit Watch das UART 
Empfangsregister zu lesen ob Du das gesendete Byte empfängst.

Falls nein: HW oder Konfig Problem
Falls ja: kleinen Ringbuffer in die ISR für empfangene Bytes, dann statt 
direkt aus dem UART aus dem Ringbuffer lesen.

So mach's ich.

Gruß

Gerd.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren