hurtowe programowanie AVR ?

Apr 18, 2016 35 Replies

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Jak się pogrzebie na stronie, to da się obejść podawanie swoich danych osobowych :) Wystarczy elementowi id="download_button" usunąć ukrywanie :)

Żadne klikadło nie pobije skryptu :)

no i przechwaliłem. Jest tak ; kiedy ustawię fusy (via MkAVR kalkulator) w procesorze, to mi ten skrypt działa :

avrdude -p atmega8 -c usbasp -P usb -u -U lfuse:w:0x3F:m -U hfuse:w:0xC8:m

avrdude -p atmega8 -c usbasp -P usb -U flash:w:"C:\Users\sundayman\Desktop\Ziff preprogram files\Firmware

851\M8\M8 hardware 4_38 bootloader 1 & firmware 17.hex":i -D -U eeprom:w:"C:\Users\sundayman\Desktop\Ziff preprogram files\Firmware 851\M8\M8 hardware 4_38 bootloader 1 & firmware 17 EEPROM.eep":i

avrdude -p atmega8 -c usbasp -P usb -U lock:w:0x14:m

ale- kiedy biorę czysty procesor, to wywala mi się po każdej linijce : target doesn't answer

o co biega ?

W dniu 2016-04-18 o 23:09, sundayman pisze:

Problem z kablem USB lub samym programatorem? Może i dlatego wersja okienkowa nie działa :)

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

W USBasp można ustawiać prędkość magistrali SPI, szybszą albo wolniejszą. Pewnie ustawiłeś szybszą i świeży procek, z domyślnym taktowaniem 1 MHz, nie nadąża. W tamtych używanych pewnie masz już ustawione taktowanie 4 albo 8 MHz i dlatego działa. Przestaw zworkę w USBasp na mniejszą prędkość.

ale via MkAVR nie muszę nic przestawiać - w świeżym mcu można ustawić fusy (kiedy jest jeszcze na 1Mhz), a potem wgrać program (kiedy już fusy są przestawione).

Te linie skryptu skopiowałem z okienka MkAvr czyli powinno to jakby działać ?

czyli może inaczej - jak zrobić, żeby 1 linia czyli ustawienie fusów poszło wolno, a reszta szybko ?

No bo oczywiście mogę założyć zworkę na programator, ale jeżeli mam ją potem zdejmować, żeby reszta poszła szybko - to bez sensu, bo to już 1 skryptem się nie da.

A całość programować wolno - też bez sensu. Za długo to trwa.

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Pewnie miałeś ustawioną zworkę na wolniejszą prędkość.

Bo ten program jest tylko nakładką na AVRDUDE, sam nic nie programuje.

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Niestety.

USBasp ma tylko ręczne przestawianie prędkości.

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

A jaki masz dokładnie programator? Bo jeśli MkAVR sobie radzi, to znaczy, że masz nowszą wersję USBasp, w której można zmieniać prędkość przez USB. I wtedy używasz opcji -B do ustawienia okresu taktowania. Spróbuj ustawiać fusy samą opcją -B, a programować już z opcją -B 1

ale właśnie nie. Zworkę mam cały czas zdjętą.

I - kiedy jest MkAVR zaznaczony "Auto SCK speed", to bez żadnego przestawiania można na "świeżym" mcu zaprogramować fusy na szybki kwarc, i potem też bez żadnego przestawiania już na pełnej prędkości wgrać resztę.

Ale chyba rozwiązałem - po dodaniu do pierwszej linii parametru -B 5 ( podobno na 1Mhz) działa OK.

Tj. programuje fusy - a potem już leci "na szybko" z flashem i eepromem. Dziwne, ale działa.

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Tak, to jest właśnie to. -B pozwala zmienić programowo prędkość zegara SPI/ISP. Zapomniałem, że jest taka opcja.

Znaczy np. jeżeli mam przestawiony zegar na zewnętrzny kwarc 14.7Mhz, to jaki ten parametr powinien być ?

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Dla 14,7 MHz zegar SPI nie powinien być szybszy niż 3,6 MHz. Okres nie powinien być więc krótszy niż ok 0,3 mikrosekundy. Nie wiem jakie maksymalne prędkości wspiera USBasp. Spróbuj z opcją -B 0.3. Jak nie zadziała, to -B

0.5 lub -B 0.7. Możliwe, że 1 to najmniej, ale najlepiej sprawdź doświadczalnie przy jak małej wartości jeszcze da się programować Flash. Sam Flash w procku pewnie też ma jakieś ograniczenie.

dobra, już jest prawie idealnie :) Znaczy programuje i jest ok.

Ale - jeżeli w jakiejś linii skryptu pojawia się błąd, to skrypt się nie zatrzymuje, tylko leci dalej. A ponieważ jest tego sporo do ogarnięcia, fajnie by było, żeby na jakiś error się całość zatrzymała. Da się tak ?

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Musisz sprawdzać, czy wystąpił błąd. Masz do dyspozycji zmienną %errorlevel% ustawianą przez AVRDUDE po każdym uruchomieniu. Jak nie ma błędu, to wynosi

0, jak jest błąd, to 1.

avrdude.exe ........ IF ERRORLEVEL 1 GOTO END avrdude.exe ........ :END

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required