f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - Jak ustawić PWM na f=50Hz dla serva?

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Jak ustawić PWM na f=50Hz dla serva?
Autor Wiadomość
jeep1945
Student AiR

Dołączył: 08 Paź 2010
Posty: 1
Skąd: Polska
Wysłany: Sob Paź 16, 2010 10:30 am   Jak ustawić PWM na f=50Hz dla serva?

Witam,
już od dłuższego czasu próbuje odpalić servo używając EvB 4.3(oczywiście zasilanie serva jest z zasilacz oddzielnego 5V - servo MG995) ale mi się nie udaje. PWM działa na 100% bo mogę sterować ze spokojem diody(i na oscyloskopie mogę zaobserwować zmiany okresu i wypełnienia) ale ciągle nie mogę napisać lub rozwikłać problemu dla serva.

Stosuje:
Płytka EvB 4.3 z kwarcem 16MHz i Atmegą 16
Serwo MG995 zasilanie 5V

Wycinki główne z kodu (gdzie mam odpalony PWM 1A, 1B i 2 i steruje wypełnieniem PWM za pomocą klawiszy)

Kod:
#define F_CPU 16000000UL
#include <avr\io.h>              // Most basic include files
#include <avr/pgmspace.h>
#include <avr\interrupt.h>       // Add the necessary ones
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {

    int a=128;
    int b=128;
    int c=128;
   
    DDRC=0xff;//porty D jako wyjsciowe
         DDRC=0xff;//porty C jako wyjsciowe
         DDRB=0xff;//porty B jako wyjsciowe
    DDRA=0x00;//porty A jako wejsciowe
    PORTA = 0x0f;
   
    DDRD |= _BV(PD7); // pin 5,6 na wyjście
    DDRD |= _BV(PD5);
    DDRD |= _BV(PD4);

    TCCR1A=0b10100011;     //
    TCCR1B=0b10001100;    //z preskalerem 256       
    TCCR2=0b01111111;    //

        OCR1A=a;   
        OCR1B=b;
        OCR2=c;
   
    while(1)
    {
        _delay_ms(20);
        if(!(PINA & 0x01)) {a=a-5;}
       
       
        _delay_ms(20);
        if(!(PINA & 0x02)) b=b-5;
       
       
        _delay_ms(20);
        if(!(PINA & 0x08)) c=c-5;
       
       
        _delay_ms(20);
        if(!(PINA & 0x04)){
                a=255;
                b=255;
                c=255;
            };   
        if(a<0) a=255;
        if(b<0) b=255;
        if(c<0) c=255;   
        OCR1A=a;   
        OCR1B=b;
        OCR2=c;
    }
}


Proszę o pomoc,
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group