Forum: Mikrocontroller und Digitale Elektronik Recive Data USART / UART PIC18


von Patrick E. (f4550tim)


Lesenswert?

Hallo,
Daten vom PIC zum PC zu schickenn, klappt super ;) Doch welche vom PC zu 
empfangen, und diese im PIC auszuwerten, bekomme ich einfach nicht hin. 
Ich versuchs mit der Lib. usart.h von microchip. Doch bekomme ich einen 
Error.

Wenn ich die sw_uart.h rausnehme, und die UART Funktion unten 
ausklammere, dann bekomme ich den Fehler weg. Ich würde es am liebsen 
nur mit der usart.h Include machen !

/*********************************************************************** 
**/
/**         PIC18F258 mit MAX233 Testplatine          **/
/*********************************************************************** 
**/
/**        Description:   Recive Data from RS232            **/
/**                                       **/
/**        Codeversion:   1.0                    **/
/**        Datum:       21.10.2011                **/
/**        Autor:       Tim Erler                **/
/**                                    **/
/*********************************************************************** 
**/

/***INCLUDE-DATEIEN***************************************************** 
**/
  #include <p18f258.h>    // Für den PIC
  #include <delays.h>      // Für Pausen und Zeiten
  #include <usart.h>      // Für die RS232 USART Übertragung
  #include >sw_uart.h>
//  #include <stdio.h>      // Zum Rechnen
/*********************************************************************** 
**/

/***PIC-CONFIGURATIONEN************************************************* 
**/
  #pragma config OSC =  HS   // 8MHz Oscillator mit Lastkondensatoren
  #pragma config PWRT = ON    // Power Up Timer       = on
  #pragma config BOR = OFF     // Brown out Reset     = off
  #pragma config WDT = OFF     // Watch Dogtimer       = off
  #pragma config LVP = OFF     // Low Voltage Programming = off
  #pragma 300006h = 0b10000101;// Konfiguration für ICSP
  #pragma code
/*********************************************************************** 
**/

/***Speicherbedarf****************************************************** 
**/
char data;
/*********************************************************************** 
**/

/**DIE 
Unterprogramme*****************************************************/

/*********************************************************************** 
**/

/**DIE 
MAIN-SCHLEIFE******************************************************/

void main(void)

{
  OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
  USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 12);         // 
USART Modul wird hier eingestellt und initialisiert. 9600 Baut

        TRISC = 0 ;                     // setzt den P
        PORTC = 0 ;                     // clear PORT


  while(1)
  {
    data = ReadUART(); //read a byte
    while(!DataRdyUART());
    WriteUART( data ); //bounce it back
  }
}
/*********************************************************************** 
**/


Meldung:

Debug build of project `C:\Dokumente und 
Einstellungen\Tim-Programming\Eigene 
Dateien\MPLAB\C\RS232_18F258\RS232_PIC18F258.mcp' started.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mcc18.exe 
v3.36, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Fri Oct 21 18:49:24 2011
----------------------------------------------------------------------
Make: The target "C:\Dokumente und Einstellungen\Tim-Programming\Eigene 
Dateien\MPLAB\C\RS232_18F258\main.o" is out of date.
Executing: "C:\MCC18\bin\mcc18.exe" -p=18F258 "main.c" -fo="main.o" 
-D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
C:\Dokumente und Einstellungen\Tim-Programming\Eigene 
Dateien\MPLAB\C\RS232_18F258\main.c:16:Error [1026] malformed #include 
directive
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Dokumente und 
Einstellungen\Tim-Programming\Eigene 
Dateien\MPLAB\C\RS232_18F258\RS232_PIC18F258.mcp' failed.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mcc18.exe 
v3.36, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Fri Oct 21 18:49:24 2011
----------------------------------------------------------------------

Lg Tim

von PICARD (Gast)


Lesenswert?

Hallo Tim,
hänge doch mal bitte den ganzen Code als File in den Post, sonst kann 
man damit:

Dateien\MPLAB\C\RS232_18F258\main.c:16:Error [1026] malformed #include
directive

nicht's Nachvollziehen.

PS: Baud (nicht baut) nicht schlimm, aber unschön

von madeyemike (Gast)


Lesenswert?

Tippfehler würd ich mal tippen:

  #include >sw_uart.h>

sollte eingentlich

  #include <sw_uart.h>

sein

von Patrick E. (f4550tim)


Angehängte Dateien:

Lesenswert?

So, hier einmal meine Datei:

Lg Tim

von PICARD (Gast)


Lesenswert?

@madeyemike, das hatte ich glatt Übersehen, tippe du hast recht.

von Patrick E. (f4550tim)


Lesenswert?

Jetzt, wenn ich die Spannung einschalte, passiert nix. Ich schicke einen 
Buchstaben. Dann kommt der zurück, und ich werde mit "Leerzeichen 
vollgespammt" bis ich die Spannung abstelle...

Woran kann das liegen ? Der müsste doch erst wieder warten, ob ein 
Zeichen da ist, oder ?

LG Tim

von madeyemike (Gast)


Lesenswert?

Hi Tim,

Da ich wenig mit den 18er Pics mache kann ich nur mutmaßen und dir raten 
die Doku zurate zu ziehen.

So wie ich das sehe ist die Funktion ReadUART() blockieren, d.h. die 
Funktion kehrt erst zurück wenn sie wirkliche in Byte liefern kann. 
Somit kannst du ganz einfach folgenden Code schreiben.
1
while(1)
2
{
3
    data = ReadUART();
4
    WriteUART( data );
5
}



Doku:
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf

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.