-         

Ergebnis 1 bis 4 von 4

Thema: RS232 Empfangsprobleme (PIC 16F627)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.01.2006
    Beiträge
    101

    RS232 Empfangsprobleme (PIC 16F627)

    Anzeige

    Hallo!

    Ich möchte an den PIC 16F627 Daten vom PC aus senden und umgekehrt.
    Das Senden klappt..
    Nur das Empfangen krieg ich irgendwie nicht richtig hin.

    Ein Zeichen soll über "polling" eingelesen werden:

    Code:
    RS232in 
        btfss   PIR1,RCIF       ; sind Daten da ? 
        goto    RS232in          ; nein, noch keine Daten da 
        movfw   RCREG         ; RS232-Register auslesen 
        movwf   controlByte  ; und nach 'controlByte' schreiben
    Allein da scheiterts schon...

    Initialisiert habe ich die RS232 mit folgendem Code:

    Code:
    controlByte		equ	0x20
    
    
    org		0x00
    	goto reset
    ;----------------------------------------------------------------
    
    ;interrupt
    org		0x04
    
    	retfie
    ;-----------------------------------------------------------------
    reset
    
        clrf     controlByte 
    
       ;bank 1
    	bsf		STATUS,	RP0
    ;init rs
    	movlw		d'25'			;baud 9600
    	movwf		SPBRG
    
    	movlw		b'00100100'		;transmit enable, high baud
    	movwf		TXSTA
    
    	movlw		b'00000000'		;alle Ports als Ausgang
    	movwf		TRISB
    	movwf		TRISA
    
    	bcf			STATUS,	RP0
    	
    	;bank 0
    ;init rs
    	movlw		b'10010000' 	;enables rs,  continuos reception
    	movwf		RCSTA
    
    	bcf      INTCON,GIE 		;generell Interrupts sperren 
    
    	goto 	main
    Scheinbar wird das RCIF flag nie gesetzt

    Der PIC wird an einem 4 MHZ Schwinger betrieben und zwischen PC und PIC sitzt ein MAX232 (Schaltung mit anderen Controllern getestet)

    Ein Beispiel von Sprut.de habe ich auch schon ausprobiert, hat leider nicht funktioniert.


    Für Hilfen und Tips wäre ich dankbar

    Gruß

    Jörn Arne

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo Jörn Arne!

    Mir ist nur eingefallen, dass Du alle Portpins als Ausgänge initialisiert hast. Muss der RX Pin nicht als Eingang initialisiert werden ?

    MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    In dem Link http://www.domnick-elektronik.de/picasm.htm wird die SIO eines PIC16F877 mit 9600 Baud in Assembler genutzt. Vielleicht kannst Du dort was 'abkupfern'.
    Der Empfang erfolgt per Interrupt; die empfangenen Bytes werden in einem Ringpuffer abgelegt und 'irgendwann' mal ausgewertet.
    Das Senden erfolgt von einem 1ms-Interrupt aus, indem jeweils überprüft wird, ob etwas zum Versenden im Ringpuffer liegt und ob der Sendepuffer frei ist.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.01.2006
    Beiträge
    101
    Hallo!

    Vielen Dank für eure Antworten, es scheint als hätte es wirklich am TRISB Register gelegen! Ich dachte zu erst, dass die Portfunktion die TRISB Registereinstellung umgeht.

    Das Beispiel schau ich mir auch mal an, kann man bestimmt was lernen.

    Also noch mal Danke!

    Gruß
    Jörn Arne

Berechtigungen

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