Gast
#1811418
Hallo folks, ich bin auf Euren Rat bzw Eure Hilfe dringend angewiesen. ich schreibe für einen PIC16F887 ein Programm, welches mit einem GSM-Modem mc35i (Siemens/Cinterion) kommuniziert. Reines Senden PIC > Modem (zB 'ATDTnnnnnnnnn') funktioniert einwandfrei. Beim Empfang haperts jedoch gewaltig. Hier der relevante Codeausschnitt: rs232-settings: BRGH=1; // Baudrate 9600 Bits/s @ 4MHz SPBRG=25; SYNC=0; // USART Empfaenger enablen SPEN=CREN=TXEN=1; // USART Sender enablen wenn ich jetzt folgendes mache PIC > Modem sendet: 'ATI[CR]' krieg ich bei einem normalen Terminalprogramm (hyperterminal) die normale Antwort (drei Zeilen 'Selbstgespräche' des Modems ;.)) mit meinem Programm/schnipsel/ (im Anschluss an obiges ATI-command) while(1) { if(RCIF) { // interrupt gesetzt? z=RCREG; // Empfangsregister auslesen lcd_dat(z); // Ausgabe am LCD } } erhalte ich jedoch nur ZWEI buchstaben ("AT"). Das ist genau die Anzahl von Zeichen, die der USART aufnehmen kann, ohne ausgelesen werden zu müssen. In der Doku zum USART steht weiters, dass nach dem Lesen des RCREG das RCIF Interruptflag gelöscht wird. Hab auch schon versucht, nach dem Lesen von RCREG das RCIF 'händisch' im Prog zu löschen - erfolglos. Kann mir jemand einen Tipp oder eine funktionierende C-routine geben? Vielen Dank schon mal jetzt!! Rudi Ratlos