stalky13
19.06.2007, 22:48
Hi leute,
Ich beschäftige mich seit kurzem mit pics und versuche gerade die kommunikation zwischen rechner und pic zum laufen zu kriegen. zum testen hab ich mir ne kleine schaltung auf ner lochrasterplatiene aufgebaut mit nem max232 und nem 18f1320. wenn ich mit meinem pic daten sende dann kommen die beim rechner auch an aber wenn ich mit meinem rechner daten sende dann kommen die bei meinem pic ned an. direkt an meinem RXD pin von meinem pic hab ich ne led zur kontrolle und die is auch fleissig am blinken wenn ich daten empfangen sollte. selbst wenn ich von meinem PIC TXD und RXD direkt mit einem draht verbinde empfange ich nix 8-[ . Deswegen denke ich das es eigendlich nur an meiner software liegen kann... oder? ich programmiere in c und verwende C18 meinen PIC takte ich mit 10 MHz. Ich zerbrech mir schon seit tagen den kopf was ist an meinem code falsch? RXD und TXD sind gebrückt aber trotzdem passiert nix.
/** I N C L U D E S ************************************************** ********/
#include <p18cxxx.h>
#include "delays.h" // für die Warteschleife
#include "usart.h" // für RS232
/** Configuration ************************************************** ******/
#pragma config OSC = HS //CPU= 10MHz x 4 = 40MHz
#pragma config PWRT = OFF //Power UP Timer
#pragma config BOR = OFF //Brown Out Reset
#pragma config WDT = OFF //Watchdog Timer
#pragma config LVP = OFF //Low Voltage ICSP
/** D E C L A R A T I O N S **************************************************/
#pragma udata gpr0
unsigned char out;
unsigned char in;
/** M A I N **************************************************/
#pragma code
void main(void)
{
LATA = 0x00; //0 in Register A schreiben
LATB = 0x00; //0 in Register B schreiben
TRISA = 0b11111100;
TRISB = 0b00010010;
OpenUSART( USART_TX_INT_OFF & //USART Initialisieren
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,64 ); //9600 Baud
while(1)
{
out = 52;
putcUSART(out);
Delay100TCYx(50);
if DataRdyUSART()
{
in = getcUSART();
if (in == 52)
LATAbits.LATA0 = !LATAbits.LATA0;
}
Delay10KTCYx(500);
}
CloseUSART();
}
Ich beschäftige mich seit kurzem mit pics und versuche gerade die kommunikation zwischen rechner und pic zum laufen zu kriegen. zum testen hab ich mir ne kleine schaltung auf ner lochrasterplatiene aufgebaut mit nem max232 und nem 18f1320. wenn ich mit meinem pic daten sende dann kommen die beim rechner auch an aber wenn ich mit meinem rechner daten sende dann kommen die bei meinem pic ned an. direkt an meinem RXD pin von meinem pic hab ich ne led zur kontrolle und die is auch fleissig am blinken wenn ich daten empfangen sollte. selbst wenn ich von meinem PIC TXD und RXD direkt mit einem draht verbinde empfange ich nix 8-[ . Deswegen denke ich das es eigendlich nur an meiner software liegen kann... oder? ich programmiere in c und verwende C18 meinen PIC takte ich mit 10 MHz. Ich zerbrech mir schon seit tagen den kopf was ist an meinem code falsch? RXD und TXD sind gebrückt aber trotzdem passiert nix.
/** I N C L U D E S ************************************************** ********/
#include <p18cxxx.h>
#include "delays.h" // für die Warteschleife
#include "usart.h" // für RS232
/** Configuration ************************************************** ******/
#pragma config OSC = HS //CPU= 10MHz x 4 = 40MHz
#pragma config PWRT = OFF //Power UP Timer
#pragma config BOR = OFF //Brown Out Reset
#pragma config WDT = OFF //Watchdog Timer
#pragma config LVP = OFF //Low Voltage ICSP
/** D E C L A R A T I O N S **************************************************/
#pragma udata gpr0
unsigned char out;
unsigned char in;
/** M A I N **************************************************/
#pragma code
void main(void)
{
LATA = 0x00; //0 in Register A schreiben
LATB = 0x00; //0 in Register B schreiben
TRISA = 0b11111100;
TRISB = 0b00010010;
OpenUSART( USART_TX_INT_OFF & //USART Initialisieren
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,64 ); //9600 Baud
while(1)
{
out = 52;
putcUSART(out);
Delay100TCYx(50);
if DataRdyUSART()
{
in = getcUSART();
if (in == 52)
LATAbits.LATA0 = !LATAbits.LATA0;
}
Delay10KTCYx(500);
}
CloseUSART();
}