Serieller Empfänger mit AVR + BASCOM

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 21 12 2025  20:59:29      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 | 4 )      


Autor
Serieller Empfänger mit AVR + BASCOM
Suche nach: empfänger (4546)

    







BID = 68771

Jornbyte

Moderator



Beiträge: 7336
 

  


Die Schaltung ist für den Bidirektionalen Betrieb ausgelegt. Also Daten empfangen und senden (an den PC). Den rest habe ich nicht (noch nicht) gelesen

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 69157

Majuz

Neu hier



Beiträge: 24
Zur Homepage von Majuz

 

  

Hallo
ich habe jetzt mal ein programm geschrieben das eine Zahl über RS232 empfangen soll und dann auf einem LCD anzeigen.
es funktioniert soweit auch, nur zeigt er eine andere zahl an als ich übergebe.
wenn ich "1" übergebe zeigt er z.b. 192 an. eigentlich zeigt er bei allen zahlen etwas zwischen 192 und 196 an.

hier mal mein BASCOM-Code:



Code :


$regfile = "m8515.dat" 'Mega8515-Deklarationen
$crystal = 4000000
$baud = 1200 'Baudrate der UART: 9600 Baud
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0

Enable URXC 'Interrupt URXC einschalten
Enable Interrupts 'Interrupts global zulassen 'Interrupt-Routine setzen
On Urxc Schreiben
Dim I As Byte
Cls
Schreiben:
Cls
I = Udr
Lcd I
Return

End 'end program



Und hier mein Visual-Basic-Programm mit dem ich die Daten übermittle.



Code :


Dim a As Byte

Private Sub Command_send_Click()
a = Text1.Text
Call senden(a, 50) 'aufruf der unterfunktion zum senden
End Sub

Private Sub Form_Load()
MSComm1.InputMode = Binary 'Binaere Datenuebertragung
MSComm1.Settings = "1200, n, 8, 1" '1200Baud, no Parity, 8 Bits Data length, 1 Stop Bit
MSComm1.CommPort = 1 'COM1
MSComm1.PortOpen = True 'oeffnen des Ports
End Sub

Private Function senden(zahl, pause) 'unterfunktion zum senden der bytes
Dim out(2) As Byte '"as byte" muss dastehen weil sonst en fehler kommt
out(0) = 0 'erste zu übergebende zahl
out(1) = zahl 'zweite zu übergebende zahl
MSComm1.Output = out 'ausgabe der zahlen
Sleep (pause) 'pause
End Function



Ich ich verwende das MSComm - Objekt um die daten zu senden. ich weiß nicht ob der fehler am VB-programm oder am BASCOM-Programm liegt. ich hoffe ihr könnt mir helfen.
ich habe es auch schon ohne interrupts probiert (wie auf seite 1 geschrieben). kommt genau das gleiche raus.
muss ich dem µC noch sagen dass es keine parity, 8 databits und 1 stopbit sind?
einen normalen text habe ich auf dem LCD schon angezeigt und das hat einwandfrei funktioniert.

bitte helft mir!!!

Majuz

BID = 69177

Midnight

Stammposter



Beiträge: 256

Also bei Deinem Visual Basic kann ich Dir nicht weiter helfen..

Aber bei Deinem Bascom Programm hast Du irgendwie keine Hauptschleife drin...

Du schaltest den seriellen interrupt an, und wartest, bis der durch den Empfang ausgelöst wird, und dann springst Du in die Routine schreiben...
Daraus kommst Du mit nem Return zurück, dimensionierst i als Byte (bin mir nicht ganz sicher, aber aus der Seriellen kommt bei Bascom eigentlich ein String, und das bis zum CR)
Also solltes Du Deine Variable zumindest im Deklarationsteil oben definieren.
Dann rennt Dein Programm weiter in schreiben, und führt alles nochmal aus.
Das erreichen des jetzigen Returns sollte eigentlich ein riesen Problemdarstellen, denn eigentlich müßte er stehenbleiben, weil er nicht weiß wohin zurück.
Da Dein Programm aber scheinbar in einer Schleife läuft, springt der wohl unkontrolliert...
Du solltest i oben deklarieren, und Dein Warten in ne Schleife verpacken:

z.B.:

main:
On URXC schreiben
goto main

(Ich schau noch mal in die Doku, aber ich bin mir recht Sicher das Du aus der Seriellen ein String bekommst. Ob bei nem Interrupt nur ein Byte als String, oder aber bis zum CR (Carriege Return) da bin ich mir nicht sicher).
Normalerweise brauchst Du den Intterupt auch nicht, da Bascom bei nem INPUT eh solange wartet bis was kommt (muß dann aber mit CR abgeschlossen sein).

also z.B.:

main:

input i
lcd i

goto main

Gruß Midnight

BID = 69179

Majuz

Neu hier



Beiträge: 24
Zur Homepage von Majuz

danke.
werd ich morgen mal ausprobieren.
heut hab ich keinen kopf mehr dafür

Marius

BID = 69496

Majuz

Neu hier



Beiträge: 24
Zur Homepage von Majuz

hat leider noch nicht geklappt.
er zeigt immer 192 an.


BID = 69498

.

Stammposter



Beiträge: 214
Wohnort: Auf der Alm

192 ist doch eine sehr schöne Zahl, was gefällt dir daran nicht ?



Zum Trost ein kleines Gedicht, leider weiß ich nicht mehr wer es verfasst hat:


M. baut einen Tischcomputer,
der, sobald er angeknipst,
stets die Null zeigt - ja das tut er,
welche Taste du auch tippst.

In dem Kreis der Sachverständ'gen aus GI*) und Industrie
ließ sich kaum die Freude bänd'gen,
- doch ein Schlager ward er nie.


*) GI = Gesellschaft für Informatik

BID = 69505

Majuz

Neu hier



Beiträge: 24
Zur Homepage von Majuz

das ist wirklich ein sehr produktiver beitrag.
jemand was produktiveres zu sagen????

BID = 69510

Midnight

Stammposter



Beiträge: 256

versuch doch mal mit Hyperterminal ne serielle Direktverbindung zum Kontroller, und schau mal ob dann die Zeichen ankommen.
Wenn ja, dann liegt Dein Fehler wahrscheinlich irgendwo im VB Programm, wenn nein, dann lass mal den Simulator von Bascom laufen, ist zwar nicht der Brüller, aber zur einfachen Diagnose reicht der....

Gruß

Midnight


Vorherige Seite      
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 | 4 )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 18 Beiträge im Durchschnitt pro Tag       heute wurden bisher 6 Beiträge verfasst
© x sparkkelsputz        Besucher : 187865996   Heute : 13609    Gestern : 21855    Online : 252        21.12.2025    20:59
11 Besucher in den letzten 60 Sekunden        alle 5.45 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0355439186096