- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Frage zu RS232

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2008
    Ort
    Süderstapel
    Alter
    38
    Beiträge
    23

    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

  2. #2
    Hallo Scuido,

    kommt bei Dir garnichts am Computer an?

    Oder hast du wire Zeichen?

    Gruß Wolfgang

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2008
    Ort
    Süderstapel
    Alter
    38
    Beiträge
    23
    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é

  4. #4
    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

  5. #5
    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



  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2008
    Ort
    Süderstapel
    Alter
    38
    Beiträge
    23
    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é

  7. #7
    Hallo,

    da war ich zu schnell im Datenblatt.

    Gruß

    Wolfgang

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2008
    Ort
    Süderstapel
    Alter
    38
    Beiträge
    23
    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

  9. #9
    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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2008
    Ort
    Süderstapel
    Alter
    38
    Beiträge
    23
    hey danke,

    habe den 16F877A

    gruß
    André

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen