- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Bei Reset läuft Motor los

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.01.2005
    Beiträge
    19

    Bei Reset läuft Motor los

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich will mit meinem Roboter mal die ersten Gehversuche machen. Jetzt hab ich aber das Problem das wenn ich die RESET-Taste am RN-Control Board drücke einer der beiden Motoren los läuft und ich hab keine Ahnung wieso.

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    Config Adc = Single , Prescaler = Auto
    
    Config Porta.7 = Input
    Porta.7 = 1
    
    Config Portc.6 = Output
    Config Portc.7 = Output
    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portd.4 = Output
    Config Portd.5 = Output
    
    Dim T As Word
    
    Start Adc
    
    Anf:
    Sound Portd.7 , 200 , 200
    Sound Portd.7 , 400 , 400
    Waitms 40
    T = Getadc(7)
    If T > 500 Then Goto Anf
    
    
    Sound Portd.7 , 400 , 350
    Wait 2
    Sound Portd.7 , 400 , 350
    Wait 1
    
    Portc.6 = 0                                                 'Drehrichtung Links
    Portc.7 = 1
    
    Portb.0 = 0                                                 'Drehrichtung Rechts
    Portb.1 = 1
    
    Portd.4 = 1                                                 'Motor Links Ein
    Portd.5 = 1                                                 'Motor Rechts Ein
    
    Pwm1a = 150
    Pwm1b = 150
    
    Wait 1
    
    Pwm1a = 0
    Pwm1b = 0
    
    Portd.4 = 0
    Portd.5 = 0
    
    Sound Portd.7 , 400 , 350

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Sei mir nicht böse aber das wundert mich nicht im geringsten denn dein Programm ist von der Struktur her ein mittleres Chaos.


    Die Definitionen sind ja noch ok.(Also bis "Startadc"

    Danach fängst du eine Prozedur namens "anf:" an die nirgends endet.

    Keine Hauptschleife und vorallendingen kein "END".
    Dh. deine Programmabarbeitung läuft nach dem letzten Sound-Befehl ins Nirvana und es wird zufallscode ausgeführt.

    Häng wenigstens ein "END" als letzte Zeile an um das Programmende zu definieren.(Datazeilen und EEProm-Inhalte stehen natürlich dahinter)



    Kleiner Tip:

    Gewöhn dir am besten gleich an deine Programme strukturiert zu schreiben
    Das erhöht nicht nur die Lesbarkeit sondern hilft auch Fehler zu vermeiden.
    Gruß
    Ratber

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    "config portc.6=Output" geht, soweit ich weiß, nicht.
    Einzelne Pins werden immer mit "config pinx.y" konfiguriert.
    (Auch wenn's Ausgänge werden sollen.)
    Wundert mich, daß Bascom keine Fehlermeldung ausspuckt.

    Bei Programmstart konfigurierst du die Pins zwar, setzt sie aber nicht.
    Erst nach über 3 Sekunden (Wait bei den Sounds) setzt du die.
    Heißt, aus deinen PWM Ports kommt so lange eine Dauer "1" raus..
    (Wo konfigurierst du die PWMs ? bzw. die Timer ?)

    Wie Ratber schon richtig sagte, läuft dein Programm in's Nirvana.
    Der Controller startet so immer neu.

    Auch eine Art, eine Schleife zu machen


    Gruß
    Christopher

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    18.01.2005
    Beiträge
    19
    Morgen,

    ich hab mein Programm jetzt mal nach euren Ratschlägen umgeschrieben:

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    Config Adc = Single , Prescaler = Auto
    
    Config Pina.7 = Input                                       'Config ADC für Tastenabfrage
    Porta.7 = 1
    
    Config Pinc.6 = Output                                       'Config Ports und PWM für Motoren
    Config Pinc.7 = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    
    Portc.6 = 0                                                 'Drehrichtung Links
    Portc.7 = 1
    
    Portb.0 = 0                                                 'Drehrichtung Rechts
    Portb.1 = 1
    
    Portd.4 = 1                                                 'Motor Links Ein
    Portd.5 = 1                                                 'Motor Rechts Ein
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Pwm1a = 0
    Pwm1b = 0
    Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8
    
    Dim T As Word
    
    Start Adc
    
    Sound Portd.7 , 200 , 200
    Sound Portd.7 , 400 , 400
    
    T = Getadc(7)
    While T > 500                                               'Verlasse Schleife nach drücken beliebiger Taste
    T = Getadc(7)
    Print T
    Wend
    
    
    Print "start erfolgt"                                       'Startbedingung wurde erfüllt
    Sound Portd.7 , 400 , 400
    Waitms 100
    
    Pwm1a = 300                                                 'Fahre los
    Pwm1b = 300
    
    Wait 2
    
    Pwm1a = 0                                                   'Halte An
    Pwm1b = 0
    
    Portd.4 = 0
    Portd.5 = 0
    
    Sound Portd.7 , 400 , 350
    
    End                                                         'end program
    Und jetzt scheint es auch zu laufen. \/

    Danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress