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 ???
Achso - in Hterm habe ich folgendes eingestellt: COM1 - 38.4 kbps - 8 Datenbits - 1 Stopbit - Parity auf EVEN
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.
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 :-) )
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)
Kondensatoren parallel, aufladen, Kondensatoren in Reihe, entladen. Ganz grob.
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 ???
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
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)?
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.
Das Enable Interupt brauche ich für die RC5 Geschichte...
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...
Siehst, geht doch. Und jetzt das Ganze bitte noch in Assembler. Nee, schon gut, für Deinen Zweck ist Bascom in Ordnung. ;-)
eins noch ... goto .. BRRRRRRRRRR arbeite lieber mit gosub und return
Was ist an Goto so schlecht... Funktioniert doch :-) (Die Frage ist erst gemeint)
gegenfrage, was machst du wenn command 2 ist für anderen befehl?
@ Fhutdhb Ufzjjuz
1 | If Command = 2 And Address = 5 Then Goto 2 |
2 | |
3 | 2: |
:-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.