- Labornetzteil AliExpress    Werbung      
Ergebnis 1 bis 6 von 6

Thema: Servo code was mache ich falsch?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Du musst servopos auch passend vorbesetzen. Außerdem dauert Deine ISR min. 69 Takte, der OC2-Int löst aber alle 41 Takte aus. Was sagt uns das ? Bild  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    05.05.2008
    Beiträge
    51
    Code:
    #define F_CPU 4000000UL
     #include <avr/interrupt.h>
    #include <avr/io.h>
    #include <util/delay.h>
     #define SERVOPIN 7
    #define SERVOPORT PORTD
    #define DDRSERVO DDRD
    
    volatile unsigned char servopos = 150;
    
    void servo_init()
    {
                 
      TIMSK|=(1<<OCIE2);
      TCCR2 |= (1<<WGM21) | (1<<CS20);  //Prescale=1, CTC mode
      OCR2 = F_CPU/100000;      //alle 10µS ein IRQ
      DDRSERVO|=(1<<SERVOPIN);
    };
    
     
    
    int main (void)
    {
         
         DDRD = 0xff;
         sei();
       servo_init();
       while(1)
       {
             
       }
      return 0;
    }
    
    ISR(TIMER2_COMP_vect)
    {
         
      static int count;
      if(count>servopos)SERVOPORT&=~(1<<SERVOPIN);
        else SERVOPORT|=(1<<SERVOPIN);
      if(count<2000)count++; // Die Impulse sollten alle 20ms gesendet werden! 6.2.11 mic
        else count=0;
    };
    Ok hier ist jetzt meine neuer Code.
    OK ich mus die Interrupts in dem Interrupt deaktivieren ?

Ähnliche Themen

  1. Was mache ich hier falsch?
    Von xythobuz im Forum Robby CCRP5
    Antworten: 2
    Letzter Beitrag: 30.12.2008, 21:26
  2. Mega16 und Adc; Was mache ich Falsch?
    Von x8r im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 20.01.2006, 19:42
  3. was mache ich falsch?
    Von ferdisdot im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 14
    Letzter Beitrag: 06.01.2006, 21:01
  4. Was mache ich falsch? Timer2
    Von Baumschubser im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 06.06.2005, 13:35
  5. CNY 70...was mache ich nur falsch??
    Von Involut im Forum Sensoren / Sensorik
    Antworten: 30
    Letzter Beitrag: 24.10.2004, 23:39

Berechtigungen

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

    Werbung      12V Akku bauen