- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 9 von 9

Thema: Servo ansteuern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.11.2006
    Beiträge
    30

    Servo ansteuern

    Anzeige

    Praxistest und DIY Projekte
    hallo,
    ich möchte gern ein Servo per attiny2313 ansteuern, dazu habe ich mir die Anleitung aus der FAQ zum testen genommen, aber wenn ich das Programm Compile wird immer der Fehler 85: unknown interrupt file ausgeworfen, was mache ich falsch?

    bitte nicht schlagen, wenn die Frage blöd ist, bin echt noch blutiger Anfänger...

    Code:
    $regfile = "attiny2313.dat"
    $crystal = 1000000
    
    
    Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
    
    Config Portb = Output
    
    Enable Interrupts
    
    Servo(1) = 100
    Servo(2) = 100
    waitms 1000
    mfg Hübi

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Hübi,

    ist das das ganze Programm?

    Wenn ja ...

    1. Ein "End" (oder "Do Loop") sollte ans Ende des Programms
    2. Du solltest am Anfang noch $hwstack, $swstack und $framesize definieren.

    Insgesamt wird sich aber auch nicht viel tun, weil beide Servos ja nur in eine feste Position gestellt werden und das Programm danach endet.

    Nimm doch einfach das Bascom-Beispiel, das unter "Config Servos" in der Hilfe steht.

    Gruß Dirk

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.11.2006
    Beiträge
    30
    meinst du dieses hier?

    Code:
    '-----------------------------------------------------------------------
    '                         (c) 2001-2005 MCS Electronics
    '                           servo.bas demonstrates the SERVO option
    '-----------------------------------------------------------------------
    
    'Servo's need a pulse in order to operate
    'with the config statement CONFIG Servos we can specify how many servo's we
    'will use and which port pins are used
    'A maximum of 16 Servos might be used
    'The SERVO statements use one byte for an interrupt counter and the TIMER0
    'This means that you can not use TIMER0 anymore
    'The reload value specifies the interval of the timer in uS
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
    $regfile = "2313def.dat"
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    'as an option you can use TIMER1
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
    
    
    'we use 2 Servos with 10 uS resolution(steps)
    
    'we must configure the port pins used to act as output
    Config Portb = Output
    
    'finally we must turn on the global interrupt
    Enable Interrupts
    
    'the servo() array is created automatic. You can used it to set the
    'time the servo must be on
    Servo(1) = 10                                               '10 times 10 = 100 uS on
    'Servo(2) = 20                                               '20 times 10 = 200 uS on
    Do
    Loop
    
    Dim I As Byte
    Do
     For I = 0 To 100
       Servo(1) = I
       Waitms 1000
     Next
    
     For I = 100 To 0 Step -1
     '  Servo(1) = I
       Waitms 1000
     Next
    Loop
    End
    da habe ich immer noch genau den selben Fehler drin...

    ist es möglich, das es an meiner Bascom version liegt?

    mfg

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ... ist es möglich, das es an meiner Bascom version liegt?
    Bei meiner Version 1.11.9.2 gibt's mit deinem Programm keinen Fehler.

    Gruß Dirk

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    28.11.2006
    Beiträge
    30
    danke für eure Bemühungen, es liegt an meiner Version -,-
    -mit der demo klappts...

    naja, jetzt kann ich ja erstmal ein bischen rumprobieren der Tipp mit den Beispielprogrammen ist echt gold wert

    mfg Hübi

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    28.11.2006
    Beiträge
    30
    ok, mit rumrobieren ist wohl doch noch nicht so viel...

    mit meinem Programm zittert das servo nur "blöd herrum"

    hab schon alle möglichen programme ausprobiert, aber es ist eig. immer nur ein Zucken...

    habt ihr eine idee woran es liegen kann?

    (Die $hwstack, $swstack und $framesize sind aber nicht zwingend erforderlich oder?)



    Code:
    $regfile = "attiny2313.dat"
    $crystal = 1000000
    
    $hwstack = 32
    $swstack = 5
    $framesize = 20
    
    
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    
    Config Portb = Output
    
    Enable Interrupts
    
    
    Do
    
    Servo(1) = 50
    
    Wait 2
    
    Servo(1) = 150
    
    Wait 2
    
    Loop
    End
    mfg hübi

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Diese Infos:
    $hwstack = 32
    $swstack = 5
    $framesize = 20
    sollten drinnen sein. Bei so einen Code wird dich Bascom aber nicht umbringen, wenn das fehlt. Das wird erst bei größeren Codes interessant. bei deinen Einstellungen ist der swstack viel zu klein. Den solltest du mindestens auf 32 stellen.

    Woran das Zittern liegen kann:
    1. Der Quarz ist zu langsam. Entweder, es gibt einen schnelleren internen, oder du musst einen schnelleren externen anlöten.
    2. Reload ist der falsche Wert. Den richtigen krigt man meistens nur duch Experimentieren heraus.
    3. Bricht die Spannung beim Bewegen des Servos ein? Wenn ja, häng den Servo mal testweise an eine andere Stromquelle. Servos ziehen beim einschalten gerne mal etwas mehr Strom, was den µC im schlimmsten Fall dazu bringt, dass er sich resettet, was ein Zittern des Servos zur Folge hat.

    Ich hoffe, du findest den Fehler!
    Wenn nicht, melde dich wieder!

    jon
    Nice to be back after two years
    www.roboterfreak.de

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    28.11.2006
    Beiträge
    30
    Danke Jon, du hattest recht, es lag am Quarz...
    ich habe jetzt einen AT90s2313 mit 8Mhz quarz genommen, damit klapps ohne Probleme!

    mfg hübi

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Herzlichen Glückwunsch!

    Und keiner hat Dich geschlagen. Was soll man bei solchen Problemen auch machen? Dafür ist das Forum ja da.

Berechtigungen

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

LiFePO4 Speicher Test