PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm läuft so,aber so nicht...



klaro1971
27.07.2012, 03:14
Hallo,Brauche etwas Nachhilfe,wenn ich das so schreibe:


$crystal = 16000000
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$crystal = 16000000

Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)
Config Pinc.6 = Output
Config Pinc.7 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinc.0 = Input
Config Pinc.5 = Input
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert
Porta.7 = 1 'Interner Pullup Widerstand ein
Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert
Porta.7 = 1 'Interner Pullup Widerstand ein
'################################################# ################################################## ###'
Do
Portc.6 = 0 'Richtung vorwärts
Portc.7 = 1 'Richtung vorwärts
Portd.4 = 1 'Linker Motor ein/aus
Portb.0 = 0 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1
If Pina.7 = 1 Then
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Else
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet

Waitms 35
Sound Portd.7 , 200 , 900 'Ton
Portc.6 = 1 'Richtung zurück
Portc.7 = 0 'Richtung zurück
Portd.4 = 1 'Linker Motor ein/aus
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
u.s.w.fährt mein Bot auf Kontakt vorn normal zurück,so wie er soll,leider macht er das nicht im nachfolgenden Code,wo habe ich einen Fehler gemacht?:confused:

Config Pind.5 = Output
Motor1_pwm Alias Portd.5
Config Pinc.6 = Output
Motor1_in1 Alias Portc.6
Config Pinc.7 = Output
Motor1_in2 Alias Portc.7
Config Pind.4 = Output
Motor2_pwm Alias Portd.4
Config Pinb.0 = Output
Motor2_in1 Alias Portb.0
Config Pinb.1 = Output
Motor2_in2 Alias Portb.1
Config Pina.7 = Input
Config Pina.5 = Inpu
Pina.5 = 0
Pina.7 = 1
Sharp Alias Porta.5
Taster Alias Porta.7
'PWM Frequenz Initialisieren
Tccr1a = &B10100010 '9 Bit PWM Voller Takt
Tccr1b = &B10000010 'Teiler = 8 PWM = 1951 Hz bei 9 Bit
Dim I AS Word

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
Do
Waitms 35
Print " vorwerts"
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 1 'Drehrichtung Motor 1
Motor2_in1 = 1 'Drehrichtung Motor 2
Motor2_in2 = 0 'Drehrichtung Motor 2
For I = 0 To 125 'geschwindigkeit max.511
Pwm1a = I
Pwm1b = I
Waitms 25
Next I
Wait 36 'lang vorwerts wenn kein Sigmal
If Pina.6 = 0 And Pina7. = 1 Then
Sound Portd.7 , 200 , 900 'Ton
Else

'Bremsen
Pwm1a = 0
Pwm1b = 0
Wait 1
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 0 'Drehrichtung Motor 2
u.s.w. wo ist mein Fehler????:confused:

Danke

5Volt-Junkie
27.07.2012, 13:40
Kannst Du uns etwas mehr Infos liefern? Was heißt denn, er fährt nicht wie er soll? Hat sich die Hardware geändert? bzw. Beschaltung? So wie es aussieht, ändern sich auch die Ports, mit den Du was ansteuerst oder?

klaro1971
27.07.2012, 15:59
Hallo 5Volt-Junkie,also im oberen Codeausschnitt fährt mein Bot irgendwo gegen oder der Scharpsensor erkennt was,dann bremst er,fährt zurück und sucht sich ein neuen Weg.Da er aber RB35 1:100 Motoren eingebaut hat,ist er zu schnell und wenn er bremst,kippt er nach vorn.Deswegen habe ich den zweiten Code.Damit kann ich die Geschwindigkeit einstellen,je nach belieben.Mein Proplem ist nun,das er nichtmehr auf mein Pumper oder auf den Scharpsensor reagiert.Beide sind an Porta.,im oberen Codeausschitt reagiert er so wie er soll auf

Code:
If Pina.7 = 1 Then
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Else
b.z.w.auf
if PinA.6 = 0 Then.
Mein Proplem ist eigendlich simpel doch ich komme nicht drauf und meine Suche hatte bisher kein Erfolg.I
Ich möchte nur das PinA7 auf mein Bumper reagiert so wie im ersten Codeausschnitt.;)
Danke

MagicWSmoke
28.07.2012, 00:32
nichtmehr auf mein Pumper
Wird wohl am Pumper liegen :D
Abgesehen davon, ein Inpu wird auch nicht compilieren und es macht keinen Sinn im gezeigten Code auf Input-Register zu schreiben. Das hat zwar bei manchen Controllertypen eine Funktion, nämlich den Ausgangspin schnell zu toggeln, dürfte hier aber nicht das Ziel sein.

klaro1971
28.07.2012, 01:21
Nagut,ich meine Bumper also diese kleinen Redschalter;)Mein Proplem ist ja das ich es nicht hinbekomme das mein Bot,wenn er wo gegenfährt zurücksetzt.Er wird wogegenfahren denn meine Scharp habe ich gestern geröstet.Mir bleibt nurnoch mein Pumper.Doch ich finde einfach kein Ansatz,kann mir nicht vorstellen das ich der erste mit diesen Proplem bin!!!
Mit IF xxxxTHEN geht es nicht,doch womit?

Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32


$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein


Config Pind.5 = Output
Motor1_pwm Alias Portd.5
Config Pinc.6 = Output
Motor1_in1 Alias Portc.6
Config Pinc.7 = Output
Motor1_in2 Alias Portc.7

Config Pind.4 = Output
Motor2_pwm Alias Portd.4
Config Pinb.0 = Output
Motor2_in1 Alias Portb.0
Config Pinb.1 = Output
Motor2_in2 Alias Portb.1


Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Pwm1a = 250 'max.1023
Pwm1b = 250 'max.1023
Tccr1b = Tccr1b Or &H02


Do
Start Adc
Dim Ws As Word
Ws = Getadc(7)
Portc.6 = 1 'Richtung vorwärts
Portc.7 = 0 'Richtung vorwärts
Portd.4 = 1 'Linker Motor ein/aus
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1


If Pina.7 = 1 Then
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Else
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 20
Sound Portd.7 , 200 , 900
Waitms 250

Portc.6 = 0 'Richtung vorwärts
Portc.7 = 1 'Richtung vorwärts
Portd.4 = 1 'Linker Motor ein/aus
Portb.0 = 0 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1

Wait 1 'xx lang Richtung zurück fahren
Portd.4 = 0 'Stop rechter Motor
Portd.5 = 0 'Stop linker Motor
Wait 1 'xx lang drehen

Portc.6 = 0
Portc.7 = 1
Portd.4 = 1 'Links drehen ein/aus

Portb.0 = 1
Portb.1 = 0
Portd.5 = 1
Wait 1

End If
Loop
End

MagicWSmoke
28.07.2012, 01:37
Ich fand halt "Pumper" lustig, andererseits hattest Du den ja auch mal richtig geschrieben.
Allerdings tät's Dich auch weiterbringen, wenn Du auf Hinweise reagierst, wie der Hinweis des Schreibens auf Eingangsregister.
In Deinem jetzt gezeigten Code hast Du das gleich dreimal drin. Mit welchem Sinn denn ?
Dann sind Aliase zu sehen, die auf Sensoren zeigen, allerdings sind dort die Ausgänge ver-aliast, hier würde man eher Aliase auf Eingänge erwarten, mal ganz abgesehen davon ich nicht wüsste, wie ein Alias auf zwei Bezeichner korrekt compilieren sollte. Ich würde mich an Deiner Stelle mit den Grundlagen befassen, sonst gibt's da noch mehr freigesetzten magischen weissen Rauch...

klaro1971
28.07.2012, 01:47
Du hast recht,ich sitze auch schon ziemlich lange daran.Ich sollte mal ne Auszeit nehmen.Ich spiele mir mein alten Code wieder drauf den damit läuft er ja(nur halt zu schnell) und fange nochmal von vorne an:(
Ja der Pumper,früher als meine Oma noch lebte hatten wir unsere eigene Sprache, der Staubsauger war der Feuerbesen,der Fohn die Laiserkanone....
Ich danke Dir für dein Tip.
Gruß Klaro

klaro1971
29.07.2012, 23:27
Hallo,ich komme nochimmer nicht weiter,wiso reagiert
Code:
If Pina.7 = 1 Then
Portc.0 = 1
Wait 1
nicht im Code?Gibt es eine andere Möglichkeit den Code zu unterbrechen für eine Minute so das es dann weiter läuft?

Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Pind.5 = Output
Motor1_pwm Alias Portd.5
Config Pinc.6 = Output
Motor1_in1 Alias Portc.6
Config Pinc.7 = Output
Motor1_in2 Alias Portc.7

Config Pind.4 = Output
Motor2_pwm Alias Portd.4
Config Pinb.0 = Output
Motor2_in1 Alias Portb.0
Config Pinb.1 = Output
Motor2_in2 Alias Portb.1

Config Pina.7 = Input
Pina.7 = 1

Tccr1a = &B10100010 '9 Bit PWM Voller Takt
Tccr1b = &B10000011 'Teiler = 8 PWM = 1951Hz bei 9 Bit
Dim I As Word
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Wait 3
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Do
Print " Richtung1"
Motor1_in1 = 1 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 1 'Drehrichtung Motor 2
Motor2_in2 = 0 'Drehrichtung Motor 2
For I = 0 To 250 'max.511
Pwm1a = I
Pwm1b = I
Waitms 1
Next I

'Bremsen
Pwm1a = 0
Pwm1b = 0
Wait 20
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 0 'Drehrichtung Motor 2

5Volt-Junkie
31.07.2012, 15:26
@klaro1971: Bitte benutze den Code-Button um die Quelltexte hier rein zu posten. Das hast du in Deinem ersten Beitrag vorblidlich angefangen :)
Das macht das ganze etwas übersichtlicher ;)

klaro1971
02.08.2012, 10:01
Sorry;), mein Fehler.Habe nurnoch ein Knoten im Kopf da ich mit den Code nicht weiterkomme.Ich dachte das bei soviel Spezialisten die die tollsten Dinge bauen mal einer dabei ist der mir weiterhelfen kann aber scheinbar wissen die auchnicht weiter.:(

MagicWSmoke
02.08.2012, 10:17
... aber scheinbar wissen die auchnicht weiter.:(
Das liegt eher daran, dass es keinen Spass macht gegen eine Wand zu reden.


Config Pina.7 = Input
Pina.7 = 1

klaro1971
02.08.2012, 11:09
Da ich noch Anfänger bin,habe ich halt noch Propleme mit Code schreiben.Natürlich kann und beschäftige ich mich auch mit den Grundlagen doch ich bin halt ein Praktiker.Technisches ist kein Proplem,als ich zu Testzwecken mir ein Lockpick gebaut habe,bin ich auch nach ein Tag damit klar gekommen,meine Arbeitskollegen brauchten 7-14Tage dazu.Will sagen mit der richtigen Hilfe kann es jeder schaffen.
Aber ich danke Dir,so habe ich wieder einen Tip bekommen und das ist ja letztendlich das was ich möchte.
Danke

5Volt-Junkie
03.08.2012, 20:49
Der Anfang kann ziemlich steinig sein.

Was die Spezialisten angeht, kann ich einige Gründe nennen, warum es eben keine Antwort gibt. Nimm es aber nicht persönlich sondern als eine Kritik, mit der ich Dir etwas helfen möchte. Ich persönlich, habe mir am Anfang den Code gar nicht angeschaut, da das Problem wirklich zu simpel schien, aber ich keine Zeit hatte mir den ganzen Code anzuschauen und mich auseinander zu setzen.

Man kann nicht alles rein posten was man hat und sagen (nach dem Motto) "das geht nicht, sagt mir wieso! Alle anderen Infos gebe ich auf Anfrage!" Das mögen die User nicht und werden so einen Beitrag höchstwahrscheinlich sofort weg klicken und den nächsten lesen wo der User...

- Seinen Fehler genauer beschreibt
- Den Code evtl. etwas besser kommentiert
- Schon vorher nur die Problemzone im Code ausgesucht hat und nur diese rein postet oder...
- kann sagen "Ok Leute, ich habe jetzt ein Programm gemacht, wo ich nur den Taster konfiguriere und abfrage." Und wenn es dann nicht geht, wissen die User automatisch, dass das Problem eben komplizierter sein könnte und Du schon im Vorfeld was gemacht/getestet/vorbereitet hast.
- Wenn man etwas weiter ist aber wieder auf ein Problem stoßt, wieder die Liste von Vorne abarbeiten UND nochmal die Beiträge mit Tipps durchlesen, die schon vor dem ersten Problem geschrieben wurden (weswegen MagicWSmoke jetzt so verärgert war).

- Nach dem Problem im Internet suchen. In Deinem Fall z.B. die Bascom-Hilfe nochmal anschauen, wie ein Eingang konfiguriert und abgefragt wird.
Ob man ein Praktiker oder Theoretiker ist - beide müssen die Eigenschaft haben bzw. lernen Dinge zu hinterfragen, auch wenn diese Dinge von dir selbst stammen:)


Aber ich wiederhole nochmal: Das soll Dich nicht beleidigen, demotivieren oder sonst noch was machen. Du willst nicht wissen, wie unsere ersten Beiträge ausgesehen haben :)

Deswegen bei Problemen kannst Du deine Frage hier ruhig rein stellen, auch wenn es was einfaches ist und eine LED bei einem Tastendruck nicht angeht usw. Aber man muss aus deinem möglichst übersichtlichen Beitrag entnehmen können, dass Du Dich vorher schon bemüht hast, das Problem zu beseitigen bzw. zu verstehen.

Auf diesem Wege, viel Spass und Erfolg bei Deinen Elektronik-Basteleien;)




P.S. Deine Codes stehen immer noch lang rein gepostet. Du kannst die Beiträge nachträglich bearbeiten und mit Gartenzaun-Button (#) oben, dein Code einfügen. ;)

klaro1971
03.08.2012, 22:33
Danke,5Volt-Junkie.
Ich habe es hinbekommen!!!Ich kann jetzt die Geschwindigkeit meiner RB35 regeln.:p Ich habe mich bis Artikel 85 in der Stichwortsuche ,,PWM,, durchgearbeitet und genug Infos gesammelt.
Ich habe noch ein paar Änderungen an meinen Bot vor,doch bevor ich hier frage arbeite ich mich erstmal durch.Wenn es sein muß auch durchs alte Forum.;)
Gruß klaro

P.S. ich gelobe Besserung :rolleyes: