Atmega8 w USBasp - Wersja do druku +- HomeMade (http://sp-hm.pl) +-- Dział: Oprogramowanie (/forum-84.html) +--- Dział: Technika programowania mikroprocesorów (/forum-85.html) +--- Wątek: Atmega8 w USBasp (/thread-4073.html) |
Atmega8 w USBasp - SP6AUO - 06-04-2021 16:06 Do programowania atmega328p można użyć UsbAsp. Mam 3szt.Wszystkie widzą i programują atmega328p przewlekane.Ale, 1: z atmega8A - widzi atmega328p smd. 2: z atmega8A - nie widzi atmega328p smd 3: z atmega8L - nie widzi atmega328p smd Ten 2 udało mi się zaktualizować i widzi i programuje 328p smd prawidłowo. Chociaż pytań co do fusebitów nie brakuje: L=9F,H=D9. Problem w aktualizacji sprawia ten 3-ci Próbowałęm z różnymi fuse bitami i dalej nie widzi 328p smd. Atmega8L przy odczycie przed aktualizacja miał L=FF,H=D9. Jest jeszcze jeden problem z tymi okienkami w lewym dolnym rogu Czy one służą do zapisu czy do odczytu.Które trzeba zaznaczyć SCK,-B,czy oba razem. [attachment=17075] Jak zawsze czekam na fachową poradę RE: Atmega8 w USBasp - SQ8MVY - 06-04-2021 19:40 Andrzeju, MkAVRCalculator, którego używasz jest tylko nakładką na program avrdude. Chcąc się dowiedzieć, co który przełącznik robi należy zacząć od zapoznania się z opisem obsługi avrdude. Nawet tak podstawowa pomoc, którą wyświetla avrdude wiele wyjaśnia. [attachment=17076] Wracając do tych przełączników. Przełączik -b służy do ustawiania prędkości portu szeregowego RS-232 ( UART ) przez który prowadzona jest komunikacja między komputerem a programatorem. Zauważ, że avrdude obsługuje bardzo wiele różnych programatorów. Jedne komunikują się po USB ( za pomocą biblioteki libusb ) inne komunikują się za pomocą RS-232 ( FT232- uart ). Więc przełącznik -b ma wpływ na działanie tylko i wyłącznie przy programatorach z komunikacją rs-232 Przełącznik -B natomiast ma bardzo duże znaczenie w przypadku określania prędkości z jaką pracuje szyna SCK między programatorem a programowaną ATmegą. Aby przejść dalej, należy wiedzieć, że taktowanie z programatora linii SCK musi być nie większe niż 1/4 prędkości taktowania rdzenia ATmegi. Jeżeli atmega taktowana jest z prędkością 8 MHz czy 16 MHz to w zasadzie nie trzeba używać przełącznika -B, bowiem programator usbasp nie jest w stanie tak szybko taktować linii SCK. Inaczej sprawa wygląda, jeżeli programowana ATMega taktowana jest niską częstotliwością zegara ( 4MHz czy 1 MHz lub niższą ) na wskutek np. ustawionych fusebitów (np. aktywny dzielnik zegara przez 8 i ustawiony wewnętrzny generator) lub gdy zależy nam na taktowaniu np z zegara 32.768 kHz. Wtedy domyślnie programator będzie za szybko prowadził proces komunikacji z programowaną ATMegą, co w rezultacie uniemożliwi poprawną komunikację między programatorem a programowaną ATMegą. I w tym miejscu zastosowanie ma ten magiczny przełącznik -B wraz z dodatkowym parametrem, który określa jak bardzo ma być spowolniona komunikacja programatora z programowaną ATmegą, aby cały proces programowania zakończył się pełnym sukcesem bez błędów. Ale, aby przełącznik -B zadziałał, firmware programatora musi go obsługiwać. Problem w tym, że chińskie programatory usbasp mają tak stare firmware, że nie obsługują programowo spowalniania taktowania przy komunikacji z programowanym układem. O ile pamiętam od tego jest sprzętowa zworka na programatorze. Stąd też zasugerowałem, abyś zaktualizował firmware w swoim programatorze. Bardzo dużą wadą tych chińskich programatorów jest również brak układu separującego / dostosowującego poziomy napięć między programatorem a programowanym układem docelowym. No i te magiczne fusbit-y. Tu kłania się niestety dokumentacja od ATmeg-i. Ale na sucho jak najbardziej można się pobawić - są nawet podpowiedzi z małym opisem poszczególnych bitów w MkAVRCalculator ( nalezy najechać myszką na daną pozycję i pojawi się dymek z opisem ). Pozmieniaj zawartość przełączników w zakładkach Fusy właściwości czy Fusy manualnie i zobacz jak zmieniają się wartości w okienkach LOW i HIGH w MkAVRCalculator. Opisy poszczególnych bitów w fusbit doczytaj w dokumentacji. Również autor MkAVRCalculator-a gdzieś to omawia ( o ile się nie mylę )... Andrzeju, skoro już używasz programu MkAVRCalculator, to zaglądnij na stronę autora tego softu i oglądnij jakiś jego film, na którym omawia obsługę MkAVRCalculator. Zapewniam Cię, że wiele się rozjaśni. RE: Atmega8 w USBasp - SP9BSL - 07-04-2021 9:30 (06-04-2021 19:40)SQ8MVY napisał(a): [...] Andrzeju, pamiętaj tylko o poprawnej wartości bitu SPIEN jeśli po tej "zabawie" będziesz chciał zaprogramować, to dotyczy każdego procesora AVR. Zaprogramowanie z wyłączonym bitem spowoduje zablokowanie możliwości programowania procesora w typowy sposób. RE: Atmega8 w USBasp - SQ8MVY - 07-04-2021 10:05 Dlatego też, w uzywanym przez Andrzeja MkAVRCalculator domyślnie zmiana bitu SPIEN jest mocno utrudniona, aby przez przypadek nie zrobić sobie bałaganu. W przypadku omawianej tu ATMega 8 należy jeszcze zwrócić uwagę dodatkowo na bit związany z pinem RESET. Można bowiem zmienić funkcję tego pinu z RESET na zwykły pin I/O. Po tej zmianie, tak jak w przypadku wyłączenia SPIEN będzie trzeba użyć programatora równoległego. EDIT... I jeszcze jedna rzecz. Andrzeju zaktualizuj sobie MkAVRCalcualtor-a . Widzę, że używasz bardzo starej wersji. Najnowsza to 1.1.0 build 90 Mam odrobinę wolnego czasu, więc postaram się opisać w miarę zrozumiale te magiczne fusbit-y na przykładzie ATmega8 W MkAVRCalculator skupimy się na zakładce Fusy właściwości. W zakładce tej mamy już pogrupowane poszczególne własności bitów jako konkretne opcje. [attachment=17077] Idąc po kolei od góry: 1 - wybieramy poziom napięcia dla układu nadzorującego napięcie zasilające. Do wyboru są dwie opcje 2.7V lub 4V ( bit BODLEVEL ) 2 - włączenie / wyłączenie układu nadzorującego napięcie zasilające ( bit BODEN ) 3 - wybieramy rodzaj i prędkość taktowania ( bity CKSEL0 do CKSEL3 ) Na tej liście również jest uwzględnione ustawienie czasu zwłoki startu rdzenia po starcie generatora. 0ms, 4ms oraz 64ms ( biry SUT0 i SUT1 ) 4 - Zmiana funkcji pinu RESET na port I/O. Jest ona tu wyszarzona, aby przez przypadek nie zmienić. ( bit RSTDISBL ) 5 - właczenie / wyłaczenie sprzętowego układu Watch-Dog ( bit WDTON ) 6 - właczenie / wyłączenie szeregowego interfejsu programowania procka. Wyszarzone, aby przez przypadek nie zmienić ( bit SPIEN ) 7 - ochrona zawartości wewnętrznej pamięci EEPROM przed skasowaniem przy kasowaniu pamięci FLASH. Domyślnie pamięć EEPROM jest kasowana równocześnie przy kasowaniu FLASH-a. ( bit EESAVE ) 8 - wybieramy wielkość bloku dla bootloadera. Jednocześnie w zależności jak duży blok dla bootloadera przeznaczyliśmy ustalamy adres startu Bootloadera. ( bity BOOTSZ0 i BOOTSZ1 ) 9 - włączamy / wyłączamy skok po resecie procka do sekcji bootloadera. ( bit BOOTRST ) 10 - załączamy / wyłączamy wewnętrzne wbudowane kondensatory dla zewnętrznego kwarca ( bit CKOPT ) Tak więc widać, że ustawienie fisbitów na 9F i D9 to włączenie detekcji napięcia zasilania na 2.7V i ustawienie zewnętrznego taktowania > 8 MHz z opóźnieniem startu rdzenia 0ms Dla fusbitów FF i D9 mamy wyłączoną detekcję napięcia zasilania oraz ustawiony zewnętrzny kwarc > 8MHz ze zwłoką startu rdzenia 64ms Wspomniałeś również o Atmega8L. Z pdf-a wynika, że wersja L pracuje do 8MHz RE: Atmega8 w USBasp - SP6AUO - 08-04-2021 10:40 Cierpliwość została wynagrodzona. Główną przyczyną nie widzenia 328p smd było UCC podawane z USBasp na 328P. Na tym który widział 328p UCC=5.04V Na tym który nie widział 328p UCC=4,68V Winowajcą był bezpiecznik w USBasp ,który wykazywał 10om.Wstawiłem w jego miejsce R=0om i jest ok. Wybrałem fuse bity L:EF, H:C9. Nowy soft z 2011-05-08. Dziekuję, Wszystkim za porady. |