www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Beamer RS232 vom AVR aus (von PC geht)


Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte meinen Beamer von einem AVR aus bedienen
Es ist ein Mega32 im Einsatz und der läuft auch schon.

Den Beamer kann ich von einem PC aus ansteuern, indem ich con Hterm aus 
folgenden Befehl sende (Hex)
A9 17 15 00 00 00 17 9A

Dann geht der Beamer an und ich kann weitere Befehle senden.

Angeschlossen ist er wie folgt:
Beamer RS232 Buchse Pin 2 an PC COM1 Stecker Pin 3
Beamer RS232 Buchse Pin 3 an PC COM1 Stecker Pin 2
Beamer RS232 Buchse Pin 5 an PC COM1 Stecker Pin 5


Was muss ich jetzt machen, damit ich die Hex Daten an den Beamer von 
einem AVR aus senden kann.


Soviel habe ich schon erlesen:
TX
RX
Max232

Nur was brauche ich ???

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso - in Hterm habe ich folgendes eingestellt:
COM1 - 38.4 kbps - 8 Datenbits - 1 Stopbit - Parity auf EVEN

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MAX232 wandelt RS232-Pegel vom AVR zum PC-RS232-Pegel, siehe 
Standardschaltung. AVR wird wie in der Standardschaltung beschaltet, 
passenden Quarz nicht vergessen, und dann programmierst du ihm das eben 
rein.

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche programmiersprache?

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hüstel

Bascom

:-)

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such dir eine aus.

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den Beamer vom PC aus ansteuern, dann brauche ich keinen Max232

Wenn ich nun von einem AVR ansteuern will, muss ich doch einen zwischen 
machen.

Ist das richtig?



(serielle Übertrgaung ist neu für mich, daher die Fragen :-)  )

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offenbar brauchtest du keinen fuer den PC, also brauchst du fuer den AVR 
einen.

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag ich doch...

PC 12V -> Beamer 12V

Der AVR sendet aber nur 5V

Also 1 Max232 dazwischen...

Autor: Nutzer1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So ???

Bin mir mit den Spannungen nicht sicher.

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also alles 5V...

nur wie kommt der Max dann auf den 12V Pegel.
Den bekommt der Beamer so doch vom PC aus, wenn ich nur per 
Nullmodemkabel verbinde.

Teste kann ich das erst morgen, das schaffe ich heute nicht mehr.
(oh ist schon morgen)

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kondensatoren parallel, aufladen, Kondensatoren in Reihe, entladen. Ganz 
grob.

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

jetzt habe ich den Max232 incl Verbindung zu einem PC am laufen.
Ich kann mit Print auch Texte an den PC senden.

Dann habe ich folgendes Programm genommen und an den PC gesendet:
   $regfile = "m32def.dat"
   $crystal = 8000000
   $hwstack = 32
   $swstack = 10
   $framesize = 40
   $baud = 38400

   Config Rc5 = Pind.6

   Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.0 , Rs = Portd.7
   Config Lcd = 16 * 2
   Config Lcdbus = 4
   Cursor Off
   Cls

   Enable Interrupts

   Dim Address As Byte
   Dim Command As Byte

   Dim Block1 As Byte
   Dim Block2 As Byte
   Dim Block3 As Byte
   Dim Block4 As Byte
   Dim Block5 As Byte
   Dim Block6 As Byte
   Dim Block7 As Byte
   Dim Block8 As Byte

   Block1 = &HA9
   Block2 = &H17
   Block3 = &H15
   Block4 = &H00
   Block5 = &H00
   Block6 = &H00
   Block7 = &H17
   Block8 = &H9A

Main:

Do

   Getrc5(address , Command)
      If Address < 255 Then
         Locate 1 , 1 : Lcd "Adr: " : Lcd Address : Lcd "  Com: " : Lcd Command
         Command = Command And &B01111111
      End If

  If Command = 1 And Address = 5 Then Goto 1

Loop

1:

Print Hex(Block1) ; Hex(Block2) ; Hex(Block3) ; Hex(Block4) ; Hex(Block5) ; Hex(Block6) ; Hex(Block7) ; Hex(Block8)

Goto Main:


Am PC empfange ich A91715000000179A

Wenn ich das aber zu meinem Beamer sende, dann macht der nichts

???

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dim Block(8) as byte

 Block(1) = &HA9
   Block(2) = &H17
   Block(3) = &H15
   Block(4) = &H00
   Block(5) = &H00
   Block(6) = &H00
   Block(7) = &H17
   Block(8) = &H9A

Main:

Do

   Getrc5(address , Command)
      If Address < 255 Then
         Locate 1 , 1 : Lcd "Adr: " : Lcd Address : Lcd "  Com: " : Lcd 
Command
         Command = Command And &B01111111
      End If

  If Command = 1 And Address = 5 Then Goto 1

Loop

1:
Printbin Block(1) ; 8  ' <-------


und das: Enable Interrupts
brauchste nicht, da du ja noch keine IRQs benutzt

Autor: husten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher das du in Hex sendest und nicht dummerweise den ascii code davon?

sonst alles am µC genauso konfiguriert wie hterm am pc (parity etc)?

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich denn in Bascom folgende Sachen einstellen:
COM1 - 38.4 kbps - 8 Datenbits - 1 Stopbit - Parity auf EVEN


die kbps mache ich über $baud und den Rest?
Die Parity muss auf even stehen, sonst geht es nicht, habe ich gerade 
nochmal mit Hterm getestet.

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Enable Interupt brauche ich für die RC5 Geschichte...

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICH HABE ES HINBEKOMMEN !!!


FREU FREU FREU
   $regfile = "m32def.dat"
   $crystal = 8000000
   $hwstack = 32
   $swstack = 10
   $framesize = 40
   $baud = 38400

   Config Com1 = 38400 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0

   Config Rc5 = Pind.6

   Dim Address As Byte
   Dim Command As Byte

   Dim Block(8) As Byte

   Block(1) = &HA9
   Block(2) = &H19
   Block(3) = &H66
   Block(4) = &H00
   Block(5) = &H00
   Block(6) = &H00
   Block(7) = &H7F
   Block(8) = &H9A

   Enable Interrupts

Main:

Do
   Getrc5(address , Command)
   If Address < 255 Then
      Command = Command And &B01111111
   End If

  If Command = 1 And Address = 5 Then Goto 1

Loop

1:

Printbin Block(1) ; 8

Wait 1

Goto Main


VIELEN DANK AN ALLE, DIE MITGEHOLFEN HABEN...

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehst, geht doch. Und jetzt das Ganze bitte noch in Assembler.

Nee, schon gut, für Deinen Zweck ist Bascom in Ordnung. ;-)

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eins noch ... goto .. BRRRRRRRRRR

arbeite lieber mit gosub und return

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist an Goto so schlecht...

Funktioniert doch :-)

(Die Frage ist erst gemeint)

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gegenfrage, was machst du wenn command 2 ist für
anderen befehl?

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was machst du wenn nix deutsch schreibe gut versteh nix?

Autor: Nutzer1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Fhutdhb Ufzjjuz
  If Command = 2 And Address = 5 Then Goto 2

2:

:-)

Autor: dsgfsdfgsdfg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
siehste, und schon haste ne optimale Verwendung
der Sub.

Call Sendebefehl(command)

so brauchst Du nicht zig Unterroutinen
sondern kannst eine Zentrale
Senderoutine bauen ;o)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.