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


von Nutzer1 (Gast)


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 ???

von Nutzer1 (Gast)


Lesenswert?

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

von Sachich N. (dude) Benutzerseite


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.

von Weingut P. (weinbauer)


Lesenswert?

welche programmiersprache?

von Nutzer1 (Gast)


Lesenswert?

hüstel

Bascom

:-)

von Sachich N. (dude) Benutzerseite


Lesenswert?

Such dir eine aus.

von Nutzer1 (Gast)


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 :-)  )

von Sachich N. (dude) Benutzerseite


Lesenswert?

Offenbar brauchtest du keinen fuer den PC, also brauchst du fuer den AVR 
einen.

von Nutzer1 (Gast)


Lesenswert?

Sag ich doch...

PC 12V -> Beamer 12V

Der AVR sendet aber nur 5V

Also 1 Max232 dazwischen...

von Nutzer1 (Gast)


Angehängte Dateien:

Lesenswert?

So ???

Bin mir mit den Spannungen nicht sicher.

von Sachich N. (dude) Benutzerseite


Lesenswert?


von Nutzer1 (Gast)


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)

von Sachich N. (dude) Benutzerseite


Lesenswert?

Kondensatoren parallel, aufladen, Kondensatoren in Reihe, entladen. Ganz 
grob.

von Nutzer1 (Gast)


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:
1
   $regfile = "m32def.dat"
2
   $crystal = 8000000
3
   $hwstack = 32
4
   $swstack = 10
5
   $framesize = 40
6
   $baud = 38400
7
8
   Config Rc5 = Pind.6
9
10
   Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.0 , Rs = Portd.7
11
   Config Lcd = 16 * 2
12
   Config Lcdbus = 4
13
   Cursor Off
14
   Cls
15
16
   Enable Interrupts
17
18
   Dim Address As Byte
19
   Dim Command As Byte
20
21
   Dim Block1 As Byte
22
   Dim Block2 As Byte
23
   Dim Block3 As Byte
24
   Dim Block4 As Byte
25
   Dim Block5 As Byte
26
   Dim Block6 As Byte
27
   Dim Block7 As Byte
28
   Dim Block8 As Byte
29
30
   Block1 = &HA9
31
   Block2 = &H17
32
   Block3 = &H15
33
   Block4 = &H00
34
   Block5 = &H00
35
   Block6 = &H00
36
   Block7 = &H17
37
   Block8 = &H9A
38
39
Main:
40
41
Do
42
43
   Getrc5(address , Command)
44
      If Address < 255 Then
45
         Locate 1 , 1 : Lcd "Adr: " : Lcd Address : Lcd "  Com: " : Lcd Command
46
         Command = Command And &B01111111
47
      End If
48
49
  If Command = 1 And Address = 5 Then Goto 1
50
51
Loop
52
53
1:
54
55
Print Hex(Block1) ; Hex(Block2) ; Hex(Block3) ; Hex(Block4) ; Hex(Block5) ; Hex(Block6) ; Hex(Block7) ; Hex(Block8)
56
57
Goto Main:


Am PC empfange ich A91715000000179A

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

???

von Weingut P. (weinbauer)


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

von husten (Gast)


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)?

von Nutzer1 (Gast)


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.

von Nutzer1 (Gast)


Lesenswert?

Das Enable Interupt brauche ich für die RC5 Geschichte...

von Nutzer1 (Gast)


Lesenswert?

ICH HABE ES HINBEKOMMEN !!!


FREU FREU FREU
1
   $regfile = "m32def.dat"
2
   $crystal = 8000000
3
   $hwstack = 32
4
   $swstack = 10
5
   $framesize = 40
6
   $baud = 38400
7
8
   Config Com1 = 38400 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
9
10
   Config Rc5 = Pind.6
11
12
   Dim Address As Byte
13
   Dim Command As Byte
14
15
   Dim Block(8) As Byte
16
17
   Block(1) = &HA9
18
   Block(2) = &H19
19
   Block(3) = &H66
20
   Block(4) = &H00
21
   Block(5) = &H00
22
   Block(6) = &H00
23
   Block(7) = &H7F
24
   Block(8) = &H9A
25
26
   Enable Interrupts
27
28
Main:
29
30
Do
31
   Getrc5(address , Command)
32
   If Address < 255 Then
33
      Command = Command And &B01111111
34
   End If
35
36
  If Command = 1 And Address = 5 Then Goto 1
37
38
Loop
39
40
1:
41
42
Printbin Block(1) ; 8
43
44
Wait 1
45
46
Goto Main


VIELEN DANK AN ALLE, DIE MITGEHOLFEN HABEN...

von Sven (Gast)


Lesenswert?

Siehst, geht doch. Und jetzt das Ganze bitte noch in Assembler.

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

von Weingut P. (weinbauer)


Lesenswert?

eins noch ... goto .. BRRRRRRRRRR

arbeite lieber mit gosub und return

von Nutzer1 (Gast)


Lesenswert?

Was ist an Goto so schlecht...

Funktioniert doch :-)

(Die Frage ist erst gemeint)

von Sachich N. (dude) Benutzerseite


Lesenswert?


von Weingut P. (weinbauer)


Lesenswert?

gegenfrage, was machst du wenn command 2 ist für
anderen befehl?

von Sachich N. (dude) Benutzerseite


Lesenswert?

Was machst du wenn nix deutsch schreibe gut versteh nix?

von Nutzer1 (Gast)


Lesenswert?

@ Fhutdhb Ufzjjuz
1
  If Command = 2 And Address = 5 Then Goto 2
2
3
2:

:-)

von dsgfsdfgsdfg (Gast)


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)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.