PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 PIC Verbindung



XDavidX
08.08.2005, 17:34
Hallo Leutle!
Ich habe aus "Hobbyistischen" Gründen ein PIC an die RS232 des PCs angeschlossen und
bekomme von diesem mehrere Bytes (8 Stück) nacheinander geschickt.
Diese befinden sich dann ja im Empfangspuffer der USART.
Nun meine Frage:
Wie bekomme ich die Einzelnen Bytes (im PC)
auseinander um sie z.B. Variablen zuzuweisen?? :-k
Ich habe schon ein Terminal Programm geschrieben, das mir die empfangenen Daten in einem Textfeld anzeigt (mit MSCOMM in VB).
Ich weiß allerdings nicht wie ich sie getrennt und einzelnen Variablen zugewiesen bekomme.
Ich wäre sehr dankbar wenn mir jemand weiterhelfen könnte!

PICture
29.10.2005, 19:02
Hallo XDavidX!
Ich bin ziemlich neu hier, aber wenn Dein Problem noch aktuell ist, kann ich Dir vielleicht helfen. So wie ich das verstanden habe möchtest Du Zahlen die als ASCII Zeichen representiert sind wieder als Zahlen haben, oder?
MfG

XDavidX
30.10.2005, 09:27
Hi PICture,
Danke für Dein Angebot. Die Geschichte hab ich aber schon in den Griff bekommen.
Die Antwort steht im PIC Forum. Hier konnte oder wollte mir keiner helfen :( . Danke trotzdem!

PICture
30.10.2005, 13:24
Hallo XDavidX!
Ich bin ziemlich neu hier und habe mir die unbeantwortete Probleme angeschaut und auf Dein Beitrag gestossen. Irgendwann möchte ich die Datenubertragung zwischen PC und PIC aufbauen, aber momentan bin ich mit anderen Themen beschäftigt. Sollte ich Probleme haben, darf ich Dich um Hilfe bitten? (Hoffentlich kommt es nicht vor) :)
MfG

XDavidX
30.10.2005, 18:58
Hi, PICture,
ja, klar darfst du … Dafür ist das Forum ja da. Wenn ich helfen kann dann helfe ich gern.
Mir wurde hier ja auch oft geholfen.
Wo bist du jetzt dran?

XDavidX
02.11.2005, 17:48
Hi PICture,
welche Software wolltest Du beschrieben haben? PIC oder PC-Seite?
Ich hab die PC Software in VB geschrieben sie ist Allerdings
nicht sehr leistungsfähig, da es nur ein versuch ohne ein 'Ziel'
war. Sie kann Bytes vom PIC empfangen und auch senden. Die
Zustände der Handshake Leitungen anzeigen und Teilweise setzen/löschen.

PIC Seite ist nicht schwer zu prog.. Hier ein bisschen Code. Ist Allerdings
aus mehreren Projekten zusammengestellt.
Bin auch noch nicht lang dabei (mit den PICs) und mache das nur als Hobby wenn ich Zeit hab.

Gruß David





; Interruptroutine für RS232-Empfang

org 4 ; Interrupt Adresse 4

int
movwf w_temp ; status retten
swapf STATUS,w
movwf status_temp

;RS232-Empfänger-Interupt?
btfss PIR1,RCIF
goto intEnde ; Interrupt kam von wo anders

movfw RCREG ; RS232-Register auslesen
movwf Zeichen ; und in den Speicher nach 'Zeichen' schreiben
movwf PORTD
bsf DatenSindDa,0 ; Kennzeichen für gültige Daten setzen
bcf PIR1,RCIF ; interrupt-Flag löschen

intEnde ; geretteten Status wieder zurückschreiben
swapf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
retfie




; USART initialisieren
BSF STATUS,RP0 ; Bank1
MOVLW 0x20 ; Sender: RS232
MOVWF TXSTA ;
BCF STATUS,RP0 ; Bank 0
MOVLW 0x90 ; Empfänger: RS232
MOVWF RCSTA ;

; USART Baudrate einstellen
BSF STATUS,RP0 ; Bank1
MOVLW D'8' ; Set Baud rate 28800 BPS bei 4 MHz
MOVWF SPBRG
BSF TXSTA, BRGH ; BRGH=1
BCF STATUS,RP0 ; Bank 0

;Interrupts vorbereiten
BSF STATUS,RP0 ; Bank1
BSF PIE1,RCIE ; Enable receive interrupts
BCF STATUS,RP0 ; Bank 0
clrf PIR1 ; alle Interruptflags löschen
clrf PIR2
BSF INTCON,GIE ; generell Interrupts erlauben
BSF INTCON,PEIE ; Interrupts von Peripheriegeräten erlauben

SMR
30.11.2005, 18:32
Hallo lieber Freude,

Es würde mich sehr interessieren David wie du eine Verbindung zwischen PC und PIC und umgekehrt über RS232 progammieren hast?

Ich will meine Schrittmotoren mit einem PIC über RS232 steuern. Im PC will ich ein GUI mit MATLAB programmieren.Damit kannn ich werte bzw Variablen zu PIC schicken und vom PIC lesen.

Ich bin neu in dem Gebiet und ich wäre dir dankbar wenn du mir einige Tipps gibst. Weil ich nicht weiss, woo ich anfangen soll

MFG

PICture
30.11.2005, 19:41
Hallo XDawidX!
Vielen Dank für Dein Code. Ich werde beides (PC und PIC) in assembler programieren. Ich möchte mir ein "Softwareentwicklungwerkzeug" schaffen, das mir ermöglichen sollte, Daten in und aus PIC RAM schreiben und Testprograme im Programmspeicher vom PIC zu starten. Ich denke auch auf die kleinsten PIC also ohne UART. Wenn es zu viel Programmspeicher beaanschpruchen sollte, werde ich nur RAM inhalt auslesen und das Testprogramm normal per Einschalten starten. Bis jetzt habe ich das "Werkzeug" hardwaremässig mit einem Miniterminal aus Nokia 3310 handy Display und 3 Tasten realisiert, aber das kann ich nur für die "grossen" PICs anwenden, da die Software ca. 2 kB im Programmspeicher des PICs belegt. Es ermöglichst nur Inhalt von 16 RAM Speicherstellen eingeben, nur 16 Programme starten und nur 48 RAM Speicherstellen nach der ausführung des Testprogramms auslesen. Das reicht eigentlich in der Praxis aus, ist aber für die kleinen PICs nicht benutzbar und für "kleine" Anwendungen will ich auch effizient Programme schreiben. Ich bin gewöhnt an solches "Werkzeug", weil ich früher viel andere Prozessoren 6205, Z80, 8032 mit externen RAM und EEPROM per LPT mit PC verbunden habe. Und ich habe während der Programmsentwicklung immer direkten Zugriff auf RAM und Programmspeicher gehabt. Beim Umstieg auf PICs hat mir das sehr gefehlt. Jetzt habe ich noch Probleme mit dem kleinsten PICs, das möchte ich aber auch irgendwie simple lösen. Vielleicht den "kleinen" mit dem "grossen" verbinden? Weiss ich noch nicht. Ich bin aber sicher, dass es vor allem für die "Anfänger" tolle Sache wäre, oder?
MfG

XDavidX
03.12.2005, 20:21
@PICture
Hi,
also, so wie ich das sehe bist Du mir Lichtjahre voraus...
Deine "Werkzeug", solltest du mal damit fertig sein, würde ich mir schützen lassen und dann versuchen zu Vermarkten. Klingt nach einer super Sache!

Gruß David

XDavidX
03.12.2005, 20:22
HI SMR,
du wolltest mehr über die Verbindung von PIC und PC wissen.
Ich war eine Weile nicht mehr online.
Wenn du noch Interesse hast dann sag mir bescheid.

04.12.2005, 09:47
Hallo David,

Ich habe immer noch interesse.Mein Matlab GUI habe s fertig programmiert.Bleibt es wie erstelle ich eine Verbinduing zwischen GUI und PIC über RS232.

Vielen Dank im Voraus für die Antwort.
MFG

XDavidX
04.12.2005, 16:43
@SMR

Ich weiß nicht was für ein PIC du benutzen willst/musst und kenne mich auch mit Matlab nicht aus. Aber evtl. bringt dich das ein wenig weiter.
- Ein asm Code für Mein PIC 16f784. Es benutzt die USART des PICs und war mein erstes Testprogramm.
Ein Wert der über Rx empfangen (per Interrupt) wird, wird am LCD angezeigt(ASCI)
;RS232,28800 BPS,P16F874 mit 4MHz
- Die Pinbelegung von Diversen PC Anschlüssen als pdf.
Wenn du mit 28800bps ein Wert oder Zeichen an den PIC sendest wird es am LCD angezeigt.
Du musst natürlich Tx des PC mit Rx des PICs (z.B. über ein MAX232)verbinden.
Du kannst die Werte/Zeichen mit jedem Terminalprogramm senden.
Danach (wenn das klappt) kannst du ja die Werte im PIC weiterbearbeiten.
Wenn du noch fragen hast melde dich.

Mit freundlichen Grüßen

SMR
04.12.2005, 20:50
Hallo David,

Vielen Dank für die info.Ich will den 16F876 benutzen evt. 16F877 falls ich mehr Pins brauche.

MFG
SMR

XDavidX
05.12.2005, 17:21
Dann brauchst du das Programm das ich dir zum downloade reingesetzt habe nur leicht zu verändern und es müsste auch auf 76/77 passen.
Hast du eigentlich ein Brenner? Wenn nein, dann kann ich dir den Brenner5 von Sprut.de empfehlen. Musst nur löten können :cheesy:

Mit freundlichen Grüßen

05.12.2005, 21:10
Hallo David,

Vielen Dank mehrmals!Ich habe ein Microchip Development Tools ein Art Programiergerät für PICs mit Software MPlaB.

Ich wollte diese Schaltung bauen
https://www.roboternetz.de/wissen/index.php/Bild:Icrnst01schaltplan.gif

Aber mit einem 16F876!hast du eine Idee wie ich s anschliessen könnte?

Merci cher ami

MFG

SMR
05.12.2005, 21:32
Pardon David aber war vorhin nicht eingelogt

MFG
SMR

XDavidX
07.12.2005, 20:27
Hallo,
was meinst du mit anschliessen? Oder meinst du ansteuern (befehle)?
Anschliessen tust du die Klemme (auf dem schaltplan unten links) dirkt
an die RS232 des PCs. Klemme 1 an TxD, 2 an GND, 3 an RxD so wie
ich das sehe. Über die Befehle die du senden musst kann ich dir leider
noch nichts sagen, muss ich erst selber suchen.

Gruß

SMR
17.12.2005, 10:34
Salut David,

Leider konnte ich erst heute deine Nachrichht lesen.Ich wollte wissen wie schliesse ich mein PIC im Schaltplan an?In der obige Schaltung wird ein anderen Controller verwendet.

Aber inzwischen ´hat sich das erledigt.

Vielen Dank

MFG
SMR

PICture
17.02.2006, 09:15
Hallo XDawidX!

Ich habe mich doch entschieden, mein "Werkzeug" ohne PC zu machen. Ich habe das Programm mit Matrixdisplay 4x20 Zeichen auf ca. 250 Bytes reduzieren können, und damit die untere Grenze erreicht. Der Miniterminal mit 3 Tasten ist gleich geblieben. Ich möchte das "Werzeug" nicht schützen, sondern bald hier im Forum "PIC Controller" veroffentlichen. Die Verbindung RS232-PIC werde ich jedoch für andere Zwecke brauchen.

Ich möchte mich bei Dir für Deine Hifsbereitschaft bedanken. :)

MfG

XDavidX
17.02.2006, 18:06
klingt ja echt Toll =D>
Freue mich schon auf Deine Veröffentlichung!!!

Gruß David

Starchild
16.04.2006, 11:36
Ich soll eine Matlab GUI zur Kommunikation zwischen PC und AVR über RS232 schreiben, habe aber noch Probleme mit der Programmierung in Matlab.
Hat jemand fertigen Sourcecode den er veröffentlichen könnte?