PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ich mach mich jetzt mal lächerlich!



Alter Knacker
25.03.2005, 21:56
...den titel ändere ich später gerne, aber im moment fällt mir nix besseres ein ;-)

also...

ich habe ein board mit dem atmel16, läuft noch intern mit 1Mhz.
rs232 ist richtig gejumpert, daran hängt RN-Motor.
ich habe jetzt versucht (als totaler newbie), aus verschiedenen tutorials und der beigelegten anleitung bei RN-Motor, irgendwas zu coden - man verzeihe mir den blödsinn!

ich dachte, ich steuere einfach mal den linken motor an, lasse den eine zeitlang laufen und dann stoppen, nur mal als test, ob da was passiert.
jetzt hab ich da aber einen error :-(



$regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
$baud = 9600
Wait 10
Print "#rmi" & Chr(0) & Chr(400)
Wait 1
Print "#rmo" & Chr(0)
Wait 1
Print "#rmd" & Chr(0) & Chr(0)
Wait 1
Print "#rme" & Chr(0)
Wait 20
Print "#rms" & Chr(0)

End 'end program


error 31 - invalid datatype[200]

jetzt liegts natürlich weder am controller oder am rn-motor, sondern an meinen programmierkenntnissen.
scheinbar muss ich den datatype deklarieren, aber wie/wieso?

hab ich was überlesen?
im prinzip sinds ja fixe werte, also konstanten, ich verändere ja nix.
muss ich konstanten extra deklarieren?
ich dachte, PRINT ist ein befehl, und wenn der nach rs232 geschickt wird, weiss die firmware des rn-motor, was ansteht!?!
der fehler wird aber beim compilieren in den print-zeilen aufgelistet.

thx for help, knacki

Alter Knacker
25.03.2005, 22:04
aja, wenn ich auf simulate klicke, kommt "obj or dbg not found", das macht mich auch nicht wirklich glücklicher ;-)

uwegw
25.03.2005, 22:26
das der simulator nicht will ist logisch weil er ja noch keine fertig kompilierte datei vorfindet...

ich habe, da ich genausoviel ahnung von bascom habe wie du (ich schreibe pascal und nen bisschen assembler), einfach mal rumprobiert und die "&" durch "+" ersetzt. jetzt wird nur noch bei
$framesize = 32
$swstack = 32
$hwstack = 32
gemeckert... auskommentiert und es geht...
aber im simulator kommt niohc nicht ganz das gewünschte raus...

Marco78
25.03.2005, 22:31
Ersetzte mal die & durch ; Zumindest bei LCD müsste es so gemacht werden.

Alter Knacker
25.03.2005, 22:31
thx, der simulator meckert immer, auch bei dem "testprogramm" von frank im wiki ;-)
mfg knacki

uwegw
25.03.2005, 22:38
jetzt hab ich folgendes ergebnis:
#rmi1400
#rmo1
#rmd00
#rme0
#rms0

richtig so?



$regfile = "m16def.dat"
' $framesize = 32
'$swstack = 32
'$hwstack = 32
$crystal = 1000000
$baud = 9600
'Wait 10
Print "#rmi" + Chr($31) + Chr($34) + Chr($30) + Chr($30)
Wait 1
Print "#rmo" + Chr($31)
Wait 1
Print "#rmd" + Chr($30) + Chr($30)
Wait 1
Print "#rme" + Chr($30)
Wait 20
Print "#rms" + Chr($30)

End


der trick bei der übergabe der zeichen: es geht hier um ascii zeichen, die normalerweise mit hexadezimalzahlen angesprochhen werden, du hast jedoch dezimalzahlen verwendet. ich hab also mal in meiner ascii tabelle nachgeguckt was der code für diese zeichen ist. die null ist die $30, eins die $31 usw... (der versatz um $30 kommt von den blöden amerikanischen militärfernschreibern, aber das is ne lange geschichte von höchst innovativen computerherstellern...)

Alter Knacker
25.03.2005, 22:39
dieses grundprogramm (https://www.roboternetz.de/wiki/pmwiki.php?n=Main.Avrbascom) wollte ich übernehmen, anpassen und weiterschreiben.

mfg knacki

Alter Knacker
25.03.2005, 22:52
aha, compilieren geht jetzt, danke erstmal.
simulieren geht scheinbar bei mir sowieso nicht, immer gleiche fehlermeldung.
übertragen werd ichs heute auch nimmer, schätze ich (hund muss raus *g*)

ich danke dir jedenfalls recht herzlich, mit dieser art von hilfe kann man schneller lernen als aus büchern!
mfg knacki

Marco78
25.03.2005, 23:04
Und was war nun der Fehler?

Alter Knacker
25.03.2005, 23:11
Und was war nun der Fehler?
was meinst du jetzt genau?
die fehlermeldung hab ich oben gepostet (simulation)

wenn du das compilieren meinst:
scheinbar hat uwe die lösung gefunden, ich habs nur noch nicht gebrannt und getestet.
mfg knacki

BlueNature
25.03.2005, 23:14
...ich dachte, ich steuere einfach mal den linken motor an, lasse den eine zeitlang laufen und dann stoppen, nur mal als test, ob da was passiert.
jetzt hab ich da aber einen error :-(



...
Print "#rmi" & Chr(0) & Chr(400)
...


error 31 - invalid datatype[200]

...jetzt liegts natürlich weder am controller oder am rn-motor, sondern an meinen programmierkenntnissen.
scheinbar muss ich den datatype deklarieren, aber wie/wieso?...


Hallo Alter Knacker!

Wenn du dir den Code genauer anschaust siehst du das da bei der Chr-Funktion ein ASCII-Code 400 angewendet wurde. Das ist nicht mehr in 8-Bit passend weil 8-Bit nur von 0 bis 255 geht. Schreib einen Wert im Bereich 0 bis 255 in die Klammer und es geht sicher ;) Man kann auch Dezimal schreiben, nicht nur Hexa-Zahlen (&H..). Genauso wäre Binär (&B..) möglich. Aber das wurde oben schon beantwortet.

Noch einen Link zu einer ASCII-Tabelle die dir die Arbeit etwas erleichtern kann:
http://www.wieselsworld-online.de/themen/listen/ASCII.htm

Grüße Wolfgang

Michael
25.03.2005, 23:18
Hallo Alter Knacker,


aja, wenn ich auf simulate klicke, kommt "obj or dbg not found", das macht mich auch nicht wirklich glücklicher

bei Options -> Compiler -> Output das Häkchen bei "AVR Studio Object file" und bei "Debug File" setzen, OK klicken und compilieren. Dann sollte der Simulator funktionieren.
Gruß, Michael

Alter Knacker
25.03.2005, 23:29
oops, ihr erschlagt mich ja mit antworten :-)


@blue nature:
deinen spr-3 hab ich schon bewundert (das nur so nebenbei)
ja, hast recht, da hab ich was überlesen, sollte wohl 40 sein (da gehts um die mA des schrittmotors)

@michael:
versuch ich gleich mal, danke

Alter Knacker
25.03.2005, 23:35
bei Options -> Compiler -> Output das Häkchen bei "AVR Studio Object file" und bei "Debug File" setzen, OK klicken und compilieren. Dann sollte der Simulator funktionieren.
Gruß, Michael

ok, danke, das hat geholfen!
jetzt läuft schonmal was ab, zumindest theoretisch, mehr wollte ich heute gar nicht.

ich weiss es ja nicht, aber könnt ihr euch noch ans "erste mal" erinnern?
is schon klasse, wenn was läuft und man was gelernt hat!
wobei ich hardwaretechnisch lieber auf morgen warte, hatte schon das eine oder andere bier heute ;-)

danke euch dreien jedenfalls sehr herzlich,
thx knacki

PicNick
26.03.2005, 08:12
wobei ich hardwaretechnisch lieber auf morgen warte, hatte schon das eine oder andere bier heute
:mrgreen: das eine wär' ja nicht so schlimm, aber das andere hat's in sich :mrgreen:

pebisoft
26.03.2005, 14:14
hallo, du bekommst auch bei der rn-motro programme dazu.
die beispiele sind schön erklärt. die mA dürfen für die schrittmotoren nicht zu klein sein.
mfg pebisoft

Alter Knacker
26.03.2005, 14:20
hallo, du bekommst auch bei der rn-motro programme dazu.
die beispiele sind schön erklärt.

also ich habe für bascom nur "rncontrol_motorschritt_i2ctest.bas" gefunden, nützt mir wenig bei der rs232 variante, oder?



die mA dürfen für die schrittmotoren nicht zu klein sein.
mfg pebisoft

ich weiss, dass meine 400mA haben, also von daher passt das schon.

trotzdem danke, knacki

Alter Knacker
27.03.2005, 13:17
So,
hab das jetzt auch hardwaretechnisch versucht, aber da tut sich nix.

hab das ganze jetzt wieder mit der anleitung zu rn-motor verglichen und umgeschrieben, mit "&" gehts nicht zu kompilieren, mit "+" schon.
desweiteren hatte ich die drehgeschwindigkeit vergessen.

also das ganze nachgebessert und auskommentiert:



$regfile = "m16def.dat"
' $framesize = 32
'$swstack = 32
'$hwstack = 32
$crystal = 1000000
$baud = 2400
Print "#rmi" + Chr(0) + Chr(40) 'Linker Motor auf 400mA
Wait 1
Print "#rmo" + Chr(0) 'Linker Motor ein
Wait 1
Print "#rmd" + Chr(0) + Chr(1) 'Linker Motor nach rechts drehen
Wait 1
Print "#rmg" + Chr(0) + Chr(255) 'Langsame Gecshwindigkeit
Print "#rme" + Chr(0) 'Linker Motor endlos drehen, bis stop kommt
Wait 20
Print "#rms" + Chr(0) 'Linker Motor stop
End


tut sich dennoch nix, der motor zuckt nicht einmal wie beim einschalten :-(
njente, absolut gar nichts.

hier liegt wohl ein arger denkfehler vor.
mfg knacki

Dino Dieter
27.03.2005, 13:39
Hallo

RN Motor erwrtet die Daten doch standart mässig mit 9600 BAUD.

Dein $baud = 2400 passt dann ncht ganz.

Sonst sieht der code OK aus.

MFG
Dieter

Alter Knacker
27.03.2005, 13:49
danke für den tip, habs geändert, macht aber keinen unterschied, der fehler muss woanders liegen.
wenn ichs an den pc mit dem testprogramm anschliesse, funzt das aber, hardware ist also ok.
da hats noch irgendwas mit der programmierung.
gejumpert ist der rs232 auch richtig.

:-? knacki

Dino Dieter
27.03.2005, 13:53
Hallo

Die Ausgaben des Tastprgramms (oben) auf den PC gehen also und stimmen auch ?

Kannst du das RN Motor Board denn vom PC aus ansteuern ? Über ein einfaches Terminal Programm kannst du ja auch die Befehle senden.

Geht denn das Ansteuerungsprogramm in VB von Frank ?

MFG
Dieter

Alter Knacker
27.03.2005, 13:55
genau, das meinte ich, das testprogramm geht, terminal hab ich nicht versucht, reicht ja von der exe aus auch im moment.

Dino Dieter
27.03.2005, 14:04
Hallo

Also das Testprogramm von Frank über die RS232 vom Pc aus geht.

Dein Programm von dem 2. Mega 16 geht nicht. Was passiert denn, wenn du diesen AVR mit der seriellen Schnittstelle des PC verbindest und dort ein Terminal Progamm laufen lässt ? Dann sollten doch die Befehle dort angezeigt werden.

MFG
Dieter

Alter Knacker
27.03.2005, 14:10
du meinst, die rs232 anstatt am rn-motor am pc anschliessen?
wäre ok, wenn ich wüsste, womit und wie ich das dann sehen kann, weiss nichtmal, wie man das terminalprogramm von bascom zum laufen kriegt, habe zwei rs232 buchsen am rechner und weiss schonmal nicht, welche welcher port ist etc.....

mein controllerboard hat aber ein lcd drauf, könnte man nicht gleich da anzeigen lassen, was passiert?
oder ist das zu kompliziert jetzt?

danke, knacki

Dino Dieter
27.03.2005, 14:24
Hallo


du meinst, die rs232 anstatt am rn-motor am pc anschliessen?

Ja genau. Dein RN Motor mit dem Testprogramm von Frank auf dem PC geht ja. Also erstmal weglegen.

Welches Board hast du den mit dem Mega 16. Auch ein vom Roboternetz oder ein Selbstbau .

Irgendwie hast du ja eine RS232 Schnittstelle auf dem Board. Entweder kleinen Adapter löten, oder wenn eins vom Roboternetz, dann ist ja ein Kabel dabei, wenn ich mit nicht Irre. Wie schließt du du die beiden Board denn untereinander an ?

Hier 2 gute Terminal Prgramme. Vergess das von Basom oder das von Windows.

http://www.der-hammer.info/terminal/index.htm

Ich nehme immer dieses hier

http://bray.velenje.cx/avr/terminal/

Der Download ist ganz unten auf der Seite.

Bei 2 seriellen Schnittstellen am PC ist es ja nicht das große Problem, die richtige zu finden. Ich habe hier am Laptop zur Zeit 6 Stück.

Mein Vorschlag. Kleines Testgramm schreiben und den Empfang zum PC erstmal herstellen.


$regfile = "m16def.dat"
' $framesize = 32
'$swstack = 32
'$hwstack = 32
$crystal = 1000000
$baud = 2400 'später mal auf 9600 testen

do
print " Hallo Leute"
waitms 500
loop


MFG
Dieter

Alter Knacker
27.03.2005, 14:41
Welches Board hast du den mit dem Mega 16. Auch ein vom Roboternetz oder ein Selbstbau .


weder noch, bei ebay gekauft.



Irgendwie hast du ja eine RS232 Schnittstelle auf dem Board. Entweder kleinen Adapter löten, oder wenn eins vom Roboternetz, dann ist ja ein Kabel dabei, wenn ich mit nicht Irre. Wie schließt du du die beiden Board denn untereinander an ?


mit dem rs232 von frank, das ist aber ok.



Hier 2 gute Terminal Prgramme. Vergess das von Basom oder das von Windows.
Mein Vorschlag. Kleines Testgramm schreiben und den Empfang zum PC erstmal herstellen.


ok, danke.
mit beiden programmen krieg ich nichts retour, also muss ich da weiter eingrenzen....
(wobei ich nicht weiss, ob ich sie richtig bediene)
thx knacki

Dino Dieter
27.03.2005, 14:49
Hallo

Hast du denn einen Schaltplan von Board?

Also an dem Terminal Prg. "Terminal" mußt du nur einstellen

COM, BAUD rate , 8 Databits, Parity none, Stop Bits 1, Handshaking none

und dann auf Connect.

MFG
Dieter

Alter Knacker
27.03.2005, 14:53
schaltplan nicht, aber rs232 hängt an pin 14 und 15, sollte also passen.
mfg knacki

Alter Knacker
27.03.2005, 14:58
aja, hatte ich also die beiden programme richtig benutzt.
danke, die sehen gut aus, auch für die zukunft ;-)
mfg knacki

Dino Dieter
27.03.2005, 15:07
Hallo

14 & 15 am AVR sind schonmal gut. Wo liegt denn welcher PIn auf der SUB Buchse ?

http://www.pci-card.com/schnittstellen.html

MFG
Dieter

Alter Knacker
27.03.2005, 15:18
Wo liegt denn welcher PIn auf der SUB Buchse ?


habe das hier (http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&rd=1&item=5756964916&ssPageName=STRK:MEWN:IT) gekauft.
und der schnittstellenbaustein liegt unter dem lcd, da kann ich wenig erkennen, ein profi könnte das vielleicht.

mfg knacki

Dino Dieter
27.03.2005, 15:43
Hallo


Config Portd = Output

Do
Portd.1 = 1 'TX PIN auf High
Wait 2
Portd.1 = 0 'TX PIN auf LOW
Wait 2
Loop

Mit diesem kleinen Programm kann ich bei mir am PIN 2 der 9 pol SUB Buchse
einmal + 8,5 Volt und einmal - 8,5 Volt messen.

RX liegt dann auf PIN 3, Masse auf PIN 5



MFG
Dieter

Alter Knacker
27.03.2005, 17:25
Hi, danke.

hab auf pin3 +9v und -9v abwechselnd.
pin2 gibt o.o1 fix (billiges multimeter)
mfg knacki

Dino Dieter
27.03.2005, 17:39
Hallo

Dann hast du eine andere Belegung der Buchse. Dann kann auch nicghts kommen am PC.

Lösung: gekreutzes Kabel 2 auf 3 & 3 auf 2 oder einen kleine Adapter löten. Oder die beiden Adern im Stecker des Kabel tauschen.

MFG
Dieter

Dino Dieter
27.03.2005, 17:43
Nachtrag.

Oderr beim Betrieb deines Board in Verbindung mit dem RN Motor, am RN Motor den 3 poligen RS232 Stecker mal rumdrehen.

BAUD 9600 !!!

MFG
Dieter

Alter Knacker
27.03.2005, 18:02
Oderr beim Betrieb deines Board in Verbindung mit dem RN Motor, am RN Motor den 3 poligen RS232 Stecker mal rumdrehen.


das hat auch nix gebracht :-(
vielleicht müsste ich ja doch einmal die beiden kondensatoren am rn-motor anlöten, man weiss da ja nicht, ob ein fehler vorliegt oder nicht....
mfg knacki