Skocz do zawartości

[serwokontroler] Mini Maestro 12


kisiel507

Pomocna odpowiedź

Transmisja jest taka sama niezależnie od procesora, bo to jest wg. ustalonej specyfikacji. Wystarczy, że w Atmega8 ustawisz odpowiednio uart i wysyłasz te same komendy co w przykładzie.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Podłącz do komputera (przez transceiver rs232 do kupienia za kilka zł, albo gotowy moduł ft232 lub podobny) i sprawdź czy komputer dostaje odpowiednie pakiety przy odpowiednio ustawionym porcie (prędkość, ilość bitów stopu itd.)

Link do komentarza
Share on other sites

No wiadomo że też tak może być ale w symulacji wszystkie bity rejestrów są ustawione tak jak wyżej. Mój kod wygląda mniej więcej o tak :

#include<avr/io.h> 
#include<util/delay.h> 

#define UART_BAUD 9600 

static void UART_init() 
{ 
UCSRB|=0x18;//ustawienie RXEN i TXEN 
UCSRC|=0x8e;//ustawienie URSEL UMSEL UCSZ0 UCSZ1 

UCSRC|=0x04;//ustawienie USBS 
} 

int main() 
{ 
UART_init(); 
DDRB|=0xff; 
while(UCSRA&0x20)//jeżeli UDR jest pusty 
   { 
   _delay_ms(1000); 
   UDR=0xaa;//Bajt startu 
   while(UCSRA&=~0x20);// oczekiwanie na wysłanie 
   UDR=0x0c;// Mini maestro 12 
   while(UCSRA &=(1<<TXC)); 
   UDR=0x04;//Komenda ustaw pozycje 
   while(UCSRA &=(1<<TXC)); 
   UDR=0x00;//kanał 0 
   while(UCSRA &=(1<<TXC)); 
   UDR=0x70; // pozycja neutralna dla serwa 
   while(UCSRA &=(1<<TXC)); 
   0UDR=0x2e; 
   while(UCSRA &=(1<<TXC)); 
   _delay_ms(1000); 
   /*analogicznie druga część*/ 
   UDR=0xaa; 
   while(UCSRA&=~0x20); 
   UDR=0x0c; 
   while(UCSRA&=~0x20); 
   UDR=0x04; 
   while(UCSRA&=~0x20); 
   UDR=0x00; 
   while(UCSRA&=~0x20); 
   UDR=0x40; 
   while(UCSRA&=~0x20); 
   UDR=0x2e; 
   while(UCSRA&=~0x20); 
   _delay_ms(1000); 


   } 
}
Link do komentarza
Share on other sites

Na pierwszy rzut oka... gdzie ustawiasz rejestr UBRRH/L -> prędkość uarta?

Naprawdę podłącz to do komputera, sprawdź jak to działa i dopiero jak będziesz pewien, że do komputera wysyłasz poprawne komunikaty z poprawną prędkością itd. baw się z maestro.

Link do komentarza
Share on other sites

Mam taki problem że gdy wpisuje UBBRH to wpisuje się w symulacji ta sama wartośc też do UCSRC mimo ustawienia bitu URSEL. Wg datasheet atmega8 dla zegara 8MHz oraz predkosci uart 9600 do UBRR nalezy wpisac 51 wiec wystarczy gdy to wpisze do UBRRL?

Link do komentarza
Share on other sites

Wpisuje tą wartość do UBRRL ale i tak zas mi sie zmienia UBRRH (w symulacji) tak jak UCSRC mimo że ustawiam URSEL. A w dokumentacji ta wartość jest podana heksadecymalnie czy dziesiętnie?

Link do komentarza
Share on other sites

W którym miejscu w dokumentacji?

W dokumentacji jest taka tabelka z wartością UBRR w zalezności od prędkości zegara i docelowej prędkosci UART. Z tego co pamiętam tam wartości są podane dziesiętnie

Link do komentarza
Share on other sites

Po prostu nic tam nie wpisywać?

Powtórzę jeszcze raz.. opanuj transmisję z PC i wtedy z maestro pójdzie gładko. Inaczej nie wiesz co robisz, chyba, że masz analizator stanów logicznych lub oscyloskop...

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.