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

Thema: PIC-Lernbeispiel: RS232-Interface

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.05.2005
    Ort
    Zürich
    Beiträge
    50

    PIC-Lernbeispiel: RS232-Interface

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    Ich möchte das folgende Lernbeispiel von sprut.de zum laufen bringen:
    http://sprut.de/electronic/pic/programm/rs232.htm

    Die Schaltung habe ich erfolgreich zusammengebaut.
    Das Programm ser_rx.asm habe ich insofern erweitert, dass am Anfang eine LED 2x blinkt.

    Ich schicke nun vom PC via RS232 Kabel Daten an die Testschaltung, aber nichts geschieht.

    Ich habe das PC inteface separat getestet, da läuft alles ok, d.h. Baud 9600, 8 databit, 1 stopbit und parity none.
    Das RS232 Kabel ist 2m lang.

    Wer kann mir einen Tipp geben, was evt falsch ist od wie kann ich den Fehler finden?

    Danke für jegliche Hilfe.
    Gruss
    Sam

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.09.2004
    Ort
    Hamburg
    Alter
    43
    Beiträge
    37
    Hast du 4Mhz als frequenz am Pic?

    So long...

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.05.2005
    Ort
    Zürich
    Beiträge
    50
    Zitat Zitat von TomHumpen
    Hast du 4Mhz als frequenz am Pic?
    Ja ich habe 4MHZ am PIC.

    Ich benutze den PIC 16F628; kann ich mit diesem evt nur via USART kommunizieren?

    Danke, Gruss
    Sam

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.09.2004
    Ort
    Hamburg
    Alter
    43
    Beiträge
    37
    Die Software Variante müßte in jedem Fall gehen, da du nur 2 IO Pins benutzt und das auswerten kein Problem macht. Wenn er USART on Board hat würde ich es nehmen, da mit einem MAX232 weniger Fehler, weil keine Berechnung der Abstände der Bits nötig sind. Auch sinbd die Pins hier schon am Pic vorgesehen.

    Ansonsten: Hast du als Eingang (RS232 RX auch Pin A3 genommen wie im Sprut-Prog?). Ich kann auch nur raten und überprüf nochmal ob du die Portbelegung, wie Sprut sie nahm auch angelötet hast. Viel erfolg!

    So long...

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    versuch erstmal, vom pic daten an den pc zu senden. ist imho einfacher, weil du dann am pc sachen wir baudrate und so einfacher ändern kannst, falls sie falsch ist. ausserdem siehst du, ob du überhaupt irgend nen signal bekommst. wenn du deinen pic so geproggt hast, dass er z.b. bei einem empfangenen "A" ne led anmacht und er irgendein sonderzeichen wegen störungen, falscher baudrate oder wasweissich kriegt, dann kann dabei ja nix rauskommen. also einfach mal ne schleife schreiben, mit der der pic immer wieder nen wort oder nen zeichen sendet. und dann kannst du in aller ruhe an deiner schaltung und an der verbindung und an den einstellungen basteln, bis du was brauchbares reinbekommst.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    darf ich fragen, was dabei jetzt rausgekommen ist?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.05.2005
    Ort
    Zürich
    Beiträge
    50
    Ich habe die nachfolgende Schaltung genommen, einen 4MHZ Quartz angehängt und nun läuft alles super - echt genial!
    http://www.oz1bxm.dk/PIC/628uart.htm

    Nun 'kämfpe' ich aber mit der folgenden Frage...
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=10507

    --
    Gruss
    Sam

  8. #8
    Gast
    Moin Moin,
    habe mich in letzten Wochen bißchen versucht einzuarbeiten tutorials geleesen und so allerdings habe ich noch nit die möglich direkt zu testen da ich erst alles Theoretisch fertig haben soll.
    Soweit so gut habe auch das Beispiel genommen und wollte sogar den PIC 16F628 benutzen.
    Ich soll ein bestimmtes Signal das ich Einstellen kann abfangen und ein Relais durchschalten.
    Habe denke auch soweit lauf fähig nur finde ich nichts um das Signal zu vergleichen das ich von der RS232 schnittstelle bekomme.
    Wenn ich zum beispiel in einer Speicherzellespeicher und dann mit einer anderen vergleichen will oder so ?!
    hat da jemand ne idee oder ahnung ?

    mfg oxmox

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    39
    Beiträge
    456
    Sicher, es ist eigentlich einfach... Du hast zwei Werte, die übereinstimmen sollen, welche, sag ma in einer Speicherzelle s und dem Arbeitsregister abgelegt sind:

    Du musst dich fragen, wie vergleichst du z.B.: zwei Zahlen, ob sie identisch sind, wenn du "nur" addieren und subtrahieren zur Verfügung hast. Du subtrahierst die beiden Zahlen voneinander und schaust, ob das Ergebniss 0 ist. Wenn ja, sind beide Zahlen identisch.

    Code:
    movlw  D'64'
    subwf   s
    BZ   identisch
    MfG
    Mobius

  10. #10
    Gast
    Code:
            LIST P=16F628, R=DEC    
            #include "P16F628.INC"  
            
            CBLOCK 0x20             ; Declare variable addresses starting at 0x20
    	  dataL
            ENDC
    
            ORG    0x000            ; Program starts at 0x000 
    ;
    ; --------------------------------
    ; SET ANALOG/DIGITAL INPUTS PORT A
    ; --------------------------------
    ;
    	movlw 7			
    	movwf CMCON		
    
    ; ---------------- 
    ; INITIALIZE PORTS
    ; ---------------- 
    ; 
    		movlw b'00000000'   
            movwf PORTA			
            
            movlw b'00000100'	
            movwf PORTB			
    
            bsf STATUS,RP0      
            movlw 0xFF			
            movwf TRISA			
            movlw b'11110010'	 
            movwf TRISB
    
    ; ------------------------------------
    ; SET BAUD RATE TO COMMUNICATE WITH PC
    ; ------------------------------------
    ; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
    ;
            movlw 0x19              ; 0x19=9600 bps (0x0C=19200 bps)
            movwf SPBRG
            movlw b'00000100'       ; brgh = high (2)
            movwf TXSTA             ; schaltet brgh high ein
    
            bcf STATUS,RP0          ; RAM PAGE 0
    
            movlw b'10010000'       ; schaltet seriellen port ein 
            movwf RCSTA
    ;
    ; ------------------------------------
    ; PROVIDE A SETTLING TIME FOR START UP
    ; ------------------------------------
    ;
            clrf dataL
    settle  decfsz dataL,F
            goto settle
    
            movf RCREG,W
            movf RCREG,W
            movf RCREG,W            ; flush receive buffer
    ;
    ; ---------
    ; MAIN LOOP
    ; ---------
    ;
    	
    loop    call receive            ; wait for a char
    	call vergleich               
            goto loop
    ;
    ; -------------------------------------------
    ; SIGNALE VON DER RSR232 SCHNITTSTELLE EMPFANGEN
    ; -------------------------------------------
    ; This routine does not return until a character is received.
    ;
    receive btfss PIR1,RCIF         ; (5) check for received data
            goto receive
    
            movf RCREG,W            ; speichert das empfangende in W
            return
    ;
    ; -------------------------------------------------------------
    ;AUSWERTEN
    ; -------------------------------------------------------------
    ;
    
    vergleich
    
    	BTFSS W,b'00000001'
    	goto receive
    	bsf PORTA,b'00000001'
    	goto vergleich
    		
    	END
    da ich ja das eingangs signal bestimmen kann hab ich es so gelöst
    allerdings habe ich noch ne verständniss frage undzwar:

    habe ja datenblatt durchforstet habe soweit alle register verstanden allerdings noch nicht ganz was folgendes soll:
    Code:
    	movlw 7			
    	movwf CMCON
    was iss das CMCON genau verstehe das was sie im datenblatt sagen wolle nicht genau im datenblatt steht auch nur When CM2:CM0: = 001 und einmal 010 aber in dem beispiel sind alle auf 111.

    Und selbst wenn nun 010 wäre was soll heißen C1 Vin- connetcs to RA0

    und das mit den muss ich noch rausfinden

    bsf STATUS,RP0

    aber das finde ich selbst noch raus

    mfg vielen dank schonmal für die letzte hilfe oxmox

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad