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
Gast
#2390544
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
Gast
#2390548
Tippfehler würd ich mal tippen: #include >sw_uart.h> sollte eingentlich #include <sw_uart.h> sein
So, hier einmal meine Datei: Lg Tim
Gast
#2390553
@madeyemike, das hatte ich glatt Übersehen, tippe du hast recht.
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
Gast
#2390577
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 | |
2 | |
3 | |
4 | |
5 | |
Doku: http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.