- Labornetzteil AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Servo reagiert nicht

  1. #21
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Anzeige

    E-Bike
    Danke. Weil der Originalplan aber nicht so ohne Weiteres runterladbar ist, weis ich nicht, ob Du ihn so ohne Weiteres hochladen darfst ???

    Sieht jedenfalls nicht so aus, als wenn da noch was in HW eingestellt werden müßte. Weis 'nu nix mehr
    Geändert von Searcher (04.04.2013 um 14:08 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #22
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.06.2005
    Ort
    Gäufelden
    Alter
    38
    Beiträge
    111
    kann das sein das mein Quarz kaputt ist? Und der deswegen einfach keinen takt bekommt? Dann dürfte ich ja eigentlich gefahrlos den Text der internen uhr auf 8MHz drehen können beim (letzten) ATMega16 der mir noch bleibt... und wenn der dann auch nicht mehr reagiert dann mache ich mir Gedanken... ich müsste das doch eigentlich relativ gut verändern können ohne gleich Gefahr zu laufen alles zu zerschießen oder? Ach ja als Software auf meinem PC nutze ich Übrigends AVR-Studio 4 fals das Hilft.

    - - - Aktualisiert - - -

    Falls jemandem dazu noch was einfällt... ich habe jetzt bei meinem letzten AVR die Interne Uhr auch auf 8MHz gestellt. Seit dem Reagiert dieser auch nicht mehr. Was mache ich da bitte falsch?

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Dann fused du falsch. Mach mal bitte einen Screenshot wie du deine Fuses eingestellt hast. Ich habe kein AVR Studio.
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  4. #24
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zu dem Interrupt:
    Im fast PWM Mode mit ICR1 als Top (Mode 14) wird bei Erreichen des Top Wertes, also ICR1 nicht der Timer Overflow Interrupt ausgelöst, sondern der Input Capture Interrupt. Dazu muß der aber im TIMSK Register mit dem TICIE1 Bit freigegeben werde.

    Außerdem müssen die Interrupts global freigegeben werden. Das geht in C mit "sei"; glaub ich.

    Der Name der ISR muß auch dem Input Capture Interrupt entsprechen. Und ist mir nicht klar aber sollten Variable in der ISR sollen nicht volatile sein ???
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Ich kann dir nur sagen, wie ich das gelöst habe. Eigentlich sollen sie volatile sein, aber ich weiss nicht warum und es funktioniert auch so.

    Code:
    byte state = 1;
    int pwm_hi = 0;
    int pwm_lo = 0;
    int led_w = 13;
    int servo_1 = 12;
    int servo_1_pos = 150;
    int servo_state = 0;
    int n = 0;
    
    
    void setup(){
    pinMode(led_w, OUTPUT); 
    pinMode(servo_1, OUTPUT);
        setup_timer1();
      
    }
    
    void loop()
    {
    if(servo_state == 0)
    {
       delay(20);
       servo_1_pos = servo_1_pos + 1;
       if(servo_1_pos ==200)
       {
       servo_state = 1;
       }
     }
    
    if(servo_state == 1)
    {
       delay(20);
       servo_1_pos = servo_1_pos - 1;
       if(servo_1_pos ==100)
       {
       servo_state = 0;
       }
     }
    
    }
    
    void setup_timer1(){
      cli();                 // disable interrupts
      TCCR1A = 0;            // Register TCCR1A auf 0 setzen
      TCCR1B = 0;            // Register TCCR1B auf 0 setzen um Timer zu beenden
    
      //CTC setzen
      OCR1A = 19;         // bis 15624 ticken dann interrupt
    
      //enable CTC
      TCCR1B |= (1 << WGM12);
      // Set CS10 bit so timer runs at clock speed:
      //Timerresolution: 1/(16*10^6 / 1024)
      TCCR1B |= (0 << CS10);
      TCCR1B |= (1 << CS11);
      TCCR1B |= (0 << CS12);  // prescaler 1024
      // enable Timer1 compare interrupt
      TIMSK1 |= (1 << OCIE1A);
      // enable global interrupts:
      sei();
    }
    
    
    ISR(TIMER1_COMPA_vect)
    {
     if (n == 20000)
      {
        digitalWrite(led_w, !digitalRead(led_w)); 
        n = 0;
      }
      n++;
    
    if (pwm_hi > 0)
    {
    digitalWrite(servo_1,HIGH);
    pwm_hi = pwm_hi - 1;
    pwm_lo = 0;
    }
    else if(pwm_hi == 0)
    {
    pwm_lo++;
    digitalWrite(servo_1,LOW);
    }
    if (pwm_lo == 2000 - servo_1_pos)
    {
    pwm_hi = servo_1_pos;
    }
    }
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. [ERLEDIGT] Servo reagiert nicht
    Von miicchhii im Forum Motoren
    Antworten: 15
    Letzter Beitrag: 20.07.2011, 20:11
  2. CMPS03 reagiert nicht
    Von Jon im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 12.08.2009, 15:27
  3. Controller reagiert nicht
    Von robo junior im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 18.01.2007, 18:27
  4. ATtiny2313 reagiert nicht
    Von Dirk im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 18.05.2006, 21:44
  5. Asuro reagiert nicht
    Von ToHa im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 10.04.2006, 20:47

Berechtigungen

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

Labornetzteil AliExpress