Archiv verlassen und diese Seite im Standarddesign anzeigen : need help .. tut was es will !!
Hi !!
Ich bin gerade dabei mein erstes projekt mit einem avr controler zu verwirklichen, und hab zu dem zweck in bascom mein programm geschrieben ...
Es handelt sich um eine fersteuerung mittels modifiziertem pc joystick, und um quasi eine kalibrierung zu verwirklichen hab ich mal folgendes kleines programm geschrieben:
$regfile = "m8def.dat"
$crystal = 11059200
$baud = 9600
Dim Adcx As Integer
Dim Adcy As Integer
Dim Wertx As Integer
Dim Werty As Integer
Config Adc = Single , Prescaler = Auto
Start Adc
Do
Waitms 100
Printbin 27 ; 91 ; 50 ; 74
Adcx = Getadc(0)
Adcy = Getadc(1)
Adcx = Adcx / 4
Adcx = Adcx - 127
Adcy = Adcy / 4
Adcy = Adcy - 127
Select Case Adcx
Case Is > 15 : Wertx = Adcx - 15
Case Is < -5 : Wertx = Adcx + 5
Case Else : Wertx = 0
End Select
Select Case Adcy
Case Is > 17 : Werty = Adcy - 17
Case Is < -5 : Werty = Adcy + 5
Case Else : Werty = 0
End Select
If Wertx > 100 Then Wertx = 100
If Wertx < -100 Then Wertx = -100
If Werty > 100 Then Werty = 100
If Werty < -100 Then Werty = -100
Print "Y-Achse" ; Werty
Print "X-Achse" ; Wertx
Loop
End
im simulator funktioniert es einwandfrei, und ich weiß auch sonst keinen grund warum es in der hardware nicht klappen sollte, aber (sont würd ich ja nicht um hilfe bitten *ggg*) sobald ich die If bedinnungen bezüglich -100 am ende des programms einbaue spinnt die software ohne ende ... und zwar funktioniert dann die ausgabe am terminal nicht mehr richtig .. je nach dem ob man die print befehle wonaders hinsetzt, oder die if bedinnungen kommt unterschiedlicher schwachsinn daher ! .. ohne die besagten if bedinnungen klappt es wunderbar !
habe bis jetzt immer mit CC1m oder CC2 gearbeitet .. mit großem erfolg .. hat immer prima geklappt !!
vielen dank im vorraus für die hilfe .. also ist das nicht mein erster kontakt mit µc's und elektronik !
mfg Julian
ps. Proggen tu ich mit ponny prog, und ich hab auch schon die neueste bascom demo aus dem web
Hi nochmal
... hab jetzt eine ältere version von bascom installiert ... da funkt der code von vorher ... guter dinge hab ich weitergeschrieben ...
wie vorher +var definition für kettel und ketter
If Wertx > 100 Then Wertx = 100
If Wertx < -100 Then Wertx = -100
If Werty > 100 Then Werty = 100
If Werty < -100 Then Werty = -100
'-----------------------------------------------------------neu:
Kettel = Werty - Wertx
Ketter = Werty + Wertx
If Kettel > 100 Then Kettel = 100
If Ketter > 100 Then Ketter = 100
If Kettel < -100 Then Kettel = -100
If Ketter < -100 Then Ketter = -100
Print "Y-Achse: " ; Werty
Print "X-Achse: " ; Wertx
Print "--------------"
Print "L: " ; Kettel ; " R: " ; Ketter
Loop
End
und der gleiche #+*§"$§$% wie vorher ... allerdings gibt mein avr jetzt gar keine verwertbaren daten an den pc ab !! außer ich entferne die if bedinnungen für kettel/r < -100 .. dass komt mir so irgendwie bekannt vor !!
is bascom so labil ???? was soll der blödsinn ... wie soll man da jemals ein programm schreiben das länger als 10 zeilen is ??
ps .. sorry das ich den code immer so lange einfüge, aber ich check irgendwie nicht wie ihr das scroll fenster hinbekommt !!
mfg Julian
Hast du die Fusebits auf einen externen Quarz eingestellt?
Also mehr als ein paar Zeilenhabe ich schon erfolgreich geschrieben ;)
Das Scrollfenster kannst du mit Code einfügen. Einfach den Button klicken, den Text danach schreiben und nochmal den Button klicken um Code anzuschliessen.
ps .. sorry das ich den code immer so lange einfüge, aber ich check irgendwie nicht wie ihr das scroll fenster hinbekommt !!
das geht mit
bla bla bla
Hallo Julian!
Jede If-Schleife muss mit "End If" beendet werden. Vielleicht liegt es daran. Also so:
If [bedingung] Then
[anweisung]
End If
Grüße,
Jonas
Er hat ja keine IF-Schleife.
Das hätte BASCOM ja schon bemängelt.
Hi !!
wenn die fuses nicht passen würden würde es ja gar nicht laufen ...
was mir jetzt aufgefallen ist ist das die variablen wertx und werty schon falsch angegeben werden und zwar mit -100 egal welcher wert am adc anliegt !
und die ärgenzung der if schleifen durch end if hat nichts gebracht ... laut meinen bascom büchern ist die ja auch nicht vorgeschrieben .. es sei denn man will mehr als eine instuktion an die if bedinnung knüpfen!
mfg Julian
ps. langsam aber sich geht mir bascom schwer auf die nerfen !! >:-(
Im Simulator ging das obere Programm bei mir!
Je nachdem wie ich den ADC eingestellt habe, hatte X oder Y ein Wert von -100 bis 100 (man könnte denken, das sollte so ;) )
Das schöne an BASCOM ist ja, das es ein eine Menge arbeit abnimmt.
Ich stelle nur ein, welchen IC ich verwende und was für eine Taktfreuqenz der hat.
Alles zeitabhänige wird dann automatisch errechnet.
z.B. die Pausen nach LCD-Befehlen. Vorteiler für ADC, ...
Und RS232 ist auch eine Zeitabhänige Geschichte. Außerdem ist nicht jede Baudrate mit jeder Taktfrequenz möglich ;)
Wenn BASCOM jetzt in den Glauben gelassen wird, der Chip läuft mit 11MHz aber in wirklichkeit läuft er mit 1MHz können die errechneten Zeiten schon Auswirkungen haben. Auch der automatisch gewählte Vorteiler für den ADC.
Ich hab bloß noch mehrmaligen lesen noch nicht verstanden, ob das Programm im M8 läuft wenn auf die -100% verzichtet wird.
Die einzige Funktionskontrolle ist ja hier RS232 (zeitabhänige Sache!)
na ja ich hab die 11,059 Mhz genommen weil 0% baud fehler ... und wenn ich auf die -100% geschichte verzichte klappte es ja !!
und .. quarz rauslöten .. gar nix geht mehr .. also fuses 100000% ig richtig !
ps .. hab jetzt mittlerweile den pc neu aufgesetzt ... man weiß ja nie .. *fg*
pps. Welche bascom versionen verwendet denn ihr ?? (bitte nur dann angeben wenn auch alles funktioniert !! ;-))
jetzt funkt das vorherige .... aber wenn ich die ausgabe in
Print 255
Waitms 20
Print Kettel
Waitms 20
Print Ketter
änder so das der zweite µC das ganze auswerten kann bekomme ich im terminal fenster folgendes :
___________________________________
ketterketter255
kettel
ketter
___________________________________
wahhhhhhh was soll das nun wieder ? wenn ich den code ein wenig änder .. zb pausen erhöher/verkleiner .. dann geht es überhaupt nicht mehr !!
kann es sein das der chip was hat ? oder ist bascom einfach der schlechteste compiller seit menschengedenken ???????????????
ps. hab jetzt auch schon den quarz auf 8 mhz getauscht und ja hab es auch der software gesagt !
neuer chip eingebaut .. gleiches problem ... weiß keiner rat ?
mfg julian
Setz doch mal ein paar Print als Debug ein. So siehst du, an welcher Stelle er grade ist und welchen Wert die Variablen haben.
Vielleicht hilft das weiter?! Im Simulator läufts, und vom logischen Verständnis her, sollte das ganze +-100% pro Richtung ergeben. Und das war bestimmt deine Absicht ;)
tja .. jedes weitere print komando verschlimmert die lage, (teilweiße nur mehr sonderzeichen im Terminal zu sehen .. bei 1200 baud wie bei 19200)
ich bin noch draufgekommen das das getadc Komando dann nicht mehr zu funktionieren scheint da die werte dann immer 0 sind ... d.h. das programm misst die analog signale nichtmal mehr !
mfg Julian
hallo julian!
sag mal, hast du inzwischen deine joystick kalibrierung vollständig? <push nach oben>
ist ja doch etwas zeit vergangen...
super_castle
12.12.2005, 19:58
Setzt mal ein Waitms... zwischen die beiden Getadc.
Castle
ja .. es war was mit ponnyprog .. irgendwas hat bei der programmierung nicht hingehauen .. was das war weiß ich nicht mehr .. zu lange her aber es hat dann am ende gut funktioniert ..
mfg
könntest du netterweise mal detailliert erläutern, wie du den joystick kalibrierst?
ich denke mal es handelt sich um einen analogen pc joystick (hast du den aufgemacht und bei den potis noch GND angeschlossen? oder etwa extern noch 100K angeschlossen?... siehe hier http://www.mikrocontroller.net/forum/read-1-125733.html SORRY ist ein anderes forum. aber sehr interessant!).
führst du bewegungen in alle 4 ecken aus? (so ähnlich als wenn man unter windows\spieloptionen kalibriert).
p.s... die print befehle sind doch dafür da um per rs232 daten an den pc zu senden oder?
gruß heinzi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.