Discussion:
masowe programowanie AVR
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
sundayman
2024-10-09 00:47:03 UTC
Permalink
Rozmnaża się toto po kątach i muszę programować coraz więcej AVR. A
dokładniej M2561. No i mam pytanie :

Używam Atmel Studio 6.2 z Atmel ICE na ISP. Wszystko fajnie. Tyle, że
program zajmuje cały flash i przy domyślnej prędkości ISP 125 kHz trwa
to wieczność. A bez wcześniejszego przeprogramowania fusów szybciej nie
pójdzie.

Jak przestawię fusy na docelowe to mogę programować np. na 3MHz i
gitara. Tyle, że jak to robię "jednoklikowo" korzystając z production
file no to tak się nie da bo oczywiście nie wpadli na to, żeby móc
ustawić prędkość po zaprogramowaniu fusów.

Czyli trzeba najpierw ręcznie na 125kHz zaprogramować fusy, przestawić
prędkość i dopiero wtedy programować resztę.

No to jest do dupy.

Jest jakieś narzędzie proste żeby mi najpierw zaprogramowało fusy a
potem na większej szybkości resztę ( czyli flash + lock ) ?
Żebym się nie musiał doktoryzować z tego pisząc jakieś skrypty ?
Arnold Ziffel
2024-10-09 13:28:05 UTC
Permalink
Post by sundayman
Czyli trzeba najpierw ręcznie na 125kHz zaprogramować fusy, przestawić
prędkość i dopiero wtedy programować resztę.
No to jest do dupy.
Jest jakieś narzędzie proste żeby mi najpierw zaprogramowało fusy a
potem na większej szybkości resztę ( czyli flash + lock ) ?
Żebym się nie musiał doktoryzować z tego pisząc jakieś skrypty ?
Użyj avrdude. Przykład z głowy:

avrdude -B 125kHz -p atmega2561 -c usbasp -e -U lfuse:w:0xaa:m -U hfuse:w:0xbb:m
avrdude -B 3MHz -p atmega2561 -c usbasp -U flash:w:file.hex -U lock:w:0xcc:m

Za 0xaa i 0xbb podstaw wartości fusebitów, za 0xcc wartości lockbitów, za
file.hex plik do zaprogramowania. Za usbasp podstaw swój programator,
możesz też potrzebować -p (port) lub -i zamiast -B (jeśli programator to
jakiś bitbang, parametrem -i jest opóźnienie w mikrosekundach między każdą
zmianą bitu.

Jak nie zadziała, to dodaj jakiegoś sleepa między tymi komendami (np.
sleep .1 żeby poczekać 100 ms).
--
Po operacji chirurg pyta pacjenta:
- Czy jest pan przesądny?
- Nie, panie doktorze...
- To dobrze, bo od jutra będzie pan wstawał z łóżka tylko lewą nogą.
jp
2024-10-09 14:55:09 UTC
Permalink
Rozmnaża się toto po kątach i muszę programować coraz więcej AVR. A dokładniej M2561. No i mam pytanie :Używam Atmel Studio 6.2 z Atmel ICE na ISP. Wszystko fajnie. Tyle, że program zajmuje cały flash i przy domyślnej prędkości ISP 125 kHz trwa to wieczność. A bez wcześniejszego przeprogramowania fusów szybciej nie pójdzie.Jak przestawię fusy na docelowe to mogę programować np. na 3MHz i gitara. Tyle, że jak to robię "jednoklikowo" korzystając z production file no to tak się nie da bo oczywiście nie wpadli na to, żeby móc ustawić prędkość po zaprogramowaniu fusów.Czyli trzeba najpierw ręcznie na 125kHz zaprogramować fusy, przestawić prędkość i dopiero wtedy programować resztę.No to jest do dupy.Jest jakieś narzędzie proste żeby mi najpierw zaprogramowało fusy a potem na większej szybkości resztę ( czyli flash + lock ) ?Żebym się nie musiał doktoryzować z tego pisząc jakieś skrypty ?
Avrdude, 2 linijki; ot cały skrypt.
No chyba, że coś źle zrozumiałem
--
----Android NewsGroup Reader----
https://piaohong.s3-us-west-2.amazonaws.com/usenet/index.html
sundayman
2024-10-09 20:40:44 UTC
Permalink
Post by jp
Avrdude, 2 linijki; ot cały skrypt.
No chyba, że coś źle zrozumiałem
panowie, ja nie mam czasu na eksperymenty - potrzebne mi rozwiązanie dla
debila. Klikam i działa.

Ponoć było GUI dla atprogram do ściągnięcia od microchipa. Ale nie mogę
znaleźć.

Toto się nazywało AVR_massproduction_programming_tool_with_atmelice.zip

Ktoś ma ?
heby
2024-10-10 09:47:11 UTC
Permalink
Post by sundayman
Post by jp
Avrdude, 2 linijki; ot cały skrypt.
No chyba, że coś źle zrozumiałem
panowie, ja nie mam czasu na eksperymenty
To nie są eksperymenty tylko poprawne, proste i działajace rozwiązanie.

Jesli jesteś na windowsie, możesz sobie plik bat z tymi poleceniam też
2x kliknąć i masz automat. A potem dodać pętlę w środku, która czeka na
pacnięcie klawisza i programuje nastepny.

Nie da się nic prostszego, w szczególniości jeśli potrzebujesz dla
debili, zrobić.

W czasie kiedy szukałes jakeigoś bezuzytecznego programu z GUI, mogłeś
stworzyć plik bat, wkleić, co dostałeś na grupie i używać.
Arnold Ziffel
2024-10-10 12:00:30 UTC
Permalink
Post by sundayman
Avrdude, 2 linijki; ot cały skrypt. No chyba, że coś źle zrozumiałem
panowie, ja nie mam czasu na eksperymenty - potrzebne mi rozwiązanie dla
debila. Klikam i działa.
Przecież dostałeś praktycznie gotowca. Jak się tak upierasz, to podaj:

- nazwę programatora
- ścieżkę do pliku hex
- wartości fusebitów
- wartości lockbitów

A podam ci zawartość pliku .bat z poleceniami avrdude. Klikasz .bat i masz
zaprogramowany AVR. Nie sądzę, żeby dało się prościej.
--
Profesor przerywa wyklad i zwraca się do studentow siedzacy w ostatnim
rzedzie:
- Kategorycznie zabraniam rozwiazywania krzyzowek podczas moich
wykladow!!
Na to ktos z sali:
- Czy na tle rebusow ma pan podobne kompleksy?
sundayman
2024-10-10 21:56:36 UTC
Permalink
Post by Arnold Ziffel
- nazwę programatora
- ścieżkę do pliku hex
- wartości fusebitów
- wartości lockbitów
A podam ci zawartość pliku .bat z poleceniami avrdude. Klikasz .bat i masz
zaprogramowany AVR. Nie sądzę, żeby dało się prościej.
No spróbujmy.
Programator to Atmel ICE na USB rzecz jasna. Kąkuter z WIN7 jeśli to ma
jakieś znaczenie.

Fusy :
EXT : FC
HI : D8
LO : FF
Lock : FC

ścieżka niech będzie C:\FOLDER
to sobie zmienię

szybkość programowania fusów 125kHz
szybkość programowania flash 3MHz

Poproszę ślicznie :)
sundayman
2024-10-12 03:25:18 UTC
Permalink
No dobra, zwalczyłem. Niestety jak przewidywałem największy problem z
drajwerami do programatora żeby go AVRDUDE widział...

A sam skrypt to jednak ciut więcej niż 2 linijki, żeby toto sensownie
działało i żeby mieć sygnalizację błędów, bo śledzenie tego czy coś tam
się nie wykrzaczyło to nie jest dobra rzecz przy 100 procesorach

Wrzucam ku pamięci potomnych :


@echo off

REM Ustawienie ścieżki do AVRDUDE
set AVRDUDE_PATH=C:\AVRDUDE_6

REM Funkcja sprawdzająca kod błędu i przerywająca skrypt w razie błędu
setlocal enabledelayedexpansion

REM Programowanie fuse bitów z prędkością 125 kHz
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 8 -U
lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U

efuse:w:0xFC:m
IF ERRORLEVEL 1 (
echo ****************** FUSE PROGRAMMING ERROR *****************
pause
exit /b 1
)

REM Odczekaj pół sekundy
timeout /T 1 >nul

REM Programowanie pamięci flash z prędkością 3 MHz bez wstępnego
kasowania pamięci
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -D -U
flash:w:C:\HEX\program.hex:i
IF ERRORLEVEL 1 (
echo ****************** FLASH PROGRAMMING ERROR *****************
pause
exit /b 1
)

REM Programowanie pamięci EEPROM
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -U
eeprom:w:C:\HEX\eeprom.eep:i
IF ERRORLEVEL 1 (
echo ****************** EEPROM PROGRAMMING ERROR *****************
pause
exit /b 1
)

REM Ustawienie Lock bit na FC
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -U
lock:w:0xFC:m
IF ERRORLEVEL 1 (
echo ****************** LOCK PROGRAMMING ERROR *****************
pause
exit /b 1
)

echo >>>>>>>>> SUCCESS ! <<<<<<<<
pause
exit /b 0
sundayman
2024-10-12 03:55:06 UTC
Permalink
zobaczcie, do czego mnie doprowadziliście...
dodałem jeszcze melodyjkę w przypadku błędu, żeby nie przeoczyć.
Kurła mać.



@echo off

REM Ustawienie ścieżki do AVRDUDE
set AVRDUDE_PATH=C:\AVRDUDE_6

REM Funkcja sprawdzająca kod błędu i przerywająca skrypt w razie błędu
setlocal enabledelayedexpansion

REM Funkcja do generowania melodyjki w przypadku błędu
set playMelody=powershell -c "[console]::beep(659,300); Start-Sleep
-Milliseconds 100; [console]::beep(523,300); Start-Sleep -Milliseconds
100; [console]::beep(587,300); Start-Sleep -Milliseconds 100;
[console]::beep(784,500)"

REM Programowanie fuse bitów z prędkością 125 kHz
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 8 -U
lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xFC:m
IF ERRORLEVEL 1 (
echo **************** FUSE ERROR ! ****************
FOR /L %%i IN (1,1,10) DO (%playMelody%)
pause
exit /b 1
)

REM Odczekaj pół sekundy
timeout /T 1 >nul

REM Programowanie pamięci flash z prędkością 3 MHz bez wstępnego
kasowania pamięci
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -D -U
flash:w:C:\HEX\program.hex:i
IF ERRORLEVEL 1 (
echo **************** FLASH ERROR ! ****************
FOR /L %%i IN (1,1,10) DO (%playMelody%)
pause
exit /b 1
)


REM Programowanie pamięci EEPROM
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -U
eeprom:w:C:\HEX\eeprom.eep:i
IF ERRORLEVEL 1 (
echo **************** EEPROM ERROR ! ****************
FOR /L %%i IN (1,1,10) DO (%playMelody%)
pause
exit /b 1
)

REM Ustawienie Lock bit na FC
%AVRDUDE_PATH%\avrdude -c atmelice_isp -P usb -p m2561 -B 0.33 -U
lock:w:0xFC:m
IF ERRORLEVEL 1 (
echo **************** LOCK ERROR ! ****************
FOR /L %%i IN (1,1,10) DO (%playMelody%)
pause
exit /b 1
)

echo ===================== PROGRAMMING SUCCESS !! =====================
pause
exit /b 0
Pixel®🇵🇱
2024-10-12 08:35:06 UTC
Permalink
echo ===================== KURWA DZIALA !! =====================
pause
exit /b 0
Fiu, fiu, 05:55 dobry czas :D
--
Pixel®🇵🇱
sundayman
2024-10-12 21:20:34 UTC
Permalink
Post by Pixel®🇵🇱
Fiu, fiu, 05:55 dobry czas :D
Łoo panie, ile razy ja wychodzę z roboty o 7 rano...
Inna rzecz, że czasem wstaję o 18 :)

No dom wariatów literalnie.
alojzy nieborak
2024-10-14 16:34:40 UTC
Permalink
Post by sundayman
Post by Pixel®🇵🇱
Fiu, fiu, 05:55 dobry czas :D
Łoo panie, ile razy ja wychodzę z roboty o 7 rano...
Inna rzecz, że czasem wstaję o 18 :)
No dom wariatów literalnie.
W pliku 133k masz sampla
https://www.microchip.com/en-us/application-notes/an2466
+
https://onlinedocs.microchip.com/oxy/GUID-BEAFF546-6F18-4E6D-AA49-7F9E840C6289-en-US-4/GUID-7B47EDF3-A268-494B-A2DE-FDF557AE6907.html
jp
2024-10-12 15:04:39 UTC
Permalink
Post by sundayman
zobaczcie, do czego mnie doprowadziliście...
dodałem jeszcze melodyjkę w przypadku błędu, żeby nie przeoczyć.
Kurła mać.
@echo off
REM Ustawienie ścieżki do AVRDUDE
set AVRDUDE_PATH=C:\AVRDUDE_6
REM Funkcja sprawdzająca kod błędu i przerywająca skrypt w razie błędu
setlocal enabledelayedexpansion
REM Funkcja do generowania melodyjki w przypadku błędu
set playMelody=powershell -c "[console]::beep(659,300); Start-Sleep
-Milliseconds 100; [console]::beep(523,300); Start-Sleep -Milliseconds
100; [console]::beep(587,300); Start-Sleep -Milliseconds 100;
[console]::beep(784,500)"
A tak się z ciekawości zapytam; czy z poziomu powershell można jakie GUI
robić, jakieś proste, coś a’la dialog/xdialog z basha?
--
jp
sundayman
2024-10-12 21:30:46 UTC
Permalink
Post by jp
A tak się z ciekawości zapytam; czy z poziomu powershell można jakie GUI
robić, jakieś proste, coś a’la dialog/xdialog z basha?
też mnie to zainteresowało ( znaczy zmusiliście mnie w sumie ) i wyszło
mi , że cinszko bedzie (
) ale coś ponoć da się
zrobić.


Podobno wykorzystuje się biblioteki .NET dostępne w PowerShell ( Windows
Forms lub WPF) ). Przy ich użyciu można podobno stworzyć okno z
przyciskami, polami tekstowymi itp.

Ale mnie się nie udało na szybko. Pewnie docelowo zrobię jakieś GUI w
VB.NET bo tak mi będzie najłatwiej.
Arnold Ziffel
2024-10-12 22:34:46 UTC
Permalink
Post by sundayman
No spróbujmy.
Programator to Atmel ICE na USB rzecz jasna. Kąkuter z WIN7 jeśli to ma
jakieś znaczenie.
cd c:\folder
avrdude -B 125kHz -p ATmega2561 -c atmelice_isp -e -U efuse:w:0xfc:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
avrdude -B 3MHz -p ATmega2561 -c atmelice_isp -U flash:w:plik.hex -U lock:w:0xfc:m

Nigdy nie używałem Atmel ICE, widzę że avrdude obsługuje takie:

atmelice
atmelice_pdi
atmelice_updi
atmelice_dw
atmelice_isp
atmelice_tpi

Czyli atmelice w różnych trybach. Jak nie zadziała z atmelice_isp to
spróbuj może samo atmelice.
--
Spotkanie w lesie - lew zbiera towarzystwo i mówi:
- A teraz podzielimy się: mądre zwierzaki na prawo, a ładne na lewo.
I tak sowa biegnie na prawo, inne zwierzaki za nią, inne na lewo,
a żaba została na środku
- No i co ty żaba robisz???
- No przecież się nie rozerwę!!!
sundayman
2024-10-13 00:25:34 UTC
Permalink
Post by Arnold Ziffel
Czyli atmelice w różnych trybach. Jak nie zadziała z atmelice_isp to
spróbuj może samo atmelice.
Chyba nie czytałeś co napisałem ostatnio, ale dzięki za dobre chęci :)
Pozdrowienia
sundayman
2024-10-12 01:04:32 UTC
Permalink
wziąłem tego AVRDUDE. Oczywiście zaczyna się zabawa : ani Dragon ani
AtmelICE nie jest widoczny.

Pamiętam tą walkę, że jak programator jest widoczny pod AS to nie ma go
pod avrdude i odwrotnie. I to jest właśnie to o co mi chodziło - trzeba
spędzać godziny nad tym.

Oczywiście już nie pamiętam teraz, muszę odkopywać...
Kontynuuj czytanie narkive:
Loading...