Hallo zusammen,
Vorab: ich bin neuling auf dem gebiet und wollte ein wenig Hobby mäßig
mal mit einem µc rumspielen.
Ich möchte eine Wetterstation über einen PIC18F45K20 (PICKit3
Starterset) programmieren.
1. Habe ich mir ein FTDI kabel besorgt das wiefolgt an den PIC
angeschlossen ist.
FTDI PIC
Black = GND GND
Red = VCC VDD
Yellow = RX RC6/TX
Orange = TX RC7/RX
2. Über eine kleine software die ich in C mit MPLAB Programmiert habe.
Habe ich die Serielle kommunikation zwischen PIC und Computer getestet.
Zum Testen fürs empfangen habe ich Putty genommen.
der Sende Code:
asm("BANKSEL OSCCON");// IN Bank Wechseln für Osci einstellung
65
asm("MOVLW 0x60");// Takt auf 8Mhz einstellen
66
asm("MOVWF OSCCON");// Work register in OSCIConfig schieben
67
}
68
// The PIC is Starting
69
voidBootLoad(){
70
inti=0;
71
TRISD=0x00;
72
73
for(i;i<=255;i++){
74
Delay10TCYx(200);
75
LATD=i;
76
}
77
//LED Blinken lassen wenn test durchlauf Finished
78
if(LATD==0xFF){
79
for(i=0;i<5;i++){
80
LATD=0xFF;
81
Delay10KTCYx(50);// 0,25s (250ms)
82
LATD=0x00;
83
Delay10KTCYx(50);
84
}
85
}
86
}
87
// UART Confuguration
88
voiduartOpen(){
89
OpenUSART(USART_ASYNCH_MODE&USART_EIGHT_BIT&USART_TX_INT_OFF&USART_RX_INT_OFF&USART_BRGH_HIGH,51);// Einstellung des USART MODUS und der Baudrate
90
}
91
92
voidsendSpace(){
93
WriteUSART(0x20);// Space für abstand in Putty Später zum auslesen für das ende der Übertragung
94
}
========================================================================
==
Es kommt Richtig an nur wieso in endlosschleife? Habe keine
Programmiert.
Das ander ist.
Würde gerne einen Interrupt für RX Programmiern.
meine Anfänge sehen wie folgt aus:
========================================================================
==
Hier habe ich das Problem das der PIC nicht darauf reagiert.
Die IDEE, die ich versuche umzusetzen ist das der µc Daten von einen C#
Programm empfängt diese verarbeitet und Die angeforderten daten zurück
über die serielle schnitstelle an den Computer sendet.
Danke im vorraus für eure Hilfe
Tim Halbach schrieb:> int main(int argc, char** argv) {> .> .> .> return (EXIT_SUCCESS);
========================================================================
==
> Es kommt Richtig an nur wieso in endlosschleife? Habe keine> Programmiert.>
Doch hast du!
Wohin soll es den auch Springen ausser zum Programmanfang?
Schreib statt dem "return(...." "while(1);" hin und die Ausgabe wird
nur 1x erfolgen.
btw:
> asm("BANKSEL OSCCON");> asm("MOVLW 0x60");> asm("MOVWF OSCCON");
Da reicht ein OSCCCON = 0x60; auch ;-)
Schmeiss erst mal alle delay raus.
RCIE && RCIF
ReadUSART() geht nach message[], wofür dann empfang[] ?
Dann musst du noch das j managen. Hier lohnt es sich, gleich über
Ringpuffer einzulesen.
Sendest du irgendwie 'H','a','l','l','o','\0', ' ', Zufallswert ?