ISP przez LPT w AVR Studio

Jan 06, 2011 13 Replies

Czy ja ¶lepy jestem czy nie ma rzeczywi¶cie obs³ugi programatora AVR ISP przez port LPT ?


Marek


U¿ytkownik "4CX250" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:ig59jh$1nm9$ snipped-for-privacy@news2.ipartners.pl...

PonyProg to ma. Przynajmniej mo¿na tak wybraæ w: Setup->Interface Setup...

Pozdrawiam Roman

W dniu 2011-01-06 21:45 4CX250 napisał(a):

AVR ISP (oznaczenie Atmela: ATAVRISP) ma port szeregowy (COM) a nie równoległy (LPT):

formatting link
Współczesne wersje AVR Studio (4.x) obsługują tylko atmelowe programatory (i ich klony :)) podłączane przez porty COM lub USB.

U¿ytkownik "Adam Dybkowski" snipped-for-privacy@45wp.pl napisa³ w wiadomo¶ci news:ig5i6t$11k$ snipped-for-privacy@news.onet.pl...

Dziêki za wyja¶nienia. Pozostaje wiêc twój program lub Pony Prog, albo zakupiæ programator "dla ludzi"

Pozwole sobie ciebie jeszcze o co¶ zapytaæ. Chcia³em wykorzystaæ bibliotekê niejakiego Pana Radzio obs³uguj±c± wy¶w graph. na KS0108. Zainstalowa³em sobie zarówno AVR Studio jak i Win AVR. AVR Studio wygl±da na powa¿niejsze narzêdzie ale problemem jest pecet. Do¶æ d³ugo trzeba czekac na wykonywanie pewnych czynno¶ci, czasem nawet po kilkanascie sekund. Trzeba bêdzie usprawniæ PCta ale zanim to zrobiê wróci³em wiêc do Win AVR ale w nim mam natomiast problem z includowaniem tej biblioteki. Wklepa³em krótki programik i gdy wybieram make all to nie rozpoznaje jednej lub paru funkcji z tej biblioteki. Ca³± zawarto¶æ biblioteki GLCDKS0108 od Radzio umie¶ci³em w katalogu E:\WinAVR\avr\include\ks108

Zapis w main.C wygl±da tak

#include <ks108/KS0108.h>

#include <ks108/graphic.h>

int main(void) { GLCD_Initialize(); GLCD_ClearScreen();

GLCD_GoTo(0,0); GLCD_WriteString(" Test Wyswietlacza |");

for( ; ; ); return 0; }

Ci±gle wywala mi b³êdy które pojawiaj± siê ju¿ na etapie kompilacji. Poni¿ej wklei³em komunikaty jakie wyda³ z siebie Win AVR

-------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling C: main.c avr-gcc -c -mmcu=atmega128 -I. -gstabs -DF_CPU=8000000UL -Os -funsigned-char

-funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes

-Wa,-adhlns=./main.lst -std=c99 -MMD -MP -MF .dep/main.o.d main.c -o main.o main.c: In function 'main': main.c:8: warning: implicit declaration of function 'GLCD_Initialize'

Linking: main.elf avr-gcc -mmcu=atmega128 -I. -gstabs -DF_CPU=8000000UL -Os -funsigned-char

-funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes

-Wa,-adhlns=main.o -std=c99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref -lm main.o: In function `main': main.c:8: undefined reference to `GLCD_Initialize' main.c:9: undefined reference to `GLCD_ClearScreen' main.c:11: undefined reference to `GLCD_GoTo' main.c:12: undefined reference to `GLCD_WriteString' make.exe: *** [main.elf] Error 1

U¿ytkownik "4CX250" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:ig6tlb$2h4r$ snipped-for-privacy@news2.ipartners.pl...

...

Znalaz³em chyba b³±d ale nadal to nie wyszystko. W ¶ci±gniêtych bibliotekach w KS0108.h w deklaracji by³o GLCD_Initalize oraz GLCD_InitalizePorts a wywo³ania s± do GLCD_Initalize bez "i"

Teraz kompilator przechodzi bez b³êdu ale linker nadal wywala te same b³êdy.

Marek

W dniu 2011-01-07 13:26, 4CX250 pisze:

Bo prawdopodobnie dodałeś tylko pliki nagłówkowe, a zapomniałeś o dodaniu plików *.c z tej biblioteki do projektu.

Użytkownik "4CX250" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:ig70n5$2il7$ snipped-for-privacy@news2.ipartners.pl...

Wychodzi na to że sam sobie odpowiadam na stawiane tu pytania :) ale opiszę co i jak bo być może ktoś inny będzie miał takie problemy.

Na szczęście znalazłem kolejna i ostateczną przyczynę i program dał się już bez błędów skompilować oraz zlinkować. O ile wcześniej sygnalizowałem że sa błędy w źródłach gdzi zapomniano kilku literek "i" to teraz znalazłem przyczynę raczej po mojej stronie wynikającej z niewiedzy.

Wydawało mi się że samo #include plik.h w main.c powinno wystarczyć ale okazuje się że kompilator zrobi tylko to co mu się zleci w Makefile. Otóż plik Makefile musiałem uzupełnić dopisując w nim wszystkie wymagane pliki z dołączaniej biblioteko aby zostały skompilowane przed zlinkowaniem.

# List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c KS0108.c graphic.c KS0108-AVR.c

I to wszystko.

Powiem szczerze że pisząc wczesniej programy tylko w asemblerze łatwiej mi było zapanować nad wszystkim. No cóz uparłem się uczyć w C. Na PCty natomiast pisałem dawno już temu w Turbo Pascalu a potem w Borland Pascalu i nawyki są inne.

Marek

U¿ytkownik "Zbych" snipped-for-privacy@onet.pl napisa³ w wiadomo¶ci news:4d270f56$0$2501$ snipped-for-privacy@news.neostrada.pl...

Do¶æ d³ugo pisa³em ostatni± wypowied¼ i nie zauwa¿y³em tej od ciebie która pojawi³a siê w miêdzy czasie.

Oczywi¶cie masz racjê, tak by³o jak piszesz.

Marek

No :). Poczytaj trochę o tym. Ja z mojej strony wrzucę Ci 3 zdania komentarza, ale to za mało - serio, poczytaj więcej!!

Pisząc projekt w C działamy z reguły tak, że każdy plik kompilujemy OSOBNO (można więc kompilować różne fragmenty kodu z różnymi ustawieniami :)). Tworzą się w ten sposób pliki *.o. Żeby kompilator mógł obsłużyć jakieś Twoje biblioteki musi wiedzieć, jakie są w niej funkcje, z jakimi argumentami itd. Dlatego dołącza się pliki *.h. Później, wszystkie pliki *.o trafiają do linkera, ten to wszystko dopiero łączy w całość... no i jeśli Ty wywołujesz w jednym z plików *.c funckję FunkcjaJakastam(), to linker MUSI znaleźć tą funkcję w jakimś innym pliku :). To tyle ;)...

No a teraz do rzeczy - AVR Studio korzysta także z WinAVR - z tych samych narzędzi (o ile piszesz w C, bo możesz pisać też w Assemblerze i wtedy AVR Studio radzi sobie sam). Tyle tylko, że WinAVR wtedy sam dba o stworzenie Makefile itp. Jeśli dodasz do projektu plik np. Ks0108-AVR.c, od razu wpis o tym znajdzie się w Makefile i wszystko się poprawnie skompiluje. Dlatego na początek polecam korzystać z AVR Studio :)...

Użytkownik "Konop" snipped-for-privacy@gazeta.pl napisał w wiadomości news:ig7bcp$b15$ snipped-for-privacy@inews.gazeta.pl...

Czy owe korzystanie jest samopylne czy trzeba coś gdzieś poustawiać? W AVR Studio mam narazie problem że coś zacina się czasem na dłuższą chwilą i to mnie irytuje. Musze znaleźć przyczynę.

To jest rzeczywiście dobry argument aby z niego korzystać. Narazie motam się jeszcze gdyż tak naprawdę chodzi mi o poznanie samego c w sobie.

Marek

Ogolnie jesli zainstalujesz WinAVR a potem AVR Studio to Studio wykrywa WinAVR i uzywa automatycznie.

WinAVR przestal byc rozwijany okolo rok temu, ci sami ludzie tearz rozwijaja atmelowska wersje WinAVR nazywana AVR Toolchain. Jesli chcesz miec najnowsza wersje (co Tobie radze jesli nie uzywasz starego kodu) to wejdz na:

formatting link
sciagnij i zainstaluj:

AVR Studio 4.18 (build 684) (116 MB, updated 11/09) AVR Studio 4.18 SP3 (b716) (31 MB, updated 9/10) AVR Toolchain Installer (87 MB, updated 9/10) For use with AVR Studio 4.18 SP3

Jesli nie chcesz bawic sie w makefile to uzywaj AVR Studio od poczatku do robienia projektow, tworzysz nowy projekt (menu Project -> New Project) i wybierasz typ AVR GCC. AVR Studio zajmie sie detalami jak makefile, musisz tylko dodac wszystkie pliki do projektu.

Jesli chodzi o biblioteki to osobiscie kopiuje biblioteke do katalogu projektu (razem z moim kodem). Nie jest to na pewno "jedyna sluszna droga" i mozesz robic jak Ci pasuje ale tak mnie zycie nauczylo i odpowiada mi to z kilku wzgledow, miedzy innymi:

-mam pewnosc ze moj kod i biblioteka w danej wersji sa przetestowane, wspolpracuja ze soba i kompiluje sie bez bledow. Jak masz jedna kopie biblioteki i zmienisz na nowsza/inna wersje moze nie dzialac (to nie jest najgorsze, przynajmniej wiesz na czym stoisz) lub dzialac troche inaczej (o czym przewaznie dowiadujesz sie od wkur**ch uzytkownikow).

-jak robie backup to musze sie martwic tylko o moj katalog projektu, mam tam wszystko do odtworzenia calego projektu (trzymam tez tam informacje jaka wersja WinAVR zostala uzyta). Jak po kilku latach chcesz cos szybko zmienic to moze sie okazac ze najnowsza, aktualna wersja WinAVR nie kompiluje Twojego kodu tak samo albo nie kompiluje w ogole. Jak masz oryginalny kod (kompletnie z bibliotekami) i ta sama makefile, kompilujesz ta sama wersja WinAVR to masz gwarancje ze mozesz odtworzyc projekt i cos zmienic jak potrzeba.

-czasem potrzebuje zmienic/przystosowac biblioteke do moich potrzeb, jesli mialbym tylko jedna kopie wspolna dla wszystkich projektow to prawdopodobnie te zmiany sp***y inne projekty.

Tomek

Użytkownik "Tom" snipped-for-privacy@no.spam.invalid> napisał w wiadomości news:ig97mc$cs7$ snipped-for-privacy@news.eternal-september.org...

Dzięki za porady, co do katalogów to masz zupełną rację. W ASM jak pisałem to też jakieś swoje i cudze zestawy zawsze kopiowałem do katalogów roboczych.

Marek

Możesz w ogóle pominąc pliki makefile i uruchamiać kompilator ręcznie. Dla malych projektów to czy skompiluje jeden czy cztery pliki za kazdym razem jest bez znaczenia.

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:iga7cr$n06$ snipped-for-privacy@news.onet.pl...

Tak, ale na "dłuższą metę" jest to upierdliwe udpalanie z palca.

Marek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required