HomeMade

Pełna wersja: Atmega8 w USBasp
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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ę
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.
(06-04-2021 19:40)SQ8MVY napisał(a): [ -> ][...]
No i te magiczne fusbit-y. Tu kłania się niestety dokumentacja od ATmeg-i. Ale na sucho jak najbardziej można się pobawić [...]

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.
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
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.
Przekierowanie