Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Atmega8 w USBasp
SP6AUO Offline
Andrzej
*****

Liczba postów: 1,033
Dołączył: 20-09-2009
Post: #1
Atmega8 w USBasp
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.

İmage
Jak zawsze czekam na fachową poradę

Andrzej
06-04-2021 16:06
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 724
Dołączył: 30-07-2011
Post: #2
RE: Atmega8 w USBasp
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.
İmage

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.

73 Paweł
(Ten post był ostatnio modyfikowany: 06-04-2021 20:34 przez SQ8MVY.)
06-04-2021 19:40
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP9BSL Offline
Sławek
*****

Liczba postów: 774
Dołączył: 20-10-2015
Post: #3
RE: Atmega8 w USBasp
(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.

73 Sławek
07-04-2021 9:30
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 724
Dołączył: 30-07-2011
Post: #4
RE: Atmega8 w USBasp
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.
İmage
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

73 Paweł
(Ten post był ostatnio modyfikowany: 07-04-2021 21:43 przez SQ8MVY.)
07-04-2021 10:05
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
*****

Liczba postów: 1,033
Dołączył: 20-09-2009
Post: #5
RE: Atmega8 w USBasp
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.

Andrzej
(Ten post był ostatnio modyfikowany: 08-04-2021 10:40 przez SP6AUO.)
08-04-2021 10:40
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości