RS485 keine richtige Kommunikation! - Empfange immer nur "FF"(Hex)
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  Schnittstellen (Assembler)  |  RS485 keine richtige Kommunikation! - Empfange immer nur "FF"(Hex) « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: RS485 keine richtige Kommunikation! - Empfange immer nur "FF"(Hex)  (Gelesen 2397 mal)
 
Nase
Newbie
*
Offline Offline

Beiträge: 7


Profil anzeigen
« am: Mai 07, 2011, 22:38:19 »

Hallo,
langsam bin ich am Verzweifeln.
Seit meinem letzten Post bin ich an der RS485 am basteln.
Ein 16F687 mit 8MHz als "Sender" und ein 16F1823 mit 8MHz als Empfänger wollen einfach nicht Zusammenarbeiten.
Die relevanten Einstellungen für den "Sender":
Code:
list p=16f687
include "p16f687.inc"
__CONFIG _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

;##########################################################################################

org 0x00

BSF STATUS,RP0
BSF OSCCON,IRCF2 ;\
BSF OSCCON,IRCF1 ; > Oszillatorfrequenz 8MHz
BSF OSCCON,IRCF0 ;/
BSF OSCCON,SCS ;
MOVLW 0x00
MOVWF OSCTUNE
BCF STATUS,RP0
;.......weitere Einstellungen


Befehl01 ;Unterprogramm für Taste "1"

BSF RCSTA,SPEN
BSF PORTB,0x6 ;Schaltet RS 485 (MAX487) auf "Senden"
BSF STATUS,RP0
    BSF     TXSTA, BRGH ;Low-speed
BSF BAUDCTL,BRG16         ;8-Bit-BRG
BCF TXSTA,TX9 ;9-Bit-Übertragung aus
BCF TXSTA,TX9D ;AdressÜbertragung aus
BCF TXSTA,SYNC ;UART im Asyncronmodus
MOVLW   D'51'                  ;Baudrate
    MOVWF   SPBRG
BSF TXSTA,TXEN
BCF STATUS,RP0
MOVLW D'1' ;Eintragung des zu Sendenden Bytes
MOVWF TXREG ;Übergib Adress-Byte an den Sender
BSF STATUS,RP0
BTFSS TXSTA,TRMT
goto $-1 ;Warte, bis Byte gesendet wurde
BCF STATUS,RP0 ;RS 485 auf "Empfang" schalten
Und die Einstellungen des Empfängers:
Code:
; Empfänger: PIC 16 F 1823


list p=16f1823
include "p16f1823.inc"

__CONFIG _CONFIG1, _FCMEN_OFF & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _WDTE_OFF & _FOSC_INTOSC
__CONFIG _CONFIG2, _LVP_OFF & _PLLEN_OFF

org 0x00

Init
;Oszillatorfrequenz einstellen
BANKSEL OSCCON
MOVLW B'01110000' ;8MHz
MOVWF OSCCON
MOVLW 0x00
MOVWF OSCTUNE
;......weitere Einstellungen

main
BANKSEL SPBRGL
BCF BAUDCON,BRG16 ;8-Bit-BRG
BSF RCSTA,SPEN ;SeriellPort ein
BSF RCSTA,CREN
BSF RCSTA,SREN ;Empfänger ein
BCF TXSTA,SYNC ;Sender: Asyncron
BCF     TXSTA, BRGH ;Sender: LowSpeed
MOVLW   D'51'          ;Baudrate 9600 bei 8MHz
MOVWF SPBRGL
MOVLW 0x00
MOVWF SPBRGH
BANKSEL 0x00


main_1
BANKSEL 0x00
BTFSS PIR1,RCIF ;Frage das Empfangsbit ab  -  Etwas Empfangen: nächste Zeile Überspringen
goto main_1 ;kein Empfangsbit - der Empfänger ist leer, also zurück
BANKSEL RCSTA ;Bank 3 wählen
BTFSC RCSTA,OERR ;Überlauf-Bit abfragen - kein Überlauf: nächste Zeile Überspringen
goto Überlauf ;Überlauf! Empfänger zurücksetzen und "main_1" neu starten
BANKSEL RCSTA
BTFSC RCSTA,FERR ;Frame-error erkannt? wenn nein, dann Überspringe nächste Zeile
goto Fehler ;Frame-error! - Empfänger zurücksetzen und "main_1" neu starten
BANKSEL RCREG
MOVF RCREG,W ;kopiere Empfangsregister nach "W"
BANKSEL 0x00
;....wenn ich jetzt W auslese erhalte ich immer FF(Hex)

Warum entspricht das Empfangbyte nicht dem Sendebyte?
Wenn ich mit der Baudrate rumspiele, ist Auffällig, dass entweder ein Frame-Error kommt, oder halt "FF".
Sende ich zu schnell nacheinander, erhalte ich auch einen Überlauf, das Funktioniert soweit.

Kann mir bitte jemand helfen?

Danke, und Gruß
Jens


Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #1 am: Mai 08, 2011, 16:53:41 »

Hallo Jens,
kannst du mal bitte die Beschaltung der Treiber zeigen.
Möchte erstmal nur die Pegel und die Terminierung prüfen.
Bevor ich/man sich in Assembler einarbeitet, sollte die Hardware stimmen.
Tschau Oerni
Gespeichert
Nase
Newbie
*
Offline Offline

Beiträge: 7


Profil anzeigen
« Antworten #2 am: Mai 08, 2011, 20:58:24 »

Hallo Oerni,
ich versuche mal 2 Bilder Einzustellen:
Gut, hat geklappt. Also Bild 1 ist die Beschaltung des "Empfängers" auf das Wesentliche reduziert.
Auf Bild 2 ist die Beschaltung der Senderbeschaltung zu sehen.
Die "Datenleitung" ist ca. 40cm lang, daher nur der "Abschlusswiderstand" am Sender.
Gruß Jens


* image001.jpg (46.71 KB, 721x448 - angeschaut 130 Mal.)

* image003.jpg (63.32 KB, 757x616 - angeschaut 143 Mal.)
« Letzte Änderung: Mai 08, 2011, 21:17:02 von Nase » Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.041 Sekunden mit 19 Zugriffen.
 
Top! Top!