
W temacie prezentuje:
1. Programator optoizolacyjny albo jak kto woli przejściówka do programowania

2. Program na linuxa do programowania avr przez ISP
3. Inne schematy i konfiguracje działające z tym programem.
Może zaczne od wad

1. Wyjścia są albo kolektorowe z podciąganiem, albo na sztywno, albo z diodą
2. Ze względu na działanie bit-bang prędkości nie oszałamiają

Niemniej jednak dające się używać w wielu przypadkach i jako dodatkowy sprzęt dla mnie przydatny.
----------------------------------------------------------------------------------------------------------------



Jak widać nic nadzwyczajnego, transoptory CNY17-3, D1 D2 D3 diody zabezpieczające przed ujemnym napięciem, zastosowałem LEDy. Diody LED D4 i D5 (czerwona, żółta lub zielona) nie są konieczne, jednak oprócz tego że sygnalizują sygnał, poprawiają troszkę szybkość, R15 R16 R17 zabezpieczają tranzystory przed nadmiernym prądem. Przejściówka wymaga do odczytania stanu z CTS stanu wysokiego na RTS co realizuje program.
Szybkość przejściówki można byłoby poprawić stosując mniejsze rezystory, ale nie chciałem obciążać już wyjść oraz zwiększać możliwego wydzielania większej mocy na rezystorach.
Programator podczas nie działania stale ma reset zwarty do masy, co powoduje że mikrokontroler jest w stanie resetu i trzeba odłączyć programator. Można zamienić sygnał CLK z RST i wtedy nie będzie w stanie resetu w zamian za zwarty pin SCK. W programie zamiast RSOPT1 należy podać RSOPT2.
Przejściówka przenosi prostokąt 50% 50kHz, ale już z innym wypełnieniem.
Jak pisałem, z racji że są to wyjścia z podciąganiem rezystorowym nie da się zaprogramować np arduino bez przeróbek, ponieważ tam na pinie SCK jest dioda LED z rezystorem <1kom wpięta do masy. Można więc tutaj dać bufory bramkowe, albo przerobić układ z tranzystorami pnp-npn. Prawdopodobnie przejściówka USB-UART gdzie wyjścia mają większa obciążalność byłaby skuteczniejsza.
--------------------------------------------------------
Program arudet, taką sobie nazwe wymyśliłem, czyta opcje podobnie jak avrdude, może też czytać konfig z avrdude, opcje:
-p typ mikrokontrolera (np: m8)
-U pamięć:akcja:plik:format
Program czyta pliki formatu hex oraz binarnym
np: lfuse:r:lfuse.bin:b
-c typ programatora, przejściówki:
UART1, UART2, UART3, UART4, RSOPT1, RSOPT2, TRSPR1
-P ścieżka do portu
-b szybkość portu RS
-i czas stanu bitu w mikrosekundach
-e kasuj chip
-F ignoruj sygnaturę
-D nie kasuje flash przed zapisem (domyślnie kasuje)
-h wyświetl pomoc
-C plik z konfiguracją, program w pamięci ma tylko kilka uk reszte czyta z konfigu avrdude z /etc/avrdude.conf, można podać inną lokalizacje
-x podwaja prędkość - widać to dla konfiguracji gdzie TxD steruje CLK (RS232), w zasadzie nie ma przyspieszenia dla przejściówek USB->UART
Przykładowe polecenia na RS232:
Quote:arudet -p m8 -U lfuse:r:lf.bin:b -P /dev/ttyUSB0 -b 9600 -c UART1
arudet -p t13 -U flash:w:lf.bin:b -P /dev/ttyS0 -b 19200 -c RSOPT2 -x
arudet -p t15 -U flash:w:lf.bin:b -P /dev/ttyS0 -b 19200 -i 10 -c RSOPT1
Program wyświetla co robi plus dla flash i eeprom przewidywany czas do zakończenia.
Program nie obsługuje masek bitowych dla fusebitów. Czyli zapisuje to co ma.
Nie zapisuje pamięci flash mikrokontrolerów >128kb. I nie weryfikuje fusebitów, ani ich poprawności dla rodzaju.
W przypadku komunikatu podobnego do:
bad: 0xXX
oznacza to błędy w komunikacji i możliwość błędu.
--------------------------------------------------------
Uzyskałem takie czasy odczytu ATtiny15 1 KByte flash
RSOPT1 | 6.4s (txd -> rst) |
RSOPT2 | 11.3s -x (txd -> clk) |
RSOPT2 | 16.0s |
UART1 | 9m 28.0s (txd -> rst) |
UART2 | 3m 25.7s (txd -> clk) |
TRSPR1 | 7.5s - x |
TRSPR1 | 10.8s |
RSOPTx - prezentowany w tym wątku
UARTx - usb->uart FTDI FT232RL
TRSPRx - inna
polecenia do testu (szybkości graniczne):
Spoiler:
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyS0 -b 19200 -i 5 -c RSOPT1
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyS0 -b 115200 -i 5 -c RSOPT2
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyS0 -b 115200 -c TRSPR1
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyUSB0 -b 57600 -c UART1
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyUSB0 -b 57600 -c UART2 -x
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyS0 -b 115200 -i 5 -c RSOPT2
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyS0 -b 115200 -c TRSPR1
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyUSB0 -b 57600 -c UART1
./arudet -p t15 -U flash:r:fl.bin:b -P /dev/ttyUSB0 -b 57600 -c UART2 -x
przykładowy zrzut
Spoiler:
--------------------------------------
mem type : lfuse
what do : r
filename : fl.bin
format : b
chip : t15
hardwn : UART1
port : /dev/ttyS0
delay : 0 us
baudrate : 57600 kHz
--------------------------------------
find avrdudeconf : t15
decsription : ATtiny15
signature : 1e 90 06
eeprom siz : 64
eeprom block : 64
flash siz : 1024
mode : 0x04
flash block : 128
eepagenmb : 0
fpagenmb : 0
--------------------------------------
delay : 190 us clk: 2631 Hz
YES enter in program operation
file fl.bin exist overwrite
signature : 1e 90 06
read flash memory
adr bytes: data estimated time remain
adr 000000: ffffffffffffffff 0 min 6 s
adr 000008: ffffffffffffffff 0 min 7 s
adr 000010: ffffffffffffffff 0 min 6 s
adr 000018: ffffffffffffffff 0 min 6 s
...
Inne schematy podłączeń


--------------------------------------------------------
Jak pisałem prezentuje tutaj proste konstrukcje, jeśli ktoś jest zainteresowany mogę zaprezentować bardziej skomplikowane tego typu rzeczy. Mające inne wady

--------------------------------------------------------
Program będzie także dostępny: https://gitlab.com/trolsix/arudet/
W załącznikach schematy, program: źródła plus binarki dla 32-bit dla liuxa.
Program wersja 0.0.9 , tak oględnie testowałem, ale będe jeszcze mu się przyglądał.
Proponuje się nie rzucać jeśli ktoś boi się zablokować fusebity

PCB nie wrzucam bo za dużo błędów.
.
Cool? Ranking DIY