Skocz do zawartości

Część 1-Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)


Pomocna odpowiedź

Niestety AVRstudio 5 także ma problemy z kompilacją🙁. Jak myślicie, dlaczego ten problem występuje? Instalowałem Winavr na 2 innych komputerach i skutek jest dokładnie taki sam. O co chodzi? Wszystko samo w sobie powinno być niewiarygodnie banalne, a tu takie komplikacje:(.

  • 3 tygodnie później...

Sądze, że trafiłem do odpowiedniego miejsca... otóż złapałem ostatnio bakcyla (m.in dzięki forbotowi) i zabrałem się za projekt manipulatora. Na razie mam w planie zrobienie sterowania z Joysticka. Już nauczyłem się używać przerwań przede mną jeszcze UART. Do rzeczy... Posiadam sterownik serw Mini maestro i Atmege 8 i chciałbym się dowiedzieć na jakiej zasadzie działa zapamiętywanie ruchów. Już od kilku dni mnie to męczy i nie mam bladego pojęcia. Pomożecie?😃

Zakładam, że pobrałeś Maestro Pololu Control Center i udało Ci się "poruszać" serwami manualnie? Jeśli tak, to sprawa jest prosta - możesz to zrobić na 3 sposoby. Pierwszy, to ustawienie położenia serw, wybrania prędkości, przyspieszenia i wybranie przycisku "Save Frame" na dole. Potem znowu zmieniasz położenie, prędkość, przyspieszenie, klikasz "Save Frame" itd. Na końcu, w zakładce Sequence masz listę poszczególnych położeń, ustawiasz przerwę pomiędzy każdym z nich i klikasz po prostu "Play Sequence". Druga opcja, to pisanie skryptu w MPCC - na stronie Pololu jest spory tutorial na ten temat, pisze się go w ostatniej zakładce i wygląda np. tak:

begin
7000 5 servo
1000 delay
5000 5 servo
1000 delay
repeat 

Trzecia opcja to komunikacja z Twoją Atmegą8 przez UART - podpinasz masę, Rx, Tx i wysyłasz ATmegą odpowiednie komendy, szczegóły znajdziesz w dokumentacji Pololu. Jeśli grunt Ci się nie pali, to w przeciągu tygodnia-dwóch pojawi się pewnie mały artykulik na mikrokontroler.pl na ten temat 😉 Powodzenia

Napisałem prosty program aby sterowac serwem zeby w ustawial sie kolejno w dwoch pozycja po okreslonym czasie tylko ze przy podłaczeniu z mini maestro serwo jest martwe dosłownie. Co zrobiłem źle przy transmisji UART?

#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|=0x40;//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);


}
}
  • 1 miesiąc później...

Witam.

Mam otóż problem z zaprogramowaniem uC Atmega8/Atmega8A.

Posiadam programator firmy sibit w trybie stk500

Programator

Do rzeczy. Korzystając z programu Programmers Notepad staram się wgrać program z kursu

Kurs

Przy czym wyskakuje mi błąd:

> "make.exe" program

avrdude -p atmega8 -P com3 -c stk500v2 -U flash:w:led.hex

avrdude: stk500v2_command(): command failed

avrdude: stk500v2_command(): unknown status 0xc9

avrdude: stk500v2_program_enable(): cannot get connection status

avrdude: initialization failed, rc=-1

Double check connections and try again, or use -F to override

this check.

avrdude done. Thank you.

make.exe: *** [program] Error 1

> Process Exit Code: 2

> Time Taken: 00:03

Pierwsze co zrobiłem, to złapałem za myszkę i przeszukałem google znajdując odpowiedzi na możliwy powód mojego problemu.

Sprawdziłem czy poprawnie podłączyłem wyjścia z programatora, sam układ, ale nic to nie dało. Kupiłem atmege8A w razie gdyby ta pierwsza była trefna i nic.

Przejściówkę z programatora zrobiłem gold pinów, masę złączyłem w jedno.

Użyty zasilacz z odkurzacza 9v i 1A.

Napięcie stabilizowane ukł. 7805. Ta część działa, o czym mówi mi dobitnie dioda kontrolna.

Nawet AVR studio 4, wykazuje błąd przy sprawdzaniu sygnatury układu!

Edit:

Dla spokoju sumienia sprawdziłem napięcie między VCC a GND i wynbosi ono 5V, podobnie jest z RST.

Poniżej umieszczam zdjęcie płytki

1090396279_Zdjcie-0020.thumb.jpg.0236921b85216715e485459fd8e3e4b4.jpg

Jeśli wszystko jest robione zgodnie z instrukcją programatora, to napisz zapytanie do tamtej firmy - bo ewidentnie widać, że programator nie łączy się z komputerem.

Sam programator widać w menedżerze urządzeń.

Oczywiście że tak zrobię miałem, jednak nadzieje że problem będzie tkwił gdzie indziej.

Ponownie wgrałem firmware, gdyby okazało się że to z powodu złego wgrania.

Dzięki za odpowiedź.

Edit:

Problem rozwiązany 🙂

  • 1 miesiąc później...
  • 1 miesiąc później...

Witam .

Wystąpił u mnie problem z zasilaniem. Gdy podłaczam styk VCC z programatora do płytki stykowej to układ ( dioda i stabilizator napięcia ) zaczyna sie grzać . sprawdziłem napięcie na diodzie i wynosi około 0.8 V czyli jest niepoprane . natomiast gdy odłącze VCC wszystko działą poprawnie.

Proszę o pomoc

Nie do końca zrozumiałem:

1) chcesz zasilać układ przez programator?

2) Stosujesz jakiś zasilacz?

Najlepiej by było jakbyś wstawił zdjęcie. Możliwości błędu masz mnóstwo: zwarcie, na odwrót podłączone zasilanie, źle połączone zasilanie. Ale nie mogę ci w żaden sposób pomóc, bo nawet nie napisałeś jaki masz programator.

  • 2 miesiące później...

Pozwole sobie odswiezyc temat, bo mam problem z zaprogramowaniem pierwszego uC. Makefile zrobiony bezblednie, programator jest widziany w systemie, a po kliknieciu Tools->Program wyrzuca błąd.

avrdude -p atmega16 -P usb -c usbasp -U flash:w:led.hex

avrdude: error: programm enable: target doesn't answer. 1

avrdude: initialization failed, rc=-1

Double check connections and try again, or use -F to override

this check.

Uklad jest robiony wedlug schematu z kursu, niczego od siebie nie dodawalem- zmienilem tylko Atmege z 8 na 16, ale piny oczywiscie podpinalem zgodnie z datasheetem do Atmegi16.

Sprawdzilem wszystkie polaczenia- tu problemu nie ma, tasmy od programatora tez sa podpiete prawidlowo, sprawdzalem wszystko po 3 razy. Co ciekawe, jezeli nie podepne programatora do ukladu miedzy pinami VCC i GND Atmegi mam 4.95V, po podpieciu spada do okolo 0.5V. Uklad zasilam z ladowarki od telefonu, 5V, 0.4A. Probowalem zasilac uklad przez programator, ale tu tez jest problem- dioda pokazujaca zasilanie programatora swieci tylko wtedy, jezeli podlacze go bez zworki POWER, po jej zalozeniu dioda gasnie. Czy caly problem to wina programatora? Atmege kupilem nowa, wiec zadnych fusebitow ustawionych nie ma.

Najprawdopodobniej masz zwarcie.

Jeżeli złożyłeś układ na stykówce, istnieje możliwość, że jakaś nóżka rezystora czy coś weszła za głęboko i od dołu robi zwarcie. Rzadko to się zdarza, no ale sprawdź czy u Ciebie tak się nie zrobiło, bo z zewnątrz w ogóle nie widać że coś jest nie tak. Proponuję zdjąć wszystko ze stykówki (pewnie niewiele elementów tam masz) i włożyć je jeszcze raz, starannie.

Spoko 😉

Ale nim następnym razem, zanim zadasz pytanie, spójrz np. tutaj: https://www.forbot.pl/forum/topics20/dla-poczatkujacych-dlaczego-moj-robot-nie-dziala-podstawowe-problemy-i-sposoby-ich-rozwiazania-vt9099.htm#82227 ten artykuł miał za zadanie zlikwidować tego typu pytania.

Zobacz na przykład punkt 1.c) tego artykułu.

Może w wolnym czasie dopiszę tam coś na temat układów złożonych na płytkach stykowych.

  • 1 miesiąc później...

witam

mam takie pytanie

jak uporać się z takim błędem zaznaczam że jestem początkujący i chciałem się podszkolić robiąc krok po kroku kurs AVR-GCC wkleiłem pierwszy program z kursu i mam taki błąd

Compiling C: led.c

avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./led.lst -std=gnu99 -MMD -MP -MF .dep/led.o.d led.c -o led.o

led.c:23: fatal error: opening dependency file .dep/led.o.d: No such file or directory

compilation terminated.

make.exe: *** [led.o] Error 1

> Process Exit Code: 2

> Time Taken: 00:01

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...