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
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
Tippfehler würd ich mal tippen: #include >sw_uart.h> sollte eingentlich #include <sw_uart.h> sein
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.