-
-
Neuer Benutzer
Öfters hier
Frage zu RS232
Hey,
mein Problem ist, ich habe versucht eine RS232 verbindung zum PC aufzubauen. Leider kommt nicht das an was ich erwarte.
Ich habe den PIC ohne Pegelkonvertierung an den PC geschlossen. Mir ist auch klar, dass die pegel invertiert werden. Ich sitze nun schon seit drei Tagen an dem Problem und weiß nicht mehr weiter.
Gruß
André Iwers
;*****************************************
list p=16f877A
;* PORTC: I/O
;* 0 -
;* 1 - ;* 2 -
;* 3 -
;* 4 -
;* 5 -
;* 6 - TX RS232
;* 7 - RX
; Taktquelle: 4 MHz
#include <P16f877A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF
org 0x00
Init
bsf STATUS, RP0
movlw B'10111111' ; I/O
movwf TRISC
bcf STATUS, RP0
; USART initialisieren
bsf STATUS,RP0 ; Bank1
movlw 0x24 ; Sender: RS232 7 TXEN, BRGH = 1
movwf TXSTA ;
bcf STATUS,RP0 ; Bank 0
movlw 0x90 ; Empfänger: RS232
movwf RCSTA ;
; USART Baudrate einstellen
bsf STATUS,RP0 ; Bank1
movlw D'25' ; Set Baud rate 9,6 kBPS bei 4 MHz
movwf SPBRG
bcf STATUS,RP0 ; Bank 0
;************************************************* *****************
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 'B' ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xAA ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0x0A ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xA0 ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
start
goto start
end
-
Neuer Benutzer
Öfters hier
Hallo Scuido,
kommt bei Dir garnichts am Computer an?
Oder hast du wire Zeichen?
Gruß Wolfgang
-
Neuer Benutzer
Öfters hier
hey,
irgendwie kommt nur mist an, habe aber glaube ich den fehler gefunden. ich muss die pegel ja invertieren wenn ich die hardware vom pic benutzen möchte. kann es bloß im mom net ausprobieren. schreibe aber wenns funzt.
gruß
andré
-
Neuer Benutzer
Öfters hier
Hallo,
bei mir war das gleiche Problem.
Ich habe den PIC auf irgend einem PIN senden lassen, und das alles mit HTerm angesehen. Ich hatte nur wire Symbole. Bis mich jemand auf die Jdee gebracht hatte HTerm auf zwei stopbits zu setzen.
Siehe da die Symbole wurden besser. Ich denke wenn am Programm
gefeilt wird klapts auch.
Manchmal ist die Baudrate etwas daneben, und schon sind die Symbole wirr.
Teile mir Bitte mit wen du den Fehler gefunden hast.
Den PIC kannst du mit dem PC verbinden, auch ohne Pegelwandler.
Aber nur wenn der PIC Sendet.
Soll der PIC als Empfänger arbeiten, dann braucht nur ein ca. 22KOhm Wiederstand vorgeschaltet werden.
Grüße und gutes Gelingen
Wolfgang
-
Neuer Benutzer
Öfters hier
Hallo,
ich nochmal.
Vermutlich hast du die Baudrate falsch eingestellt.
Dein Code:
; USART Baudrate einstellen
bsf STATUS,RP0 ; Bank1
movlw D'25' ; Set Baud rate 9,6 kBPS bei 4 MHz
movwf SPBRG
bcf STATUS,RP0 ; Bank 0
bei 4 MHz bist du bei 2400 Baud
Lt. Datenblatt
Versuche mal:
; USART Baudrate einstellen
bsf STATUS,RP0 ; Bank1
movlw D'6' ; Set Baud rate 9,6 kBPS bei 4 MHz
movwf SPBRG
bcf STATUS,RP0 ; Bank 0
Gruß Wolfgang
-
Neuer Benutzer
Öfters hier
hey,
habe ich mir auch schon gedacht.
ich habe aber BRGH auf 1 gesetzt. daher muss man 25 nehemen um auf 9,6 zu kommen. wenn du BRGH auf 0 setzt hast du natürlich recht. einzige problem ist nur bei BRGH = 0, dass der Fehleranteil bei ca 7% liegt und bei BRGH = 1 nur bei 0,16%
gruß
André
-
Neuer Benutzer
Öfters hier
Hallo,
da war ich zu schnell im Datenblatt.
Gruß
Wolfgang
-
Neuer Benutzer
Öfters hier
hey,
also ich habe nun alles ausprobiert (hardware und software) und immer habe ich das problem, dass das terminalprogramm verdammt viele bytes anzeigt obwohl ich nur ein sende. er empfängt so lange bytes bis ich alles ausschalte.
ich weiß net mehr weiter
gruß
andre
-
Neuer Benutzer
Öfters hier
Hallo Andre,
ich wede Dir mal eine HEX-Datei zukommenlassen. Die solltest DU dann mal reinbrennen, und mir bescheidgeben ob es funktiniert.
Kann ich aber erst heute abend.
Gruß Wolfgang
-
Neuer Benutzer
Öfters hier
hey danke,
habe den 16F877A 
gruß
André
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen