- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: Servo ansteuern - ich komm nicht drauf!

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221

    Servo ansteuern - ich komm nicht drauf!

    Anzeige

    Powerstation Test
    warum geht der erste Code und der zweite nicht?
    Beim ersten habe ich den Vorschlag aus RN Wissen genommen und die nicht benötigten Kanäle mit einer sinnlosen Routine versehen (Toggle x), aber die Architektur belassen.

    Beim zweiten Code habe ich den Code abgeändert weil es ja nicht nötig ist, den jeweiligen Kanal 2mal anzusprechen, aber ich brauche ja auch eine gewisse Zeitverschwendung um das Servo nicht zu oft anzusprechen.
    Dieser Code aber geht nicht. Auch wenn ich die Anzahl der Kanäle verdopple (weil ja jeder nur 1mal angesprochen wird) gehts nicht. Warum?

    Wäre schön wenn mir jemand auf die Sprünge helfen könnte, ich komm da grad echt nicht weiter.

    Code:
     If Kanal = 0 Then
       If Porta.2 = 0 Then                                     
          Timer0 = Servo(1)                                   
          Porta.2 = 1                                          
       Else                                                   
          Porta.2 = 0                                           
          Incr Kanal
       End If
     End If
    
    If Kanal = 1 Then
       If X = 0 Then                                            
          Toggle X                                             
       Else
          Toggle X
          Incr Kanal
       End If
     End If
    
    If Kanal = 2 Then
       If X = 0 Then                                           
          Toggle X
    
       Else
          Toggle X
          Incr Kanal
       End If
     End If
    
      If Kanal = 3 Then
      Timer1 = 0
      Kanal = 0
    End If
    Return
    End
    Code:
     If Kanal = 0 Then
       If Porta.2 = 0 Then                                     
          Timer0 = Servo(1)                                   
          Porta.2 = 1                                          
       Else                                                   
          Porta.2 = 0                                           
          Incr Kanal
       End If
     End If
    
    If Kanal = 1 Then
          Incr Kanal
       Timer0=0
     End If
    
    If Kanal = 2 Then
        Incr Kanal
        Timer0=0
      End If
    ...
      If Kanal = 3 Then
      Timer1 = 0
      Kanal = 0
    End If
    Return
    End

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    43
    Beiträge
    1.273
    Ist es so gewollt, dass du beide Timer benutzt um nur ein Servo anzusprechen...?
    zusammengestückelt ausm RN-Wissen beitrag für 1 Servo:
    Code:
    Servoirq: 
    If Kanal = 0 Then    
       If Portb.0 = 0 Then                            'wenn port low       
          Timer1 = Servo(1)                           'dann timer auf entsprechende verzögerung       
          Portb.0 = 1                                 'und port anschalten    
       Else                                           'das hier passiert erst bei dem darauf folgenden interrupt       
          Portb.0 = 0                                 'dann port wieder ausschalten       
          Incr Kanal                                  'und den nächsten kanal bearbeiten    
       End If 
    End If
    If Kanal = 1 Then   
       Timer1 = 40000                                     
       Kanal = 0 
    End If 
    Return
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Hallo Willa,
    ja du hast natürlich recht. Es muss Timer0 heißen.
    Allerdings ändert es dennoch nichts an der Funktion bzw. Funktionslosigkeit!
    In meinem 2. Code (nicht funktionierendem) wird das Servo viel zu häufig befeuert, und das egal wieviele "Kanäle" ich noch dranhänge.
    Aber diese müssten doch eine Verzögerung bringen, da sie ja abgearbeitet werden müssen bis wieder Kanal 0 drankommt!?![COLOR=#000000 ! important][/COLOR]

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    43
    Beiträge
    1.273
    dein code geht nicht, weil du kein elseif benutzt. Kanal wird um 1 erhöht, sofort danach wird gefragt ob er einer höher ist, und dann wieder um eins erhöht. dein ganzer code läuft also innerhalb von einem einzigen interrupt ab.
    Geändert von Willa (21.05.2011 um 22:25 Uhr) Grund: typo
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    vielen Dank, das war der Fehler. wie kann man nur so blind sein.
    danke.
    jetzt klappt alles

Ähnliche Themen

  1. Manche haben`s einfach drauf !
    Von Andree-HB im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 6
    Letzter Beitrag: 26.02.2010, 04:52
  2. Unbekanntes Display ansteuern aber wie ??? komm nicht weiter
    Von Looser im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 06.11.2009, 23:51
  3. C++ Servo ansteuern (C-code von der seite geht nicht)
    Von niccommander im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 25.09.2008, 17:33
  4. HD6180 über ATMega16 ansteuern - komm nicht weiter
    Von Adam im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 06.04.2005, 09:19
  5. Erweiterungen, Was ist da genau drauf und drann?
    Von FrankyB im Forum Robby CCRP5
    Antworten: 14
    Letzter Beitrag: 24.12.2003, 22:58

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad