RS232 programmierung unter C18

OP #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
OP #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..
OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.