PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welcher Pin auf RN-Control2560



datatom
24.07.2011, 16:26
Hallo zusammen,

ich habe mir das RN-Control2560 http://www.robotikhardware.de/download/rnmega2560.pdf gekauft und habe das Beispielprogramm von Seite 28 auf den Controller übertragen und es funktioniert so wie es soll: Das LED blinkt und über den Terminal werden Daten angezeigt:p

Nun möchte ich das Programm auch verstehen


'################################################# ##
'erstebeispiel2.bas Demo zu Modul RN-Mega2560
'für 'RoboterNetz Board RN-Mega2560 ab Version 1.0 und
'
'Aufgabe:
'Laesst LED blinken
'Gibt Zahlen ueber RS232 aus
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'Eigene Programmbeispiele sind im Roboternetz gerne willkommen!
'################################################# #############
'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )


$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5

$baud = 9600

Dim I As Integer

Do
Led = 1
Waitms 100
Led = 0
Waitms 100
Print "Hallo" ; I
I = I + 1

Loop

End


genau genommen die beiden Zeilen

Config Pind.5 = Output
Led Alias Portd.5


Wenn ich die Beschreibung auf Seite 7 richtig verstehe wird das LED immer über PIN D5 gesteuert: Blinkt bei low.

Wo steht im Programm, dass die Daten über RS232 ausgegeben werden? Angeschlossen habe ich das Board über RS232 an den drei Pins an der Seite. Wie es auch auf den Bildern abgebildet ist.

Kann mir jemand auf die Sprünge helfen?

Vielen Dank und Grüße

datatom

Kampi
24.07.2011, 16:45
Die Zeile

Config Pind.5 = Output

sagt aus das der Pin D.5 als Ausgang geschaltet wird. Wann die LED dann blinkt hängt davon ab wie du sie angeschlossen hast. Wenn die LED, wie du beschrieben hast, bei Low blinkt ist die LED an Vcc angeschlossen und jedesmal wenn der Pin auf Low gezogen wird, wird der Stromkreis geschlossen und die LED leuchtet. Wenn du die LED nun an GND anschließt musst du den Port auf High schalten damit die LED leuchtet, also genau andersrum.
Diese Zeile:

Led Alias Portd.5

sorgt nur dafür das dieser Port D.5 einen Namen bekommt. Dadurch musst du nicht dauernd PortD.5 schreiben sondern kannst ihm einen Namen deiner Wahl zuweisen.
Diese Zeile:

Print "Hallo" ; I

sorgt dafür das Daten über RS232 übertragen werden. Das "Print" leitet die Übertragung ein und das "Hallo" ist der Text der übertragen wird. Wenn du einen Text übertragen willst musst du den immer mit " einleiten und beenden. Das I nach dem Semikolon ist eine Variable. Da da nicht "I" steht sondern nur I wird nur der aktuelle Wert der Variable übertragen.

Hoffe das hilft dir weiter.

datatom
24.07.2011, 17:49
Danke für die Beschreibung. Aber laut Schaltplanbeschreibung http://www.robotikhardware.de/download/rnmega2560.pdf auf Seite 7 ist doch der PIN D5 gar nicht als Ausgang für RS232 vorgesehen. Ich habe den RS232-Stecker wie auf Seite 28 abgebildet angeschlossen. Ich verstehe nicht wo beschrieben wird, dass der Stecker D5 als RS232-Ausgang definiert ist.

Kampi
24.07.2011, 17:58
Soweit ich weiß muss man in Bascom die Pins für RS232 gar nicht definieren. Das macht alles der Compiler. Du musst nur sagen welche Bauerate du haben willst und was su schicken willst.
D5 ist nur für die LED da.

datatom
24.07.2011, 18:14
OK, wenn das der Compiler automatisch macht umso besser. Das Modul hat vier TTL UARTS (RX/TX) – 2 frei, einer für USB, einer für RS232). Wenn ich jetzt die "normale " RS232-Schnittstelle für die Kommunikation mit dem PC nutzt und eine andere RS232-Schnittstelle für den Anschluß eines Servoboards nutzen will. Muss ich doch bestimmt den TX-Pin für die Datensendung zum Servoboard angeben. In diesem Fall hat der Pin 13 PH1 / TXD2 (freie RS232 /TTL Pegel). Wie würde das im Programm angegeben werden?

Richard
24.07.2011, 18:15
Danke für die Beschreibung. Aber laut Schaltplanbeschreibung http://www.robotikhardware.de/download/rnmega2560.pdf auf Seite 7 ist doch der PIN D5 gar nicht als Ausgang für RS232 vorgesehen. Ich habe den RS232-Stecker wie auf Seite 28 abgebildet angeschlossen. Ich verstehe nicht wo beschrieben wird, dass der Stecker D5 als RS232-Ausgang definiert ist.

Der PIN D.5 ist ja der Ausgang für die LED. :-) Die RS 232 Pins sind von Haus aus festgelegt und müssen nicht vom Programm gesetzt werden, außer man braucht keine RS232 und will die Anders benutzen. Dann MUSS aber die Direktive $Baud aus dem Programm gelöscht werden, damit wird die RS232 Quasi eingeschaltet.


Led Alias Portd.5 das der Compiler für "LED" = Portd.5 verwenden soll***
Hier Wird Led der Alias(Name) für Portd.5, Du kannst aber auch Otto als Alias nehmen...oder MotorLinks u.s.w. Das kann
man sich leichter merken.


Led = 1 (Portd.5 = 1) LED aus
Waitms 100
Led = 0 (Portd.5 = 0) LED an

Gruß Richard

Kampi
24.07.2011, 18:20
OK, wenn das der Compiler automatisch macht umso besser. Das Modul hat vier TTL UARTS (RX/TX) – 2 frei, einer für USB, einer für RS232). Wenn ich jetzt die "normale " RS232-Schnittstelle für die Kommunikation mit dem PC nutzt und eine andere RS232-Schnittstelle für den Anschluß eines Servoboards nutzen will. Muss ich doch bestimmt den TX-Pin für die Datensendung zum Servoboard angeben. In diesem Fall hat der Pin 13 PH1 / TXD2 (freie RS232 /TTL Pegel). Wie würde das im Programm angegeben werden? Das kann ich die so aus dem Stehgreif nicht sagen sorry :(Aber schau mal in der Bascom Hilfe nach. Die hilft einem oft weiter.

Richard
24.07.2011, 21:33
Das kann ich die so aus dem Stehgreif nicht sagen sorry :(Aber schau mal in der Bascom Hilfe nach. Die hilft einem oft weiter.
Das dürfte auch im Datenblatt vom Prozessor stehen, aber ein echter MANN hat je Handbücher und Datenblätter lesen nicht nötig. :-)

Gruß Richard

Kampi
24.07.2011, 21:50
Das dürfte auch im Datenblatt vom Prozessor stehen, aber ein echter MANN hat je Handbücher und Datenblätter lesen nicht nötig. :-)

Gruß Richard

Ich glaube Bascom Befehle stehen nicht im Datenblatt des Prozessors ;).
Aber Assembler Routinen stehen drin :D

Edit:
Ich hab mal ein wenig gegooglet und bin auf diese Seite gelangt:
http://avrhelp.mcselec.com/
Dort suchst du dann einfach nach "Com".

Wenn du jetzt den TxD2 verwenden willst muss das, soweit ich das verstanden habe, so aussehen:

Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Kannst du aber auch weglassen dann wird der COM-Port mit 9600 Baud, 8Bit und ohne Parity initialisiert.

Anschließend kommt ein:

Open "Com3:" For Binar yAs#2

Dies ist dafür da um den COM-Port zu initialisieren und ihm eine Nummer zuzuweisen.
Anschließend brauchste nur noch

Print#2

zu schreiben. "Print" ist der normale Schreibbefehl über RS232 und das #2 ist die von dir vergebene Nummer. Wenn du ihm eine 1 gegeben hast musst du natürlich #1 schreiben.
Probier das mal so :)