Add files via upload
BIN
AsProgrammer/AsProgrammer.exe
Normal file
BIN
AsProgrammer/CH341DLL.DLL
Normal file
435
AsProgrammer/Devices/FuseBits.xml
Normal file
|
@ -0,0 +1,435 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<fuseBits>
|
||||
<mcu signature="1E9781" name="AT90CAN128">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9581" name="AT90CAN32">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9681" name="AT90CAN64">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9381" name="AT90PWM2">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,PSCRV,PSC0RB,PSC1RB,PSC2RB</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9383" name="AT90PWM2B">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,PSCRV,PSC0RB,,PSC2RB</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9001" name="AT90S1200">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB1,LB2,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9101" name="AT90S2313">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB1,LB2,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9103" name="AT90S2343">
|
||||
<high>,,,,,,,</high>
|
||||
<low>RCEN,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB2,LB1,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9201" name="AT90S4414">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB2,LB1,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9203" name="AT90S4433">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB2,LB1,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9301" name="AT90S8515">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB2,LB1,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9303" name="AT90S8535">
|
||||
<high>,,,,,,,</high>
|
||||
<low>,,,,,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB2,LB1,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9782" name="AT90USB1286/1287">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9482" name="AT90USB162">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9682" name="AT90USB646/647">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9702" name="ATmega128">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>WDTON,M103C,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9703" name="ATmega1280">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9704" name="ATmega1281">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9705" name="ATmega1284P">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9403" name="ATmega16">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9489" name="ATmega16U2">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9401" name="ATmega161">
|
||||
<high>,,,,,,,</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,,SUT,,BOOTRST,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9404" name="ATmega162">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>,BODLEVEL0,BODLEVEL1,BODLEVEL2,M161C,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9402" name="ATmega163">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,,,,,</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,,,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E940a" name="ATmega164P">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9406" name="ATmega168">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E940b" name="ATmega168P">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9405" name="ATmega169">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9801" name="ATmega2560">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9802" name="ATmega2561">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9502" name="ATmega32">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E958A" name="ATmega32U2">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9508" name="ATmega324P">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9505" name="ATmega325">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9506" name="ATmega3250">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9514" name="ATmega328">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,SPIEN,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E950f" name="ATmega328P">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,SPIEN,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9503" name="ATmega329">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9504" name="ATmega3290">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9507" name="ATmega406">
|
||||
<high>JTAGEN,OCDEN,,,,,,</high>
|
||||
<low>CKSEL,SUT0,SUT1,BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9205" name="ATmega48">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E920a" name="ATmega48P">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9602" name="ATmega64">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>WDTON,M103C,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9608" name="ATmega640">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9609" name="ATmega644">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E960a" name="ATmega644P">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9605" name="ATmega645">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9606" name="ATmega6450">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9603" name="ATmega649">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9604" name="ATmega6490">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>RSTDISBL,BODLEVEL0,BODLEVEL1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9307" name="ATmega8">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9389" name="ATmega8U2">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9306" name="ATmega8515">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,S8515C</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9308" name="ATmega8535">
|
||||
<high>BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,S8535C</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E930a" name="ATmega88">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E930f" name="ATmega88P">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>BOOTRST,BOOTSZ0,BOOTSZ1,,,,,</ext>
|
||||
<lock>LB1,LB2,BLB01,BLB02,BLB11,BLB12,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9004" name="ATtiny11">
|
||||
<high>,,,,,,,</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,RSTDISBL,FSTRT,,,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB1,LB2,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9005" name="ATtiny12">
|
||||
<high>,,,,,,,</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,RSTDISBL,SPIEN,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB1,LB2,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9007" name="ATtiny13">
|
||||
<high>RSTDISBL,BODLEVEL0,BODLEVEL1,DWEN,SELFPRGEN,,,</high>
|
||||
<low>CKSEL0,CKSEL1,SUT0,SUT1,CKDIV8,WDTON,EESAVE,</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9006" name="ATtiny15">
|
||||
<high>,,,,,,,</high>
|
||||
<low>CKSEL0,CKSEL1,,,RSTDISBL,SPIEN,BODEN,BODLEVEL</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>,LB1,LB2,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E910a" name="ATtiny2313">
|
||||
<high>RSTDISBL,BODLEVEL0,BODLEVEL1,BODLEVEL2,WDTON,,EESAVE,DWEN</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E910b" name="ATtiny24">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9108" name="ATtiny25">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9109" name="ATtiny26">
|
||||
<high>BODEN,BODLEVEL,EESAVE,,RSTDISBL,,,</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOPT,PLLCK</low>
|
||||
<ext>,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E910c" name="ATtiny261">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9207" name="ATtiny44">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9206" name="ATtiny45">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9208" name="ATtiny461">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E930c" name="ATtiny84">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E930b" name="ATtiny85">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E930d" name="ATtiny861">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
<mcu signature="1E9311" name="ATtiny88">
|
||||
<high>BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL</high>
|
||||
<low>CKSEL0,CKSEL1,,,SUT0,SUT1,CKOUT,CKDIV8</low>
|
||||
<ext>SELFPRGEN,,,,,,,</ext>
|
||||
<lock>LB1,LB2,,,,,,</lock>
|
||||
</mcu>
|
||||
</fuseBits>
|
224
AsProgrammer/Devices/StatBits.xml
Normal file
|
@ -0,0 +1,224 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<StatusBits>
|
||||
<FLASH25>
|
||||
<DEFAULT>
|
||||
<flash signature="FFFFFF" name="default">
|
||||
<sreg1>S0,S1,S2,S3,S4,S5,S6,S7</sreg1>
|
||||
<sreg2>S8,S9,S10,S11,S12,S13,S14,S15</sreg2>
|
||||
<sreg3>S16,S17,S18,S19,S20,S21,S22,S23</sreg3>
|
||||
</flash>
|
||||
</DEFAULT>
|
||||
<MICRON>
|
||||
<flash signature="20BA20" name="MT25Q512">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,TB,SRP0</sreg1>
|
||||
<sreg2>,,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
</MICRON>
|
||||
<MACRONIX>
|
||||
<flash signature="C212" name="MX35LF1GE4AB">
|
||||
<sreg1>SP,Comp,Inv,BP0,BP1,BP2,,BPRWD</sreg1>
|
||||
<sreg2>QE,,,,ECC-E,,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,ECC-S0,ECC-S1,CRBSY,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C222" name="MX35LF2GE4AB">
|
||||
<sreg1>,,,BP0,BP1,BP2,,BPRWD</sreg1>
|
||||
<sreg2>QE,,,,ECC-E,,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,ECC-S0,ECC-S1,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C220" name="MX35LF2G14AC">
|
||||
<sreg1>SP,Comp,Inv,BP0,BP1,BP2,,BPRWD</sreg1>
|
||||
<sreg2>QE,,,,,,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,,,CRBSY,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C290" name="MX35UF1G14AC_1.8V">
|
||||
<sreg1>SP,Comp,Inv,BP0,BP1,BP2,,BPRWD</sreg1>
|
||||
<sreg2>QE,,,,,,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C2A0" name="MX35UF2G14AC_1.8V">
|
||||
<sreg1>SP,Comp,Inv,BP0,BP1,BP2,,BPRWD</sreg1>
|
||||
<sreg2>QE,,,,,,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,,,,</sreg3>
|
||||
</flash>
|
||||
</MACRONIX>
|
||||
<WINBOND>
|
||||
<flash signature="EF4012" name="W25Q20">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6012" name="W25Q20_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4013" name="W25Q40">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6013" name="W25Q40_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4014" name="W25Q80">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6014" name="W25Q80_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4015" name="W25Q16">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6015" name="W25Q16_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4016" name="W25Q32">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6016" name="W25Q32_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4017" name="W25Q64FV">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6017" name="W25Q64FW_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4018" name="W25Q128FV">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6018" name="W25Q128FW_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>,,WPS,,,DRV0,DRV1,HOLD/RST</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF4019" name="W25Q256FV">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>ADS,ADP,WPS,,,DRV0,DRV1,</sreg3>
|
||||
</flash>
|
||||
<flash signature="EF6019" name="W25Q256FW_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,LB1,LB2,LB3,CMP,SUS</sreg2>
|
||||
<sreg3>ADS,ADP,WPS,,,DRV0,DRV1,</sreg3>
|
||||
</flash>
|
||||
<flash signature="EFAA21" name="W25N01GV">
|
||||
<sreg1>SRP1,WP-E,TB,BP0,BP1,BP2,BP3,SRP0</sreg1>
|
||||
<sreg2>,,,BUF,ECC-E,SR1-L,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,ECC-0,ECC-1,LUT-F,</sreg3>
|
||||
</flash>
|
||||
<flash signature="EFAB21" name="W25N02GV">
|
||||
<sreg1>SRP1,WP-E,TB,BP0,BP1,BP2,BP3,SRP0</sreg1>
|
||||
<sreg2>,,,BUF,ECC-E,SR1-L,OTP-E,OTP-L</sreg2>
|
||||
<sreg3>BUSY,WEL,E-FAIL,P-FAIL,ECC-0,ECC-1,LUT-F,</sreg3>
|
||||
</flash>
|
||||
</WINBOND>
|
||||
<GIGADEVICE>
|
||||
<flash signature="C84010" name="GD25Q512">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84011" name="GD25Q10">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84012" name="GD25Q20">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84013" name="GD25Q40">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84014" name="GD25Q80">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84015" name="GD25Q16">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84016" name="GD25Q32">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84017" name="GD25Q64">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1</sreg2>
|
||||
<sreg3>,,,,HPF,DRV0,DRV1,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C84018" name="GD25Q128">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1</sreg2>
|
||||
<sreg3>,,,,HPF,DRV0,DRV1,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C86017" name="GD25LQ64_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C86018" name="GD25LQ128_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
<flash signature="C86019" name="GD25LQ256_1.8V">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0</sreg1>
|
||||
<sreg2>SRP1,QE,SUS2,EN4B,LB2,LB3,CMP,SUS1</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
</GIGADEVICE>
|
||||
<SST>
|
||||
<flash signature="FFFFFF" name="default">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,BP2,BP3,AAI,BPL</sreg1>
|
||||
<sreg2>,,,,,,,</sreg2>
|
||||
<sreg3>,,,,,,,</sreg3>
|
||||
</flash>
|
||||
</SST>
|
||||
</FLASH25>
|
||||
<EEPROM>
|
||||
<EEP95>
|
||||
<eep name="default">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,,,,</sreg1>
|
||||
</eep>
|
||||
<eep name="M95M01">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,,,,SRWD</sreg1>
|
||||
</eep>
|
||||
<eep name="M95M02">
|
||||
<sreg1>BUSY,WEL,BP0,BP1,,,,SRWD</sreg1>
|
||||
</eep>
|
||||
</EEP95>
|
||||
<EEP45DB>
|
||||
|
||||
</EEP45DB>
|
||||
</EEPROM>
|
||||
|
||||
</StatusBits>
|
BIN
AsProgrammer/Drivers/CH341A/CH341A_setup.png
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
AsProgrammer/Drivers/CH341A/CH341DLL.DLL
Normal file
BIN
AsProgrammer/Drivers/CH341A/CH341W64.SYS
Normal file
BIN
AsProgrammer/Drivers/CH341A/CH341WDM.CAT
Normal file
178
AsProgrammer/Drivers/CH341A/CH341WDM.INF
Normal file
|
@ -0,0 +1,178 @@
|
|||
; CH341WDM.INF
|
||||
; Driver for CH341 (USB=>EPP/I2C/SPI... chip) V2.2
|
||||
; WDM for Windows 98/Me/2000/XP/Server2003/Vista/64bit Vista/Server2008/Win7/64bit Win7
|
||||
; Copyright (C) W.ch 2001-2009
|
||||
;
|
||||
|
||||
[Version]
|
||||
Signature = "$Chicago$"
|
||||
Class = WCH
|
||||
ClassGuid = {77989ADF-06DB-4025-92E8-40D902C03B0A}
|
||||
Provider = %WinChipHead%
|
||||
DriverVer = 06/05/2009, 2.2.2009.06
|
||||
CatalogFile.NT = CH341WDM.CAT
|
||||
|
||||
[ControlFlags]
|
||||
ExcludeFromSelect = USB\VID_1A86&PID_5512
|
||||
ExcludeFromSelect = USB\VID_4348&PID_5512
|
||||
;ExcludeFromSelect = USB\VID_1A86&PID_7523
|
||||
;ExcludeFromSelect = USB\VID_1A86&PID_5523
|
||||
;ExcludeFromSelect = USB\VID_4348&PID_5523
|
||||
;ExcludeFromSelect = USB\VID_4348&PID_5523&REV_0250
|
||||
|
||||
[ClassInstall32]
|
||||
Addreg = WCHReg
|
||||
|
||||
[ClassInstall]
|
||||
Addreg = WCHReg
|
||||
|
||||
[WCHReg]
|
||||
HKR, , , 0, %ClassName%
|
||||
HKR, , Icon, , -5
|
||||
HKR, , NoInstallClass, , 1
|
||||
|
||||
[Manufacturer]
|
||||
%WinChipHead% = WinChipHead,NT,NTamd64,NTia64
|
||||
|
||||
[WinChipHead]
|
||||
%CH341A.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_5512
|
||||
%CH341.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5512
|
||||
;%CH340SER.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_7523
|
||||
;%CH341ASER.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_5523
|
||||
;%CH341SER.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5523
|
||||
;%CH340SER.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5523&REV_0250
|
||||
|
||||
[WinChipHead.NT]
|
||||
%CH341A.DeviceDesc% = CH341.Install.NT, USB\VID_1A86&PID_5512
|
||||
%CH341.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5512
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NT.NTamd64, USB\VID_1A86&PID_7523
|
||||
;%CH341ASER.DeviceDesc% = CH341.Install.NT, USB\VID_1A86&PID_5523
|
||||
;%CH341SER.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5523
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5523&REV_0250
|
||||
|
||||
[WinChipHead.NTamd64]
|
||||
%CH341A.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_5512
|
||||
%CH341.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5512
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_7523
|
||||
;%CH341ASER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_5523
|
||||
;%CH341SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5523
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5523&REV_0250
|
||||
|
||||
[WinChipHead.NTia64]
|
||||
%CH341A.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_5512
|
||||
%CH341.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5512
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_7523
|
||||
;%CH341ASER.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_5523
|
||||
;%CH341SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5523
|
||||
;%CH340SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5523&REV_0250
|
||||
|
||||
[CH341.Install]
|
||||
CopyFiles = CH341.CopyFiles.SYS, CH341.CopyFiles.DLL
|
||||
AddReg = CH341.9X.AddReg, CH341.AddReg
|
||||
|
||||
[CH341.Install.NT]
|
||||
CopyFiles = CH341.CopyFiles.SYS, CH341.CopyFiles.DLL
|
||||
AddReg = CH341.NT.AddReg, CH341.AddReg
|
||||
|
||||
[CH341.Install.NTamd64]
|
||||
CopyFiles = CH341.CopyFiles.SYSA64, CH341.CopyFiles.DLL
|
||||
AddReg = CH341.NT.AddReg, CH341.AddReg
|
||||
|
||||
[CH341.Install.NTia64]
|
||||
CopyFiles = CH341.CopyFiles.SYSI64, CH341.CopyFiles.DLL
|
||||
AddReg = CH341.NT.AddReg, CH341.AddReg
|
||||
|
||||
[CH341.CopyFiles.SYS]
|
||||
CH341WDM.SYS, , , 2
|
||||
|
||||
[CH341.CopyFiles.SYSA64]
|
||||
CH341W64.SYS, , , 2
|
||||
|
||||
[CH341.CopyFiles.SYSI64]
|
||||
;CH341I64.SYS, , , 2
|
||||
|
||||
[CH341.CopyFiles.DLL]
|
||||
CH341DLL.DLL, , , 2
|
||||
|
||||
[CH341.9X.AddReg]
|
||||
HKR, , DevLoader, , *NTKERN
|
||||
HKR, , NTMPDriver, , CH341WDM.SYS
|
||||
|
||||
[CH341.NT.AddReg]
|
||||
|
||||
[CH341.AddReg]
|
||||
HKLM, SOFTWARE\WinChipHead\IC\CH341, WDM, 0x00010001, 0x00000022
|
||||
HKLM, SOFTWARE\WinChipHead\IC\CH341, DLL, 0x00010001, 0x00000021
|
||||
HKLM, SOFTWARE\WinChipHead\IC\CH341, Function, , "USB=>Parallel"
|
||||
|
||||
[CH341.Install.NT.Services]
|
||||
AddService = CH341, 2, CH341.Service
|
||||
|
||||
[CH341.Install.NTamd64.Services]
|
||||
AddService = CH341_A64, 2, CH341.ServiceA64
|
||||
|
||||
[CH341.Install.NTia64.Services]
|
||||
AddService = CH341_I64, 2, CH341.ServiceI64
|
||||
|
||||
[CH341.Service]
|
||||
DisplayName = "CH341WDM"
|
||||
ServiceType = 1
|
||||
StartType = 3
|
||||
ErrorControl = 1
|
||||
ServiceBinary = %10%\System32\Drivers\CH341WDM.SYS
|
||||
|
||||
[CH341.ServiceA64]
|
||||
DisplayName = "CH341WDM_A64"
|
||||
ServiceType = 1
|
||||
StartType = 3
|
||||
ErrorControl = 1
|
||||
ServiceBinary = %10%\System32\Drivers\CH341W64.SYS
|
||||
|
||||
[CH341.ServiceI64]
|
||||
DisplayName = "CH341WDM_I64"
|
||||
ServiceType = 1
|
||||
StartType = 3
|
||||
ErrorControl = 1
|
||||
ServiceBinary = %10%\System32\Drivers\CH341I64.SYS
|
||||
|
||||
[DestinationDirs]
|
||||
DefaultDestDir = 10, System32\Drivers
|
||||
CH341.CopyFiles.DLL = 11
|
||||
CH341.CopyFiles.SYS = 10, System32\Drivers
|
||||
CH341.CopyFiles.SYSA64 = 10, System32\Drivers
|
||||
;CH341.CopyFiles.SYSI64 = 10, System32\Drivers
|
||||
|
||||
[SourceDisksFiles]
|
||||
CH341WDM.SYS = 1
|
||||
CH341DLL.DLL = 1
|
||||
CH341W64.SYS = 1
|
||||
;CH341I64.SYS = 1
|
||||
|
||||
[SourceDisksNames]
|
||||
1 = %DISK_NAME%, CH341WDM.SYS, ,
|
||||
|
||||
[SourceDisksNames.amd64]
|
||||
1 = %DISK_NAME%, CH341W64.SYS, ,
|
||||
|
||||
[SourceDisksNames.ia64]
|
||||
1 = %DISK_NAME%, CH341I64.SYS, ,
|
||||
|
||||
[Strings]
|
||||
ClassName = "Interface"
|
||||
WinChipHead = "wch.cn"
|
||||
CH341.DeviceDesc = "USB-EPP/I2C... CH341"
|
||||
CH341A.DeviceDesc = "USB-EPP/I2C... CH341A"
|
||||
CH341SER.DeviceDesc = "USB-SERIAL CH341"
|
||||
CH340SER.DeviceDesc = "USB-SERIAL CH340"
|
||||
CH341ASER.DeviceDesc = "USB-SERIAL CH341A"
|
||||
DISK_NAME = "CH341 Parallel Installation Disk"
|
||||
|
||||
[Strings.0804]
|
||||
ClassName = "Íⲿ½Ó¿Ú"
|
||||
WinChipHead = "wch.cn"
|
||||
CH341.DeviceDesc = "USB-EPP/I2C... CH341"
|
||||
CH341A.DeviceDesc = "USB-EPP/I2C... CH341A"
|
||||
CH341SER.DeviceDesc = "USB-SERIAL CH341"
|
||||
CH340SER.DeviceDesc = "USB-SERIAL CH340"
|
||||
CH341ASER.DeviceDesc = "USB-SERIAL CH341A"
|
||||
DISK_NAME = "CH341 Parallel Installation Disk"
|
BIN
AsProgrammer/Drivers/CH341A/CH341WDM.SYS
Normal file
BIN
AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe
Normal file
BIN
AsProgrammer/Drivers/CH341A/SETUP.EXE
Normal file
BIN
AsProgrammer/Drivers/ch341_jumper.jpg
Normal file
After Width: | Height: | Size: 100 KiB |
34
AsProgrammer/Khan Dish Network.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
This file has been downloaded from khandishnetwork.com
|
||||
|
||||
For More Software and Video Tutorials visit our website and youtube channel:
|
||||
|
||||
|
||||
### khandishnetwork.com ###
|
||||
|
||||
|
||||
ANDROID APP: https://play.google.com/store/apps/details?id=com.softwarebox.app
|
||||
|
||||
|
||||
Youtube Channel:
|
||||
|
||||
https://www.youtube.com/Ikram dirujii
|
||||
|
||||
|
||||
Facebook Page:
|
||||
|
||||
https://facebook.com/groups/khandishnetwork
|
||||
|
||||
|
||||
|
||||
)|(
|
||||
(o o)
|
||||
+-------------------------------ooO--(_)--oo-------------------------------------+
|
||||
| |
|
||||
| |
|
||||
| All the files available on khandishnetwork.com are kept for educational |
|
||||
| purpose only! |
|
||||
| Nobody is responsible for any of the files stored on khandishnetwork.com, |
|
||||
| their content can damage your system! |
|
||||
| |
|
||||
+--------------------------------------------------------------------------------+
|
BIN
AsProgrammer/Pinouts/ISP.gif
Normal file
After Width: | Height: | Size: 13 KiB |
8
AsProgrammer/Pinouts/KB901x/kb9012pins.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
kb9012 -> UsbAsp
|
||||
|
||||
59 EDI_CS -> CS(RST)
|
||||
60 EDI_CLK -> SCK
|
||||
61 EDI_DIN -> MOSI
|
||||
62 EDI_DO -> MISO
|
||||
|
||||
42 TP_PLL_LOCK -> GND
|
BIN
AsProgrammer/Pinouts/schemeI2C.gif
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
AsProgrammer/Pinouts/schemeMW.gif
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
AsProgrammer/Pinouts/schemeSPI25.gif
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
AsProgrammer/Pinouts/schemeSPI45.gif
Normal file
After Width: | Height: | Size: 20 KiB |
1002
AsProgrammer/chiplist.xml
Normal file
681
AsProgrammer/lang/en.po
Normal file
|
@ -0,0 +1,681 @@
|
|||
#English
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: avrfuses.fus_str_msg
|
||||
msgid "AVR Fuses and Bit Lock "
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_45page_powerof2
|
||||
msgid "Page size is power of 2!"
|
||||
msgstr "Page size is power of 2!"
|
||||
|
||||
#: msgstr.str_45page_std
|
||||
msgid "Default page size is set"
|
||||
msgstr "Default page size is set"
|
||||
|
||||
#: msgstr.str_avr_init_error
|
||||
msgid "AVR initialisation failed"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_block_en
|
||||
msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet"
|
||||
msgstr "Possible protection is enabled. Press \"Unprotect\" and check datasheet"
|
||||
|
||||
#: msgstr.str_buff_empty
|
||||
msgid "No data in buffer"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_changed
|
||||
msgid "Modified"
|
||||
msgstr "Modified"
|
||||
|
||||
#: msgstr.str_changed_spi_speed
|
||||
msgid "Lower AVR SPI Speed"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_check_settings
|
||||
msgid "Check settings"
|
||||
msgstr "Check settings"
|
||||
|
||||
#: msgstr.str_choose_avr
|
||||
msgid "Choose an AVR Component in list"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_choose_ic
|
||||
msgid "Choose a Component in list"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_combo_warn
|
||||
msgid "IC will be erased and programmed. Continue?"
|
||||
msgstr "IC will be erased and programmed. Continue?"
|
||||
|
||||
#: msgstr.str_connection_error
|
||||
msgid "Connecting Error "
|
||||
msgstr "Connecting Error "
|
||||
|
||||
#: msgstr.str_curr_hw
|
||||
msgid "Current programmer: "
|
||||
msgstr "Current programmer: "
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "file modified"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_dlg_fileext
|
||||
msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_dlg_savefile
|
||||
msgid "Save changes?"
|
||||
msgstr "Save changes?"
|
||||
|
||||
#: msgstr.str_done
|
||||
msgid "Done"
|
||||
msgstr "Done"
|
||||
|
||||
#: msgstr.str_erase_notice
|
||||
msgid "The process can take more than a minute on large flash memories!"
|
||||
msgstr "The process can take more than a minute on large flash memories!"
|
||||
|
||||
#: msgstr.str_erasing_flash
|
||||
msgid "Erasing memory..."
|
||||
msgstr "Erasing memory..."
|
||||
|
||||
#: msgstr.str_fail
|
||||
msgid "Unsuccess"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_goto_addr
|
||||
msgctxt "msgstr.str_goto_addr"
|
||||
msgid "Goto address"
|
||||
msgstr "Goto address"
|
||||
|
||||
#: msgstr.str_chip_no_answer
|
||||
msgid "IC not responding"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_id_unknown
|
||||
msgid "(Unknown ID)"
|
||||
msgstr "(Unknown ID)"
|
||||
|
||||
#: msgstr.str_mini_eeprom_support
|
||||
msgid "This firmware do not support I2C and 93Cxx"
|
||||
msgstr "This firmware do not support I2C and 93Cxx"
|
||||
|
||||
#: msgstr.str_new_sreg
|
||||
msgid "New SREG: "
|
||||
msgstr "New SREG: "
|
||||
|
||||
#: msgstr.str_not_found_hex
|
||||
msgid "Value not found"
|
||||
msgstr "Value not found"
|
||||
|
||||
#: msgstr.str_no_eeprom_support
|
||||
msgid "This firmware do not support memory programming"
|
||||
msgstr "This firmware do not support memory programming"
|
||||
|
||||
#: msgstr.str_no_hardw_support
|
||||
msgid "This hardware is not supported!"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_old_sreg
|
||||
msgid "Old SREG: "
|
||||
msgstr "Old SREG: "
|
||||
|
||||
#: msgstr.str_reading_flash
|
||||
msgid "Reading memory..."
|
||||
msgstr "Reading memory..."
|
||||
|
||||
#: msgstr.str_script_no_section
|
||||
msgid "There is no section: "
|
||||
msgstr "There is no section: "
|
||||
|
||||
#: msgstr.str_script_run_section
|
||||
msgid "Runs section: "
|
||||
msgstr "Runs section: "
|
||||
|
||||
#: msgstr.str_script_sel_section
|
||||
msgid "Select section"
|
||||
msgstr "Select section"
|
||||
|
||||
#: msgstr.str_search_hex
|
||||
msgid "Search HEX value"
|
||||
msgstr "Search HEX value"
|
||||
|
||||
#: msgstr.str_sel_chip
|
||||
msgid "Selected CHIP: "
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_set_speed_error
|
||||
msgid "Error setting SPI speed"
|
||||
msgstr "Error setting SPI speed"
|
||||
|
||||
#: msgstr.str_size
|
||||
msgid "Size: "
|
||||
msgstr "Size: "
|
||||
|
||||
#: msgstr.str_specify_hex
|
||||
msgid "Use HEX numbers"
|
||||
msgstr "Use HEX numbers"
|
||||
|
||||
#: msgstr.str_start_erase
|
||||
msgid "Erase IC?"
|
||||
msgstr "Erase IC?"
|
||||
|
||||
#: msgstr.str_start_write
|
||||
msgid "Start programming?"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_time
|
||||
msgid "Execution time: "
|
||||
msgstr "Execution time: "
|
||||
|
||||
#: msgstr.str_success
|
||||
msgid "Success"
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_usb_timeout
|
||||
msgid "USB_control_msg timeout!"
|
||||
msgstr "USB_control_msg timeout!"
|
||||
|
||||
#: msgstr.str_user_cancel
|
||||
msgid "Canceled by user"
|
||||
msgstr "Canceled by user"
|
||||
|
||||
#: msgstr.str_using_script
|
||||
msgid "Script: "
|
||||
msgstr "Script: "
|
||||
|
||||
#: msgstr.str_verify
|
||||
msgid "Verify memory..."
|
||||
msgstr "Verify memory..."
|
||||
|
||||
#: msgstr.str_verify_error
|
||||
msgid "Verification error on address: "
|
||||
msgstr "Verification error on address: "
|
||||
|
||||
#: msgstr.str_writing_flash
|
||||
msgid "Programming memory..."
|
||||
msgstr "Programming memory..."
|
||||
|
||||
#: msgstr.str_writing_flash_wchk
|
||||
msgid "Programming memory(verifying)..."
|
||||
msgstr "Programming memory(verifying)..."
|
||||
|
||||
#: msgstr.str_wrong_bytes_read
|
||||
msgid "Number of bytes readed not equal IC size"
|
||||
msgstr "Number of bytes readed not equal IC size"
|
||||
|
||||
#: msgstr.str_wrong_bytes_write
|
||||
msgid "Number of written bytes not equal IC size"
|
||||
msgstr "Number of written bytes not equal IC size"
|
||||
|
||||
#: msgstr.str_wrong_file_size
|
||||
msgid "File size larger than IC size"
|
||||
msgstr "File size larger than IC size"
|
||||
|
||||
#: search.sfound
|
||||
msgid "Found: "
|
||||
msgstr ""
|
||||
|
||||
#: search.sreplaced
|
||||
msgid "Replaced: "
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btcancel.caption
|
||||
msgctxt "tavrfusesform.btcancel.caption"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btfusecalc.caption
|
||||
msgid "Fus Calc"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btloaddeffuses.caption
|
||||
msgid "Load Default"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btreadfuses.caption
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btwritefuses.caption
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuseextgroup.caption
|
||||
msgid "Extended Fuse Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fusehighgroup.caption
|
||||
msgid "Fuse High Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.caption
|
||||
msgid "Lock Bit Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.hint
|
||||
msgctxt "tavrfusesform.fuselockgroup.hint"
|
||||
msgid "Read Only"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselowgroup.caption
|
||||
msgid "Fuse Low Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.lockencheckbox.caption
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.bt16bits.caption
|
||||
msgid "Value (16Bits):"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.bt8bits.caption
|
||||
msgid "Value (8Bits):"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btcancel.caption
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btfillbuff.caption
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btincr.caption
|
||||
msgid "Incremental values (00..FF)"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btrandom.caption
|
||||
msgid "Random values"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.caption
|
||||
msgid "Fill Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.groupbox1.caption
|
||||
msgid "HEX Values"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.groupbox2.caption
|
||||
msgid "Limits"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.label2.caption
|
||||
msgid "Start Address:"
|
||||
msgstr "From:"
|
||||
|
||||
#: tfillbuffform.label3.caption
|
||||
msgid "End Address:"
|
||||
msgstr "To:"
|
||||
|
||||
#: tmainform.appbutton.hint
|
||||
msgid "Access Protection Page (APP)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autoblankcheck.caption
|
||||
msgid "Blank Check"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autocheck.caption
|
||||
msgid "Verify"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autoclear.caption
|
||||
msgid "Erase"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autowrite.caption
|
||||
msgctxt "tmainform.autowrite.caption"
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.avreepromtbutton.caption
|
||||
msgctxt "tmainform.avreepromtbutton.caption"
|
||||
msgid "EEPROM"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.avrfusesbutton.caption
|
||||
msgctxt "tmainform.avrfusesbutton.caption"
|
||||
msgid "Fuses"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.blankcheckmenuitem.caption
|
||||
msgid "BlankCheck"
|
||||
msgstr "Blank check"
|
||||
|
||||
#: tmainform.buffermenuitem.caption
|
||||
msgid "Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.buttonblock.hint
|
||||
msgid "Unprotect"
|
||||
msgstr "Unprotect"
|
||||
|
||||
#: tmainform.buttoncancel.hint
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#: tmainform.buttonerase.hint
|
||||
msgid "Erase IC"
|
||||
msgstr "Erase IC"
|
||||
|
||||
#: tmainform.buttonopenfile.hint
|
||||
msgid "Open File"
|
||||
msgstr "Open File"
|
||||
|
||||
#: tmainform.buttonread.hint
|
||||
msgctxt "tmainform.buttonread.hint"
|
||||
msgid "Read IC"
|
||||
msgstr "Read IC"
|
||||
|
||||
#: tmainform.buttonreadid.hint
|
||||
msgid "Detect IC"
|
||||
msgstr "Detect Chip"
|
||||
|
||||
#: tmainform.buttonsavefile.hint
|
||||
msgctxt "tmainform.buttonsavefile.hint"
|
||||
msgid "Save File"
|
||||
msgstr "Save"
|
||||
|
||||
#: tmainform.buttonverify.hint
|
||||
msgid "Verify IC"
|
||||
msgstr "Verify IC"
|
||||
|
||||
#: tmainform.buttonwrite.hint
|
||||
msgctxt "tmainform.buttonwrite.hint"
|
||||
msgid "Write IC"
|
||||
msgstr "Programm IC"
|
||||
|
||||
#: tmainform.checkbox_i2c_a2.hint
|
||||
msgctxt "tmainform.checkbox_i2c_a2.hint"
|
||||
msgid "Set device address"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.caption
|
||||
msgid "R/W Byte by Byte"
|
||||
msgstr "R/W Byte by Byte"
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.hint
|
||||
msgid "Read & Write, Byte by Byte"
|
||||
msgstr "Byte by Byte reading/writing"
|
||||
|
||||
#: tmainform.clearlogmenuitem.caption
|
||||
msgid "Clear"
|
||||
msgstr "Clear"
|
||||
|
||||
#: tmainform.comboaddrtype.hint
|
||||
msgid "Type of addressing"
|
||||
msgstr "Type of addressing"
|
||||
|
||||
#: tmainform.comboboxavrspeed.hint
|
||||
msgid "AVR SPI frequency"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.combochipsize.hint
|
||||
msgid "IC size in bytes"
|
||||
msgstr "IC size in bytes"
|
||||
|
||||
#: tmainform.combomwbitlen.hint
|
||||
msgid "Address Lenght in bits"
|
||||
msgstr "Lenght of address in bits"
|
||||
|
||||
#: tmainform.combopagesize.hint
|
||||
msgid "Write Page size"
|
||||
msgstr "Write Page size"
|
||||
|
||||
#: tmainform.copylogmenuitem.caption
|
||||
msgctxt "tmainform.copylogmenuitem.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Copy"
|
||||
|
||||
#: tmainform.i2cavancedbutton.caption
|
||||
msgid "i2cAvanced"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.labelpage.caption
|
||||
msgid "Page"
|
||||
msgstr "Page"
|
||||
|
||||
#: tmainform.labelsize.caption
|
||||
msgid "Size"
|
||||
msgstr "Size"
|
||||
|
||||
#: tmainform.labeltypead.caption
|
||||
msgid "Address type"
|
||||
msgstr "Address type"
|
||||
|
||||
#: tmainform.i2cadvancedbutton.hint
|
||||
msgid "I2C advanced settings access"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.labeladlength.caption
|
||||
msgid "Address lenght"
|
||||
msgstr "Address lenght"
|
||||
|
||||
#: tmainform.labelspicmd.caption
|
||||
msgid "SPI Family"
|
||||
msgstr "SPI Family"
|
||||
|
||||
#: tmainform.label_i2c_devaddr.caption
|
||||
msgid "Device address"
|
||||
msgstr "Device address"
|
||||
|
||||
#: tmainform.menuarduinospiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Clock"
|
||||
|
||||
#: tmainform.menuavrispspiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Clock"
|
||||
|
||||
#: tmainform.menuchip.caption
|
||||
msgid "IC"
|
||||
msgstr "IC"
|
||||
|
||||
#: tmainform.menuclearbuff.caption
|
||||
msgid "Clear the Buffer"
|
||||
msgstr "Clear Buffer(FF)"
|
||||
|
||||
#: tmainform.menucopytoclip.caption
|
||||
msgctxt "tmainform.menucopytoclip.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Copy"
|
||||
|
||||
#: tmainform.menufile.caption
|
||||
msgid "File"
|
||||
msgstr "File"
|
||||
|
||||
#: tmainform.menufileopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: tmainform.menufilesave.caption
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
#: tmainform.menufillbuffer.caption
|
||||
msgid "Fill the Buffer"
|
||||
msgstr "Fill the Buffer"
|
||||
|
||||
#: tmainform.menufindchip.caption
|
||||
msgctxt "tmainform.menufindchip.caption"
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
|
||||
#: tmainform.menufindreplace.caption
|
||||
msgid "Search/Replace"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menugotooffset.caption
|
||||
msgctxt "tmainform.menugotooffset.caption"
|
||||
msgid "Goto address"
|
||||
msgstr "Goto address"
|
||||
|
||||
#: tmainform.menuignorebusybit.caption
|
||||
msgid "Dont verify Busy bit"
|
||||
msgstr "Dont verify Busy bit"
|
||||
|
||||
#: tmainform.menuitembenchmark.caption
|
||||
msgid "Benchmark"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menuitemeditsreg.caption
|
||||
msgid "Edit SREG"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menuitemhardware.caption
|
||||
msgid "Hardware"
|
||||
msgstr "Hardware"
|
||||
|
||||
#: tmainform.menuitemreadsreg.caption
|
||||
msgid "Read SREG"
|
||||
msgstr "Read SREG"
|
||||
|
||||
#: tmainform.menuloaddev.caption
|
||||
msgid "Load last device when starts"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menumicrowire.caption
|
||||
msgid "Microwire (soft)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menumwclock.caption
|
||||
msgctxt "tmainform.menumwclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Clock"
|
||||
|
||||
#: tmainform.menuoptions.caption
|
||||
msgid "Options"
|
||||
msgstr "Options"
|
||||
|
||||
#: tmainform.menupastefromclip.caption
|
||||
msgid "Paste"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menuskipff.caption
|
||||
msgid "Skip FF"
|
||||
msgstr "Skip FF"
|
||||
|
||||
#: tmainform.menuspiclock.caption
|
||||
msgctxt "tmainform.menuspiclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Clock"
|
||||
|
||||
#: tmainform.mwswapbutton.caption
|
||||
msgid "Swap <-->"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.mwswapbutton.hint
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.scriptsmenuitem.caption
|
||||
msgid "Скрипты"
|
||||
msgstr "Scripts"
|
||||
|
||||
#: tmainform.swapbytes.caption
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.unprotbutton.caption
|
||||
msgid "UnProt"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.unprotbutton.hint
|
||||
msgid "Removes protections in APP"
|
||||
msgstr ""
|
||||
|
||||
#: tsearchform.caption
|
||||
msgctxt "tsearchform.caption"
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
|
||||
#: tsearchform.casesensecheckbox.caption
|
||||
msgid "case sensitive"
|
||||
msgstr "case sensitive"
|
||||
|
||||
#: tsearchform.findbutton.caption
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
|
||||
#: tsearchform.hexcheckbox.caption
|
||||
msgid "Search HEX"
|
||||
msgstr "Search HEX"
|
||||
|
||||
#: tsearchform.rcancelbutton.caption
|
||||
msgctxt "tsearchform.rcancelbutton.caption"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: tsearchform.replaceallbutton.caption
|
||||
msgid "Repl. All"
|
||||
msgstr "Repl. All"
|
||||
|
||||
#: tsearchform.replacebutton.caption
|
||||
msgctxt "tsearchform.replacebutton.caption"
|
||||
msgid "Replace"
|
||||
msgstr "Replace"
|
||||
|
||||
#: tsearchform.replacecheckbox.caption
|
||||
msgctxt "tsearchform.replacecheckbox.caption"
|
||||
msgid "Replace:"
|
||||
msgstr "Replace:"
|
||||
|
||||
#: tsearchform.searchlabel.caption
|
||||
msgid "Search:"
|
||||
msgstr "Search:"
|
||||
|
||||
#: tsregeditform.buttonreadsreg.caption
|
||||
msgctxt "tsregeditform.buttonreadsreg.caption"
|
||||
msgid "Read"
|
||||
msgstr "Read"
|
||||
|
||||
#: tsregeditform.buttonwritesreg.caption
|
||||
msgctxt "tsregeditform.buttonwritesreg.caption"
|
||||
msgid "Write"
|
||||
msgstr "Write"
|
||||
|
||||
#: tchipsearchform.caption
|
||||
msgid "Search IC"
|
||||
msgstr "Search IC"
|
||||
|
||||
#: tchipsearchform.label1.caption
|
||||
msgid "Content:"
|
||||
msgstr "Content:"
|
||||
|
||||
#: tchipsearchform.ChipSearchSelectButton.caption
|
||||
msgid "Select IC"
|
||||
msgstr "Select IC"
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "File modified"
|
||||
msgstr "File modified"
|
||||
|
||||
#: tscripteditform.menuitemfile.caption
|
||||
msgid "File"
|
||||
msgstr "File"
|
||||
|
||||
#: tscripteditform.menuitemopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: tscripteditform.menuitemrun.caption
|
||||
msgid "Execute"
|
||||
msgstr "Execute"
|
||||
|
||||
#: tscripteditform.menuitemsave.caption
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
#: tscripteditform.menuitemsaveas.caption
|
||||
msgid "Save as..."
|
||||
msgstr "Save as..."
|
||||
|
||||
#: tscripteditform.menuitemsection.caption
|
||||
msgid "Section ="
|
||||
msgstr "Section ="
|
681
AsProgrammer/lang/fr.po
Normal file
|
@ -0,0 +1,681 @@
|
|||
#French
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: avrfuses.fus_str_msg
|
||||
msgid "AVR Fuses and Bit Lock "
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_45page_powerof2
|
||||
msgid "Page size is power of 2!"
|
||||
msgstr "La taille de la page est définie sur un multiple de deux!"
|
||||
|
||||
#: msgstr.str_45page_std
|
||||
msgid "Page size is power of 2!"
|
||||
msgstr "La taille de page par défaut est définie."
|
||||
|
||||
#: msgstr.str_avr_init_error
|
||||
msgid "AVR initialisation failed"
|
||||
msgstr "Echec initialisation AVR"
|
||||
|
||||
#: msgstr.str_block_en
|
||||
msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet"
|
||||
msgstr "Peut-être protection en écriture. Cliquez sur "Supprimer la protection" et vérifiez la fiche technique."
|
||||
|
||||
#: msgstr.str_buff_empty
|
||||
msgid "No data in buffer"
|
||||
msgstr "Buffer vide"
|
||||
|
||||
#: msgstr.str_changed
|
||||
msgid "Modified"
|
||||
msgstr "Changé(s)"
|
||||
|
||||
#: msgstr.str_changed_spi_speed
|
||||
msgid "Lower AVR SPI Speed"
|
||||
msgstr "Abaissement fréquence SPI AVR"
|
||||
|
||||
#: msgstr.str_check_settings
|
||||
msgid "Check settings"
|
||||
msgstr "Vérifier les paramètres"
|
||||
|
||||
#: msgstr.str_choose_avr
|
||||
msgid "Choose an AVR Component in list"
|
||||
msgstr "Choisissez un AVR"
|
||||
|
||||
#: msgstr.str_choose_ic
|
||||
msgid "Choose a Component in list"
|
||||
msgstr "Choisissez un composant"
|
||||
|
||||
#: msgstr.str_combo_warn
|
||||
msgid "IC will be erased and programmed. Continue?"
|
||||
msgstr "La puce sera effacée et écrasée. Continuer?"
|
||||
|
||||
#: msgstr.str_connection_error
|
||||
msgid "Connecting Error "
|
||||
msgstr "Erreur de connexion "
|
||||
|
||||
#: msgstr.str_curr_hw
|
||||
msgid "Current programmer: "
|
||||
msgstr "Programmeur actuel: "
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "file modified"
|
||||
msgstr "Fichier modifié"
|
||||
|
||||
#: msgstr.str_dlg_fileext
|
||||
msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*"
|
||||
msgstr "Fichier |*.bin;*.hex|Fichier |*.bin|Fichier |*.hex|Fichiers |*.*"
|
||||
|
||||
#: msgstr.str_dlg_savefile
|
||||
msgid "Save changes?"
|
||||
msgstr "Sauvegarder les changements?""
|
||||
|
||||
#: msgstr.str_done
|
||||
msgid "Done"
|
||||
msgstr "Fait"
|
||||
|
||||
#: msgstr.str_erase_notice
|
||||
msgid "The process can take more than a minute on large flash memories!"
|
||||
msgstr "Le processus peut prendre plus d’une minute sur de grandes mémoires flash!"
|
||||
|
||||
#: msgstr.str_erasing_flash
|
||||
msgid "Erasing memory..."
|
||||
msgstr "Effacement..."
|
||||
|
||||
#: msgstr.str_fail
|
||||
msgid "Unsuccess"
|
||||
msgstr "Echec"
|
||||
|
||||
#: msgstr.str_goto_addr
|
||||
msgctxt "msgstr.str_goto_addr"
|
||||
msgid "Goto address"
|
||||
msgstr "Aller à l'addresse"
|
||||
|
||||
#: msgstr.str_chip_no_answer
|
||||
msgid "IC not responding"
|
||||
msgstr "La puce ne répond pas"
|
||||
|
||||
#: msgstr.str_id_unknown
|
||||
msgid "(Unknown ID)"
|
||||
msgstr "(ID Iconnu)"
|
||||
|
||||
#: msgstr.str_mini_eeprom_support
|
||||
msgid "This firmware do not support I2C and 93Cxx"
|
||||
msgstr "Ce firmware ne supporte pas I2C et 93Cxx!"
|
||||
|
||||
#: msgstr.str_new_sreg
|
||||
msgid "New SREG: "
|
||||
msgstr "Nouveau SREG: "
|
||||
|
||||
#: msgstr.str_not_found_hex
|
||||
msgid "Value not found"
|
||||
msgstr "Valeur non trouvée"
|
||||
|
||||
#: msgstr.str_no_eeprom_support
|
||||
msgid "This firmware do not support memory programming"
|
||||
msgstr "Ce firmware n'est pas supporté!"
|
||||
|
||||
#: msgstr.str_no_hardw_support
|
||||
msgid "This hardware is not supported!"
|
||||
msgstr "Ce matériel n'est pas supporté!"
|
||||
|
||||
#: msgstr.str_old_sreg
|
||||
msgid "Old SREG: "
|
||||
msgstr "Ancien SREG: "
|
||||
|
||||
#: msgstr.str_reading_flash
|
||||
msgid "Reading memory..."
|
||||
msgstr "Lecture memoire..."
|
||||
|
||||
#: msgstr.str_script_no_section
|
||||
msgid "There is no section: "
|
||||
msgstr "Il n'y a pas de section: "
|
||||
|
||||
#: msgstr.str_script_run_section
|
||||
msgid "Runs section: "
|
||||
msgstr "Section en cours: "
|
||||
|
||||
#: msgstr.str_script_sel_section
|
||||
msgid "Select section"
|
||||
msgstr "Choisissez une section"
|
||||
|
||||
#: msgstr.str_search_hex
|
||||
msgid "Search HEX value"
|
||||
msgstr "Recherche valeur HEX"
|
||||
|
||||
#: msgstr.str_sel_chip
|
||||
msgid "Selected CHIP: "
|
||||
msgstr "CHIP sélectionné: "
|
||||
|
||||
#: msgstr.str_set_speed_error
|
||||
msgid "Error setting SPI speed"
|
||||
msgstr "Erreur de réglage de la vitesse SPI"
|
||||
|
||||
#: msgstr.str_size
|
||||
msgid "Size: "
|
||||
msgstr "Taille: "
|
||||
|
||||
#: msgstr.str_specify_hex
|
||||
msgid "Use HEX numbers"
|
||||
msgstr "Spécifiez les nombres hexadécimaux"
|
||||
|
||||
#: msgstr.str_start_erase
|
||||
msgid "Erase IC?"
|
||||
msgstr "Effacement IC?"
|
||||
|
||||
#: msgstr.str_start_write
|
||||
msgid "Start programming?"
|
||||
msgstr "Commencer la programmation?"
|
||||
|
||||
#: msgstr.str_time
|
||||
msgid "Execution time: "
|
||||
msgstr "Délai d'exécution: "
|
||||
|
||||
#: msgstr.str_success
|
||||
msgid "Success"
|
||||
msgstr "Succès"
|
||||
|
||||
#: msgstr.str_usb_timeout
|
||||
msgid "USB_control_msg timeout!"
|
||||
msgstr "USB_control_msg est tombé en fin de timeout!"
|
||||
|
||||
#: msgstr.str_user_cancel
|
||||
msgid "Canceled by user"
|
||||
msgstr "Interrompu par l'utilisateur"
|
||||
|
||||
#: msgstr.str_using_script
|
||||
msgid "Canceled by user"
|
||||
msgstr "Script utilisé: "
|
||||
|
||||
#: msgstr.str_verify
|
||||
msgid "Verify memory..."
|
||||
msgstr "Verification memoire..."
|
||||
|
||||
#: msgstr.str_verify_error
|
||||
msgid "Verification error on address: "
|
||||
msgstr "Erreur de comparaison à: "
|
||||
|
||||
#: msgstr.str_writing_flash
|
||||
msgid "Programming memory..."
|
||||
msgstr "Ecriture memoire..."
|
||||
|
||||
#: msgstr.str_writing_flash_wchk
|
||||
msgid "Programming memory(verifying)..."
|
||||
msgstr "Ecriture memoire(verification)..."
|
||||
|
||||
#: msgstr.str_wrong_bytes_read
|
||||
msgid "Number of bytes readed not equal IC size"
|
||||
msgstr "Le nombre d'octets lus n'est pas égal à la taille de la puce"
|
||||
|
||||
#: msgstr.str_wrong_bytes_write
|
||||
msgid "Number of written bytes not equal IC size"
|
||||
msgstr "Le nombre d'octets écrits n'est pas égal à la taille de la puce"
|
||||
|
||||
#: msgstr.str_wrong_file_size
|
||||
msgid "File size larger than IC size"
|
||||
msgstr "Taille de fichier supérieure à la taille de la puce"
|
||||
|
||||
#: search.sfound
|
||||
msgid "Found: "
|
||||
msgstr "Trouvé: "
|
||||
|
||||
#: search.sreplaced
|
||||
msgid "Replaced: "
|
||||
msgstr "Remplacé"
|
||||
|
||||
#: tavrfusesform.btcancel.caption
|
||||
msgctxt "tavrfusesform.btcancel.caption"
|
||||
msgid "Cancel"
|
||||
msgstr "Abandon"
|
||||
|
||||
#: tavrfusesform.btfusecalc.caption
|
||||
msgid "Fus Calc"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btloaddeffuses.caption
|
||||
msgid "Load Default"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btreadfuses.caption
|
||||
msgid "Read"
|
||||
msgstr "Lecture"
|
||||
|
||||
#: tavrfusesform.btwritefuses.caption
|
||||
msgid "Write"
|
||||
msgstr "Ecriture"
|
||||
|
||||
#: tavrfusesform.fuseextgroup.caption
|
||||
msgid "Extended Fuse Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fusehighgroup.caption
|
||||
msgid "Fuse High Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.caption
|
||||
msgid "Lock Bit Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.hint
|
||||
msgctxt "tavrfusesform.fuselockgroup.hint"
|
||||
msgid "Read Only"
|
||||
msgstr "Lecture seule"
|
||||
|
||||
#: tavrfusesform.fuselowgroup.caption
|
||||
msgid "Fuse Low Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.lockencheckbox.caption
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.bt16bits.caption
|
||||
msgid "Value (16Bits):"
|
||||
msgstr "Valeur (16Bits):"
|
||||
|
||||
#: tfillbuffform.bt8bits.caption
|
||||
msgid "Value (8Bits):"
|
||||
msgstr "Valeur (8Bits):"
|
||||
|
||||
#: tfillbuffform.btcancel.caption
|
||||
msgid "Cancel"
|
||||
msgstr "Abandon"
|
||||
|
||||
#: tfillbuffform.btfillbuff.caption
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btincr.caption
|
||||
msgid "Incremental values (00..FF)"
|
||||
msgstr "Valeurs incrémentales (00..FF)"
|
||||
|
||||
#: tfillbuffform.btrandom.caption
|
||||
msgid "Random values"
|
||||
msgstr "Valeurs aléatoires"
|
||||
|
||||
#: tfillbuffform.caption
|
||||
msgid "Fill Buffer"
|
||||
msgstr "Emplir le Buffer"
|
||||
|
||||
#: tfillbuffform.groupbox1.caption
|
||||
msgid "HEX Values"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.groupbox2.caption
|
||||
msgid "Limits"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.label2.caption
|
||||
msgid "Start Address:"
|
||||
msgstr "Addresse debut:"
|
||||
|
||||
#: tfillbuffform.label3.caption
|
||||
msgid "End Address:"
|
||||
msgstr "Addresse Fin:"
|
||||
|
||||
#: tmainform.appbutton.hint
|
||||
msgid "Access Protection Page (APP)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autoblankcheck.caption
|
||||
msgid "Blank Check"
|
||||
msgstr "Test effacement"
|
||||
|
||||
#: tmainform.autocheck.caption
|
||||
msgid "Verify"
|
||||
msgstr "Verifier"
|
||||
|
||||
#: tmainform.autoclear.caption
|
||||
msgid "Erase"
|
||||
msgstr "Effacement"
|
||||
|
||||
#: tmainform.autowrite.caption
|
||||
msgctxt "tmainform.autowrite.caption"
|
||||
msgid "Write"
|
||||
msgstr "Ecrire"
|
||||
|
||||
#: tmainform.avreepromtbutton.caption
|
||||
msgctxt "tmainform.avreepromtbutton.caption"
|
||||
msgid "EEPROM"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.avrfusesbutton.caption
|
||||
msgctxt "tmainform.avrfusesbutton.caption"
|
||||
msgid "Fuses"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.blankcheckmenuitem.caption
|
||||
msgid "BlankCheck"
|
||||
msgstr "Vérification effacement"
|
||||
|
||||
#: tmainform.buffermenuitem.caption
|
||||
msgid "Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.buttonblock.hint
|
||||
msgid "Unprotect"
|
||||
msgstr "Supprimer la protection"
|
||||
|
||||
#: tmainform.buttoncancel.hint
|
||||
msgid "Cancel"
|
||||
msgstr "Abandonner"
|
||||
|
||||
#: tmainform.buttonerase.hint
|
||||
msgid "Erase IC"
|
||||
msgstr "Effacement IC"
|
||||
|
||||
#: tmainform.buttonopenfile.hint
|
||||
msgid "Open File"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: tmainform.buttonread.hint
|
||||
msgctxt "tmainform.buttonread.hint"
|
||||
msgid "Read IC"
|
||||
msgstr "Lecture IC"
|
||||
|
||||
#: tmainform.buttonreadid.hint
|
||||
msgid "Detect IC"
|
||||
msgstr "Detecter Chip"
|
||||
|
||||
#: tmainform.buttonsavefile.hint
|
||||
msgctxt "tmainform.buttonsavefile.hint"
|
||||
msgid "Save File"
|
||||
msgstr "Sauver"
|
||||
|
||||
#: tmainform.buttonverify.hint
|
||||
msgid "Verify IC"
|
||||
msgstr "Verification IC"
|
||||
|
||||
#: tmainform.buttonwrite.hint
|
||||
msgctxt "tmainform.buttonwrite.hint"
|
||||
msgid "Write IC"
|
||||
msgstr "Programmer IC"
|
||||
|
||||
#: tmainform.checkbox_i2c_a2.hint
|
||||
msgctxt "tmainform.checkbox_i2c_a2.hint"
|
||||
msgid "Set device address"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.caption
|
||||
msgid "R/W Byte by Byte"
|
||||
msgstr "Lect. Ecr. par octet"
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.hint
|
||||
msgid "Read & Write, Byte by Byte"
|
||||
msgstr "Lecture/écriture octet par octet"
|
||||
|
||||
#: tmainform.clearlogmenuitem.caption
|
||||
msgid "Clear"
|
||||
msgstr "Effacer"
|
||||
|
||||
#: tmainform.comboaddrtype.hint
|
||||
msgid "Type of addressing"
|
||||
msgstr "Type d'adressage mémoire"
|
||||
|
||||
#: tmainform.comboboxavrspeed.hint
|
||||
msgid "AVR SPI frequency"
|
||||
msgstr "Fréquence SPI AVR"
|
||||
|
||||
#: tmainform.combochipsize.hint
|
||||
msgid "IC size in bytes"
|
||||
msgstr "Taille IC en bytes"
|
||||
|
||||
#: tmainform.combomwbitlen.hint
|
||||
msgid "Address Lenght in bits"
|
||||
msgstr "Longueur d'adresse en bits"
|
||||
|
||||
#: tmainform.combopagesize.hint
|
||||
msgid "Write Page size"
|
||||
msgstr "Taille de la page en écriture"
|
||||
|
||||
#: tmainform.copylogmenuitem.caption
|
||||
msgctxt "tmainform.copylogmenuitem.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Copier"
|
||||
|
||||
#: tmainform.i2cavancedbutton.caption
|
||||
msgid "i2cAvanced"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.labelpage.caption
|
||||
msgid "Page"
|
||||
msgstr "Page"
|
||||
|
||||
#: tmainform.labelsize.caption
|
||||
msgid "Size"
|
||||
msgstr "Taille"
|
||||
|
||||
#: tmainform.labeltypead.caption
|
||||
msgid "Address type"
|
||||
msgstr "Type d'adresse"
|
||||
|
||||
#: tmainform.i2cadvancedbutton.hint
|
||||
msgid "I2C advanced settings access"
|
||||
msgstr "Accès aux paramètres avancés I2C"
|
||||
|
||||
#: tmainform.labeladlength.caption
|
||||
msgid "Address lenght"
|
||||
msgstr "Longueur adresse"
|
||||
|
||||
#: tmainform.labelspicmd.caption
|
||||
msgid "SPI Family"
|
||||
msgstr "SPI famille"
|
||||
|
||||
#: tmainform.label_i2c_devaddr.caption
|
||||
msgid "Device address"
|
||||
msgstr "Device Address"
|
||||
|
||||
#: tmainform.menuarduinospiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Fréquence"
|
||||
|
||||
#: tmainform.menuavrispspiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Fréquence"
|
||||
|
||||
#: tmainform.menuchip.caption
|
||||
msgid "IC"
|
||||
msgstr "IC"
|
||||
|
||||
#: tmainform.menuclearbuff.caption
|
||||
msgid "Clear the Buffer"
|
||||
msgstr "RaZ Buffer"
|
||||
|
||||
#: tmainform.menucopytoclip.caption
|
||||
msgctxt "tmainform.menucopytoclip.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Copier"
|
||||
|
||||
#: tmainform.menufile.caption
|
||||
msgid "File"
|
||||
msgstr "Fichier"
|
||||
|
||||
#: tmainform.menufileopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: tmainform.menufilesave.caption
|
||||
msgid "Save"
|
||||
msgstr "Sauver"
|
||||
|
||||
#: tmainform.menufillbuffer.caption
|
||||
msgid "Fill the Buffer"
|
||||
msgstr "Emplir le Buffer"
|
||||
|
||||
#: tmainform.menufindchip.caption
|
||||
msgctxt "tmainform.menufindchip.caption"
|
||||
msgid "Search"
|
||||
msgstr "Recherche"
|
||||
|
||||
#: tmainform.menufindreplace.caption
|
||||
msgid "Search/Replace"
|
||||
msgstr "Trouver/Rempl."
|
||||
|
||||
#: tmainform.menugotooffset.caption
|
||||
msgctxt "tmainform.menugotooffset.caption"
|
||||
msgid "Goto address"
|
||||
msgstr "Aller à l'adresse"
|
||||
|
||||
#: tmainform.menuignorebusybit.caption
|
||||
msgid "Dont verify Busy bit"
|
||||
msgstr "Ne pas vérifier le Busy bit"
|
||||
|
||||
#: tmainform.menuitembenchmark.caption
|
||||
msgid "Benchmark"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menuitemeditsreg.caption
|
||||
msgid "Edit SREG"
|
||||
msgstr "Edition SREG"
|
||||
|
||||
#: tmainform.menuitemhardware.caption
|
||||
msgid "Hardware"
|
||||
msgstr "Matériel"
|
||||
|
||||
#: tmainform.menuitemreadsreg.caption
|
||||
msgid "Read SREG"
|
||||
msgstr "Lecture SREG"
|
||||
|
||||
#: tmainform.menuloaddev.caption
|
||||
msgid "Load last device when starts"
|
||||
msgstr "Utiliser le dernier composant au démarrage"
|
||||
|
||||
#: tmainform.menumicrowire.caption
|
||||
msgid "Microwire (soft)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menumwclock.caption
|
||||
msgctxt "tmainform.menumwclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Frequence"
|
||||
|
||||
#: tmainform.menuoptions.caption
|
||||
msgid "Options"
|
||||
msgstr "Options"
|
||||
|
||||
#: tmainform.menupastefromclip.caption
|
||||
msgid "Paste"
|
||||
msgstr "Coller"
|
||||
|
||||
#: tmainform.menuskipff.caption
|
||||
msgid "Skip FF"
|
||||
msgstr "Ne pas écrire les FF"
|
||||
|
||||
#: tmainform.menuspiclock.caption
|
||||
msgctxt "tmainform.menuspiclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Fréqence"
|
||||
|
||||
#: tmainform.mwswapbutton.caption
|
||||
msgid "Swap <-->"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.mwswapbutton.hint
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr "Permuter les bytes H et L"
|
||||
|
||||
#: tmainform.scriptsmenuitem.caption
|
||||
msgid "Скрипты"
|
||||
msgstr "Scripts"
|
||||
|
||||
#: tmainform.swapbytes.caption
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr "Permuter les bytes H et L"
|
||||
|
||||
#: tmainform.unprotbutton.caption
|
||||
msgid "UnProt"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.unprotbutton.hint
|
||||
msgid "Removes protections in APP"
|
||||
msgstr "Raz protections APP"
|
||||
|
||||
#: tsearchform.caption
|
||||
msgctxt "tsearchform.caption"
|
||||
msgid "Search"
|
||||
msgstr "Recherche"
|
||||
|
||||
#: tsearchform.casesensecheckbox.caption
|
||||
msgid "case sensitive"
|
||||
msgstr "Sensible à la case"
|
||||
|
||||
#: tsearchform.findbutton.caption
|
||||
msgid "Search"
|
||||
msgstr "Trouver"
|
||||
|
||||
#: tsearchform.hexcheckbox.caption
|
||||
msgid "Search HEX"
|
||||
msgstr "Recherche HEX"
|
||||
|
||||
#: tsearchform.rcancelbutton.caption
|
||||
msgctxt "tsearchform.rcancelbutton.caption"
|
||||
msgid "Cancel"
|
||||
msgstr "Abandon"
|
||||
|
||||
#: tsearchform.replaceallbutton.caption
|
||||
msgid "Repl. All"
|
||||
msgstr "Rempl. Tout"
|
||||
|
||||
#: tsearchform.replacebutton.caption
|
||||
msgctxt "tsearchform.replacebutton.caption"
|
||||
msgid "Replace"
|
||||
msgstr "Remplacer"
|
||||
|
||||
#: tsearchform.replacecheckbox.caption
|
||||
msgctxt "tsearchform.replacecheckbox.caption"
|
||||
msgid "Replace"
|
||||
msgstr "Remplacer"
|
||||
|
||||
#: tsearchform.searchlabel.caption
|
||||
msgid "Search:"
|
||||
msgstr "Rechercher:"
|
||||
|
||||
#: tsregeditform.buttonreadsreg.caption
|
||||
msgctxt "tsregeditform.buttonreadsreg.caption"
|
||||
msgid "Read"
|
||||
msgstr "Lire"
|
||||
|
||||
#: tsregeditform.buttonwritesreg.caption
|
||||
msgctxt "tsregeditform.buttonwritesreg.caption"
|
||||
msgid "Write"
|
||||
msgstr "Ecrire"
|
||||
|
||||
#: tchipsearchform.caption
|
||||
msgid "Search IC"
|
||||
msgstr "Recherche IC"
|
||||
|
||||
#: tchipsearchform.label1.caption
|
||||
msgid "Content:"
|
||||
msgstr "Le marquage contient:"
|
||||
|
||||
#: tchipsearchform.ChipSearchSelectButton.caption
|
||||
msgid "Select IC"
|
||||
msgstr "Selectionner IC"
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "File"
|
||||
msgstr "Fichier modifié"
|
||||
|
||||
#: tscripteditform.menuitemfile.caption
|
||||
msgid "File"
|
||||
msgstr "Fichier"
|
||||
|
||||
#: tscripteditform.menuitemopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: tscripteditform.menuitemrun.caption
|
||||
msgid "Execute"
|
||||
msgstr "Executer"
|
||||
|
||||
#: tscripteditform.menuitemsave.caption
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: tscripteditform.menuitemsaveas.caption
|
||||
msgid "Save as..."
|
||||
msgstr "Enregistrer sous..."
|
||||
|
||||
#: tscripteditform.menuitemsection.caption
|
||||
msgid "Section ="
|
||||
msgstr "Section ="
|
681
AsProgrammer/lang/ru.po
Normal file
|
@ -0,0 +1,681 @@
|
|||
#Русский
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: avrfuses.fus_str_msg
|
||||
msgid "AVR Fuses and Bit Lock "
|
||||
msgstr ""
|
||||
|
||||
#: msgstr.str_45page_powerof2
|
||||
msgid "Page size is power of 2!"
|
||||
msgstr "Установлен размер страницы кратный двум!"
|
||||
|
||||
#: msgstr.str_45page_std
|
||||
msgid "Default page size is set"
|
||||
msgstr "Установлен стандартный размер страницы"
|
||||
|
||||
#: msgstr.str_avr_init_error
|
||||
msgid "AVR initialisation failed"
|
||||
msgstr "Ошибка инициализации AVR"
|
||||
|
||||
#: msgstr.str_block_en
|
||||
msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet"
|
||||
msgstr "Возможно включена защита на запись. Нажмите кнопку \"Снять защиту\" и сверьтесь с даташитом"
|
||||
|
||||
#: msgstr.str_buff_empty
|
||||
msgid "No data in buffer"
|
||||
msgstr "Нет данных в буфере"
|
||||
|
||||
#: msgstr.str_changed
|
||||
msgid "Modified"
|
||||
msgstr "Изменен"
|
||||
|
||||
#: msgstr.str_changed_spi_speed
|
||||
msgid "Lower AVR SPI Speed"
|
||||
msgstr "Более низкая скорость AVR SPI"
|
||||
|
||||
#: msgstr.str_check_settings
|
||||
msgid "Check settings"
|
||||
msgstr "Проверьте настройки"
|
||||
|
||||
#: msgstr.str_choose_avr
|
||||
msgid "Choose an AVR Component in list"
|
||||
msgstr "выберите AVR в списке"
|
||||
|
||||
#: msgstr.str_choose_ic
|
||||
msgid "Choose a Component in list"
|
||||
msgstr "выберите компонент в списке"
|
||||
|
||||
#: msgstr.str_combo_warn
|
||||
msgid "IC will be erased and programmed. Continue?"
|
||||
msgstr "Чип будет стерт и перезаписан. Продолжить?"
|
||||
|
||||
#: msgstr.str_connection_error
|
||||
msgid "Connecting Error "
|
||||
msgstr "Ошибка подключения к "
|
||||
|
||||
#: msgstr.str_curr_hw
|
||||
msgid "Current programmer: "
|
||||
msgstr "Используется программатор: "
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "file modified"
|
||||
msgstr "файл изменён"
|
||||
|
||||
#: msgstr.str_dlg_fileext
|
||||
msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*"
|
||||
msgstr "файл |*.bin;*.hex|файл |*.bin|файл |*.hex|файлы |*.*"
|
||||
|
||||
#: msgstr.str_dlg_savefile
|
||||
msgid "Save changes?"
|
||||
msgstr "Сохранить изменения?"
|
||||
|
||||
#: msgstr.str_done
|
||||
msgid "Done"
|
||||
msgstr "Готово"
|
||||
|
||||
#: msgstr.str_erase_notice
|
||||
msgid "The process can take more than a minute on large flash memories!"
|
||||
msgstr "Процесс может длиться больше минуты на больших флешках!"
|
||||
|
||||
#: msgstr.str_erasing_flash
|
||||
msgid "Erasing memory..."
|
||||
msgstr "Стираю флэшку..."
|
||||
|
||||
#: msgstr.str_fail
|
||||
msgid "Unsuccess"
|
||||
msgstr "неуспех"
|
||||
|
||||
#: msgstr.str_goto_addr
|
||||
msgctxt "msgstr.str_goto_addr"
|
||||
msgid "Goto address"
|
||||
msgstr "Перейти по адресу"
|
||||
|
||||
#: msgstr.str_chip_no_answer
|
||||
msgid "IC not responding"
|
||||
msgstr "Микросхема не отвечает"
|
||||
|
||||
#: msgstr.str_id_unknown
|
||||
msgid "(Unknown ID)"
|
||||
msgstr "(Неизвестно)"
|
||||
|
||||
#: msgstr.str_mini_eeprom_support
|
||||
msgid "This firmware do not support I2C and 93Cxx"
|
||||
msgstr "Данная версия прошивки не поддерживает I2C и MW!"
|
||||
|
||||
#: msgstr.str_new_sreg
|
||||
msgid "New SREG: "
|
||||
msgstr "Стало Sreg: "
|
||||
|
||||
#: msgstr.str_not_found_hex
|
||||
msgid "Value not found"
|
||||
msgstr "Значение не найдено"
|
||||
|
||||
#: msgstr.str_no_eeprom_support
|
||||
msgid "This firmware do not support memory programming"
|
||||
msgstr "Данная версия прошивки не поддерживается!"
|
||||
|
||||
#: msgstr.str_no_hardw_support
|
||||
msgid "This hardware is not supported!"
|
||||
msgstr "Это оборудование не поддерживается!"
|
||||
|
||||
#: msgstr.str_old_sreg
|
||||
msgid "Old SREG: "
|
||||
msgstr "Было Sreg: "
|
||||
|
||||
#: msgstr.str_reading_flash
|
||||
msgid "Reading memory..."
|
||||
msgstr "Читаю флэшку..."
|
||||
|
||||
#: msgstr.str_script_no_section
|
||||
msgid "There is no section: "
|
||||
msgstr "Нет секции: "
|
||||
|
||||
#: msgstr.str_script_run_section
|
||||
msgid "Runs section: "
|
||||
msgstr "Выполняется секция: "
|
||||
|
||||
#: msgstr.str_script_sel_section
|
||||
msgid "Select section"
|
||||
msgstr "Выберите секцию"
|
||||
|
||||
#: msgstr.str_search_hex
|
||||
msgid "Search HEX value"
|
||||
msgstr "Поиск HEX значения"
|
||||
|
||||
#: msgstr.str_sel_chip
|
||||
msgid "Selected CHIP: "
|
||||
msgstr "выбранный микросхема: "
|
||||
|
||||
#: msgstr.str_set_speed_error
|
||||
msgid "Error setting SPI speed"
|
||||
msgstr "Ошибка установки скорости SPI"
|
||||
|
||||
#: msgstr.str_size
|
||||
msgid "Size: "
|
||||
msgstr "Размер: "
|
||||
|
||||
#: msgstr.str_specify_hex
|
||||
msgid "Use HEX numbers"
|
||||
msgstr "Укажите шестнадцатеричные числа"
|
||||
|
||||
#: msgstr.str_start_erase
|
||||
msgid "Erase IC?"
|
||||
msgstr "Точно стереть чип?"
|
||||
|
||||
#: msgstr.str_start_write
|
||||
msgid "Start programming?"
|
||||
msgstr "Начать запись?"
|
||||
|
||||
#: msgstr.str_time
|
||||
msgid "Execution time: "
|
||||
msgstr "Время выполнения: "
|
||||
|
||||
#: msgstr.str_success
|
||||
msgid "Success"
|
||||
msgstr "успех"
|
||||
|
||||
#: msgstr.str_usb_timeout
|
||||
msgid "USB_control_msg timeout!"
|
||||
msgstr "USB_control_msg отвалился по таймауту!"
|
||||
|
||||
#: msgstr.str_user_cancel
|
||||
msgid "Canceled by user"
|
||||
msgstr "Прервано пользователем"
|
||||
|
||||
#: msgstr.str_using_script
|
||||
msgid "Script: "
|
||||
msgstr "Используется скрипт: "
|
||||
|
||||
#: msgstr.str_verify
|
||||
msgid "Verify memory..."
|
||||
msgstr "Проверяю флэшку..."
|
||||
|
||||
#: msgstr.str_verify_error
|
||||
msgid "Verification error on address: "
|
||||
msgstr "Ошибка сравнения по адресу: "
|
||||
|
||||
#: msgstr.str_writing_flash
|
||||
msgid "Записываю флэшку..."
|
||||
msgstr "Записываю флэшку..."
|
||||
|
||||
#: msgstr.str_writing_flash_wchk
|
||||
msgid "Programming memory..."
|
||||
msgstr "Записываю флэшку с проверкой..."
|
||||
|
||||
#: msgstr.str_wrong_bytes_read
|
||||
msgid "Number of bytes readed not equal IC size"
|
||||
msgstr "Количество прочитанных байт не равно размеру флэшки"
|
||||
|
||||
#: msgstr.str_wrong_bytes_write
|
||||
msgid "Number of written bytes not equal IC size"
|
||||
msgstr "Количество записанных байт не равно размеру флэшки"
|
||||
|
||||
#: msgstr.str_wrong_file_size
|
||||
msgid "File size larger than IC size"
|
||||
msgstr "Размер файла больше размера чипа"
|
||||
|
||||
#: search.sfound
|
||||
msgid "Found: "
|
||||
msgstr "найденный: "
|
||||
|
||||
#: search.sreplaced
|
||||
msgid "Replaced: "
|
||||
msgstr "Заменены: "
|
||||
|
||||
#: tavrfusesform.btcancel.caption
|
||||
msgctxt "tavrfusesform.btcancel.caption"
|
||||
msgid "Cancel"
|
||||
msgstr "отменить"
|
||||
|
||||
#: tavrfusesform.btfusecalc.caption
|
||||
msgid "Fus Calc"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.btloaddeffuses.caption
|
||||
msgid "Load Default"
|
||||
msgstr "умолчанию"
|
||||
|
||||
#: tavrfusesform.btreadfuses.caption
|
||||
msgid "Read"
|
||||
msgstr "Читать"
|
||||
|
||||
#: tavrfusesform.btwritefuses.caption
|
||||
msgid "Write"
|
||||
msgstr "Записать"
|
||||
|
||||
#: tavrfusesform.fuseextgroup.caption
|
||||
msgid "Extended Fuse Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fusehighgroup.caption
|
||||
msgid "Fuse High Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.caption
|
||||
msgid "Lock Bit Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.fuselockgroup.hint
|
||||
msgctxt "tavrfusesform.fuselockgroup.hint"
|
||||
msgid "Read Only"
|
||||
msgstr "Режим только для чтения"
|
||||
|
||||
#: tavrfusesform.fuselowgroup.caption
|
||||
msgid "Fuse Low Byte"
|
||||
msgstr ""
|
||||
|
||||
#: tavrfusesform.lockencheckbox.caption
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.bt16bits.caption
|
||||
msgid "Value (16Bits):"
|
||||
msgstr "значени (16Bits):"
|
||||
|
||||
#: tfillbuffform.bt8bits.caption
|
||||
msgid "Value (8Bits):"
|
||||
msgstr "значени (8Bits):"
|
||||
|
||||
#: tfillbuffform.btcancel.caption
|
||||
msgid "Cancel"
|
||||
msgstr "отменить"
|
||||
|
||||
#: tfillbuffform.btfillbuff.caption
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.btincr.caption
|
||||
msgid "Incremental values (00..FF)"
|
||||
msgstr "Добавочные значения (00..FF)"
|
||||
|
||||
#: tfillbuffform.btrandom.caption
|
||||
msgid "Random values"
|
||||
msgstr "Случайные значения"
|
||||
|
||||
#: tfillbuffform.caption
|
||||
msgid "Fill Buffer"
|
||||
msgstr "Заполнить буфер"
|
||||
|
||||
#: tfillbuffform.groupbox1.caption
|
||||
msgid "HEX Values"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.groupbox2.caption
|
||||
msgid "Limits"
|
||||
msgstr ""
|
||||
|
||||
#: tfillbuffform.label2.caption
|
||||
msgid "Start Address:"
|
||||
msgstr "Начальный адрес:"
|
||||
|
||||
#: tfillbuffform.label3.caption
|
||||
msgid "End Address:"
|
||||
msgstr "Конечный адрес:"
|
||||
|
||||
#: tmainform.appbutton.hint
|
||||
msgid "Access Protection Page (APP)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.autoblankcheck.caption
|
||||
msgid "Blank Check"
|
||||
msgstr "Проверка на чистоту"
|
||||
|
||||
#: tmainform.autocheck.caption
|
||||
msgid "Verify"
|
||||
msgstr "Сравнить содержимое"
|
||||
|
||||
#: tmainform.autoclear.caption
|
||||
msgid "Erase"
|
||||
msgstr "Стереть"
|
||||
|
||||
#: tmainform.autowrite.caption
|
||||
msgctxt "tmainform.autowrite.caption"
|
||||
msgid "Write"
|
||||
msgstr "Записать"
|
||||
|
||||
#: tmainform.avreepromtbutton.caption
|
||||
msgctxt "tmainform.avreepromtbutton.caption"
|
||||
msgid "EEPROM"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.avrfusesbutton.caption
|
||||
msgctxt "tmainform.avrfusesbutton.caption"
|
||||
msgid "Fuses"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.blankcheckmenuitem.caption
|
||||
msgid "BlankCheck"
|
||||
msgstr "Проверка на чистоту"
|
||||
|
||||
#: tmainform.buffermenuitem.caption
|
||||
msgid "Buffer"
|
||||
msgstr "буфер"
|
||||
|
||||
#: tmainform.buttonblock.hint
|
||||
msgid "Unprotect"
|
||||
msgstr "Снять защиту"
|
||||
|
||||
#: tmainform.buttoncancel.hint
|
||||
msgid "Cancel"
|
||||
msgstr "Прервать текущею операцию"
|
||||
|
||||
#: tmainform.buttonerase.hint
|
||||
msgid "Erase IC"
|
||||
msgstr "Стереть"
|
||||
|
||||
#: tmainform.buttonopenfile.hint
|
||||
msgid "Open File"
|
||||
msgstr "Открыть файл"
|
||||
|
||||
#: tmainform.buttonread.hint
|
||||
msgctxt "tmainform.buttonread.hint"
|
||||
msgid "Read IC"
|
||||
msgstr "Читать чип"
|
||||
|
||||
#: tmainform.buttonreadid.hint
|
||||
msgid "Detect IC"
|
||||
msgstr "Определить чип"
|
||||
|
||||
#: tmainform.buttonsavefile.hint
|
||||
msgctxt "tmainform.buttonsavefile.hint"
|
||||
msgid "Save File"
|
||||
msgstr "Сохранить файл"
|
||||
|
||||
#: tmainform.buttonverify.hint
|
||||
msgid "Verify IC"
|
||||
msgstr "Сравнить содержимое"
|
||||
|
||||
#: tmainform.buttonwrite.hint
|
||||
msgctxt "tmainform.buttonwrite.hint"
|
||||
msgid "Write IC"
|
||||
msgstr "Записать"
|
||||
|
||||
#: tmainform.checkbox_i2c_a2.hint
|
||||
msgctxt "tmainform.checkbox_i2c_a2.hint"
|
||||
msgid "Set device address"
|
||||
msgstr "Установить адрес устройства"
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.caption
|
||||
msgid "R/W Byte by Byte"
|
||||
msgstr "Побайтовое чтение"
|
||||
|
||||
#: tmainform.checkbox_i2c_byteread.hint
|
||||
msgid "Read & Write, Byte by Byte"
|
||||
msgstr "Читать байт за байтом"
|
||||
|
||||
#: tmainform.clearlogmenuitem.caption
|
||||
msgid "Clear"
|
||||
msgstr "Очистить"
|
||||
|
||||
#: tmainform.comboaddrtype.hint
|
||||
msgid "Type of addressing"
|
||||
msgstr "Тип адресации к памяти"
|
||||
|
||||
#: tmainform.comboboxavrspeed.hint
|
||||
msgid "AVR SPI frequency"
|
||||
msgstr "SPI AVR частота"
|
||||
|
||||
#: tmainform.combochipsize.hint
|
||||
msgid "IC size in bytes"
|
||||
msgstr "Размер чипа в байтах"
|
||||
|
||||
#: tmainform.combomwbitlen.hint
|
||||
msgid "Address Lenght in bits"
|
||||
msgstr "Длинна адреса в битах"
|
||||
|
||||
#: tmainform.combopagesize.hint
|
||||
msgid "Write Page size"
|
||||
msgstr "Размер страницы в письменном виде"
|
||||
|
||||
#: tmainform.copylogmenuitem.caption
|
||||
msgctxt "tmainform.copylogmenuitem.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Копировать"
|
||||
|
||||
#: tmainform.i2cavancedbutton.caption
|
||||
msgid "i2cAvanced"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.labelpage.caption
|
||||
msgid "Page"
|
||||
msgstr "Страница"
|
||||
|
||||
#: tmainform.labelsize.caption
|
||||
msgid "Size"
|
||||
msgstr "Размер"
|
||||
|
||||
#: tmainform.labeltypead.caption
|
||||
msgid "Address type"
|
||||
msgstr "Тип адреса"
|
||||
|
||||
#: tmainform.i2cadvancedbutton.hint
|
||||
msgid "I2C advanced settings access"
|
||||
msgstr "Доступ к расширенным настройкам I2C"
|
||||
|
||||
#: tmainform.labeladlength.caption
|
||||
msgid "Address lenght"
|
||||
msgstr "Длина адреса"
|
||||
|
||||
#: tmainform.labelspicmd.caption
|
||||
msgid "SPI Family"
|
||||
msgstr "Команды SPI"
|
||||
|
||||
#: tmainform.label_i2c_devaddr.caption
|
||||
msgid "Device address"
|
||||
msgstr "Адрес устройства"
|
||||
|
||||
#: tmainform.menuarduinospiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Частота"
|
||||
|
||||
#: tmainform.menuavrispspiclock.caption
|
||||
msgid "Clock"
|
||||
msgstr "Частота"
|
||||
|
||||
#: tmainform.menuchip.caption
|
||||
msgid "IC"
|
||||
msgstr "Микросхема"
|
||||
|
||||
#: tmainform.menuclearbuff.caption
|
||||
msgid "Clear the Buffer"
|
||||
msgstr "Очистить буфер"
|
||||
|
||||
#: tmainform.menucopytoclip.caption
|
||||
msgctxt "tmainform.menucopytoclip.caption"
|
||||
msgid "Copy"
|
||||
msgstr "Копировать"
|
||||
|
||||
#: tmainform.menufile.caption
|
||||
msgid "File"
|
||||
msgstr "файл"
|
||||
|
||||
#: tmainform.menufileopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: tmainform.menufilesave.caption
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
#: tmainform.menufillbuffer.caption
|
||||
msgid "Fill the Buffer""
|
||||
msgstr "Заполните буфер"
|
||||
|
||||
#: tmainform.menufindchip.caption
|
||||
msgctxt "tmainform.menufindchip.caption"
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: tmainform.menufindreplace.caption
|
||||
msgid "Search/Replace"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: tmainform.menugotooffset.caption
|
||||
msgctxt "tmainform.menugotooffset.caption"
|
||||
msgid "Goto address"
|
||||
msgstr "Перейти по адресу"
|
||||
|
||||
#: tmainform.menuignorebusybit.caption
|
||||
msgid "Dont verify Busy bit"
|
||||
msgstr "Не проверять Busy бит"
|
||||
|
||||
#: tmainform.menuitembenchmark.caption
|
||||
msgid "Benchmark"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menuitemeditsreg.caption
|
||||
msgid "Edit SREG"
|
||||
msgstr "Изменить SREG"
|
||||
|
||||
#: tmainform.menuitemhardware.caption
|
||||
msgid "Hardware"
|
||||
msgstr "Программатор"
|
||||
|
||||
#: tmainform.menuitemreadsreg.caption
|
||||
msgid "Read SREG"
|
||||
msgstr "Прочитать SREG"
|
||||
|
||||
#: tmainform.menuloaddev.caption
|
||||
msgid "Load last device when starts"
|
||||
msgstr "Используйте последний чип при запуске"
|
||||
|
||||
|
||||
#: tmainform.menumicrowire.caption
|
||||
msgid "Microwire (soft)"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.menumwclock.caption
|
||||
msgctxt "tmainform.menumwclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Частота"
|
||||
|
||||
#: tmainform.menuoptions.caption
|
||||
msgid "Options"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: tmainform.menupastefromclip.caption
|
||||
msgid "Paste"
|
||||
msgstr "вставить"
|
||||
|
||||
#: tmainform.menuskipff.caption
|
||||
msgid "Skip FF"
|
||||
msgstr "Не писать FF"
|
||||
|
||||
#: tmainform.menuspiclock.caption
|
||||
msgctxt "tmainform.menuspiclock.caption"
|
||||
msgid "Clock"
|
||||
msgstr "Частота"
|
||||
|
||||
#: tmainform.mwswapbutton.caption
|
||||
msgid "Swap <-->"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.mwswapbutton.hint
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr "Поменять местами байты High и Low"
|
||||
|
||||
#: tmainform.scriptsmenuitem.caption
|
||||
msgid "Скрипты"
|
||||
msgstr "Скрипты"
|
||||
|
||||
#: tmainform.swapbytes.caption
|
||||
msgid "Swap High and Low Bytes"
|
||||
msgstr "Поменять местами байты в буфере"
|
||||
|
||||
#: tmainform.unprotbutton.caption
|
||||
msgid "UnProt"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.unprotbutton.hint
|
||||
msgid "Removes protections in APP"
|
||||
msgstr "Снять защиту"
|
||||
|
||||
#: tsearchform.caption
|
||||
msgctxt "tsearchform.caption"
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: tsearchform.casesensecheckbox.caption
|
||||
msgid "case sensitive"
|
||||
msgstr "Учитывать регистр"
|
||||
|
||||
#: tsearchform.findbutton.caption
|
||||
msgid "Search"
|
||||
msgstr "Найти"
|
||||
|
||||
#: tsearchform.hexcheckbox.caption
|
||||
msgid "Search HEX"
|
||||
msgstr "Искать HEX значение"
|
||||
|
||||
#: tsearchform.rcancelbutton.caption
|
||||
msgctxt "tsearchform.rcancelbutton.caption"
|
||||
msgid "Cancel"
|
||||
msgstr "Прервать"
|
||||
|
||||
#: tsearchform.replaceallbutton.caption
|
||||
msgid "Repl. All"
|
||||
msgstr "Отв. все"
|
||||
|
||||
#: tsearchform.replacebutton.caption
|
||||
msgctxt "tsearchform.replacebutton.caption"
|
||||
msgid "Replace"
|
||||
msgstr "Заменить"
|
||||
|
||||
#: tsearchform.replacecheckbox.caption
|
||||
msgid "Replace:"
|
||||
msgstr "Заменить:"
|
||||
|
||||
#: tsearchform.searchlabel.caption
|
||||
msgid "Search:"
|
||||
msgstr "Искать:"
|
||||
|
||||
#: tsregeditform.buttonreadsreg.caption
|
||||
msgctxt "tsregeditform.buttonreadsreg.caption"
|
||||
msgid "Read"
|
||||
msgstr "Прочитать"
|
||||
|
||||
#: tsregeditform.buttonwritesreg.caption
|
||||
msgctxt "tsregeditform.buttonwritesreg.caption"
|
||||
msgid "Write"
|
||||
msgstr "Записать"
|
||||
|
||||
#: tchipsearchform.caption
|
||||
msgid "Search IC"
|
||||
msgstr "Поиск микросхемы"
|
||||
|
||||
#: tchipsearchform.label1.caption
|
||||
msgid "Content:"
|
||||
msgstr "Маркировка содержит:"
|
||||
|
||||
#: tchipsearchform.ChipSearchSelectButton.caption
|
||||
msgid "Select IC"
|
||||
msgstr "Выбрать микросхему"
|
||||
|
||||
#: msgstr.str_dlg_filechgd
|
||||
msgid "File modified"
|
||||
msgstr "файл изменён"
|
||||
|
||||
#: tscripteditform.menuitemfile.caption
|
||||
msgid "File"
|
||||
msgstr "Файл"
|
||||
|
||||
#: tscripteditform.menuitemopen.caption
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: tscripteditform.menuitemrun.caption
|
||||
msgid "Execute"
|
||||
msgstr "Выполнить"
|
||||
|
||||
#: tscripteditform.menuitemsave.caption
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
#: tscripteditform.menuitemsaveas.caption
|
||||
msgid "Save as..."
|
||||
msgstr "Сохранить как..."
|
||||
|
||||
#: tscripteditform.menuitemsection.caption
|
||||
msgid "Section ="
|
||||
msgstr "Секция ="
|
BIN
AsProgrammer/libusb0.dll
Normal file
176
AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas
Normal file
|
@ -0,0 +1,176 @@
|
|||
// designed for GIGADEVICE GD25Q64 and GD25Q128
|
||||
// READ / WRITE / ERASE Security REGISTERS
|
||||
// script can be adapted for other brand and models by changing 'RegSize' value in each section
|
||||
{$ READ_JEDEC_ID}
|
||||
begin
|
||||
ID:= CreateByteArray(3);
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read JEDEC ID');
|
||||
|
||||
// read ID to test installation
|
||||
SPIWrite (0, 1, $9F);
|
||||
SPIRead(1, 3, ID);
|
||||
|
||||
logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2));
|
||||
LogPrint ('End read JEDEC ID');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_1_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read GD25Q64_128 security register #1');
|
||||
RegSize :=1024;
|
||||
// read register 1
|
||||
SPIWrite (0, 5, $48, $00, $10, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read GD25Q64_128 security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_2_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read GD25Q64_128 security register #2');
|
||||
RegSize :=1024;
|
||||
// read register 2
|
||||
SPIWrite (0, 5, $48, $00, $20, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read GD25Q64_128 security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_3_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read GD25Q64_128 security register #3');
|
||||
RegSize :=1024;
|
||||
// read register 3
|
||||
SPIWrite (0, 5, $48, $00, $30, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read GD25Q64_128 security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_1_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase GD25Q64_128 security register #1');
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 1
|
||||
SPIWrite (1, 4, $44, $00, $10, $00);
|
||||
|
||||
LogPrint ('End Erase GD25Q64_128 security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_2_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase GD25Q64_128 security register #2');
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 2
|
||||
SPIWrite (1, 4, $44, $00, $20, $00);
|
||||
|
||||
LogPrint ('End Erase GD25Q64_128 security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_3_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase GD25Q64_128 security register #3');
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 3
|
||||
SPIWrite (1, 4, $44, $00, $30, $00);
|
||||
|
||||
LogPrint ('End Erase GD25Q64_128 security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_1_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write GD25Q64_128 security register #1');
|
||||
RegSize :=1024;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 1
|
||||
SPIWrite (0, 4, $42, $00, $10, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write GD25Q64_128 security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_2_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write GD25Q64_128 security register #2');
|
||||
RegSize :=1024;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 2
|
||||
SPIWrite (0, 4, $42, $00, $20, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write GD25Q64_128 security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_3_GD25Q64_128}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write GD25Q64_128 security register #3');
|
||||
RegSize :=1024;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 3
|
||||
SPIWrite (0, 4, $42, $00, $30, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write GD25Q64_128 security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
456
AsProgrammer/scripts/README.TXT
Normal file
|
@ -0,0 +1,456 @@
|
|||
|
||||
1. Description
|
||||
-------------------
|
||||
|
||||
The module PASCALC.DCU is the Pascal-like language interpreter for Delphi.
|
||||
The basic differences from standard Pascal the following:
|
||||
|
||||
- All variables stored as variants.
|
||||
|
||||
- It's no need to declare variables, labels and functions. PASCALC creates
|
||||
variables dynamically on first assignment. Variable type depends on the
|
||||
last value assigned, type checking is not carried out.
|
||||
|
||||
- Expressions syntax:
|
||||
|
||||
Arithmetic operators: +, -, *, /, ^ (power), SHL, SHL
|
||||
Bitwise operators: BITOR,BITAND,BITXOR,BITNOT
|
||||
Logical operators: >, <, >=, <=, =, <>, AND, OR, NOT,
|
||||
constants TRUE and FALSE.
|
||||
Operators precedence standard, you can use parentheses.
|
||||
|
||||
|
||||
- Statements supported:
|
||||
BEGIN... END
|
||||
IF... THEN... ELSE
|
||||
CASE
|
||||
FOR... TO/DOWNTO... DO
|
||||
WHILE... DO
|
||||
REPEAT... UNTIL
|
||||
BREAK
|
||||
CONTINUE
|
||||
GOTO
|
||||
EXIT
|
||||
USES
|
||||
INCLUDE
|
||||
|
||||
- All reserved words are declared in interface section as string array.
|
||||
You can change them to anyone others. All identifiers should be different
|
||||
(except assignment and equation, they may be the same).
|
||||
|
||||
- Multi-dimensional arrays supported. Array items are variables whose names
|
||||
consist from array name and indexes (in brackets). Array items properties
|
||||
same as the simple variables. It's no need to declare arrays. Array index
|
||||
continuity is not requred. It's possible to access string as char array.
|
||||
You can assign chars or numbers in range 0..255 to string characters.
|
||||
Array name should be unique, simple variable MyArr and array item MyArr[1]
|
||||
can't exist at the same time. This rule allows to distinguish access to
|
||||
1-st character of string variable MyArr (MyArr[1]) from the accees to
|
||||
the first item of array MyArr. To access character of string array item,
|
||||
character index should be written in brackets after item name, for example
|
||||
MyArr[1,2][3].
|
||||
|
||||
- All build-in functions are user-defined. Module pasfunc.pas contain
|
||||
example of PASCALC implementations for common Delphi functions. You can use
|
||||
this functions and write your own implementations for necessary functions.
|
||||
There is no need to declare parameters for user-defined functions, therefore
|
||||
it's types and amount are not limited. If necessary you can provide type
|
||||
checking inside function code. Interpreter calculates all parameter values
|
||||
and creates temporary values list (TVarList). Names of var-parameters in this
|
||||
list are 'VAR', otherwise 'VALUE'. After function call interpreter updates
|
||||
values for var-parameters. Function result type not checked, one function can
|
||||
return number as well as string. Functions can be called as procedures (without
|
||||
result usage).
|
||||
|
||||
- Procedures and functions (in sense of the subroutines on interpreter language)
|
||||
are supported. The function heading specifies only names of formal parameters,
|
||||
without parameters types and pass method (var or value). Also, function's result
|
||||
types are not declared. To return function result you should assign value to
|
||||
variable "result".
|
||||
|
||||
If actual parameter is variable (not expression), it considered as var-parameter.
|
||||
In this case assigning new value to this parameter inside procedure or function
|
||||
will affect the actual parameter variable.
|
||||
|
||||
At the same time, all interpreter global variables inside a function or procedures
|
||||
looks like local variables, with the same initial values as global ones.
|
||||
You can change this values inside procedures (functions), but it's don't affect
|
||||
the global variables. All new variables created inside procedures and functions
|
||||
are local, and will be destroyed after exiting.
|
||||
Therefore, it is possible to use any names for local variables, without conflicts
|
||||
with the global variables.
|
||||
|
||||
For libraries implementation, it is possible to use operators USES and INCLUDE.
|
||||
|
||||
Syntax: USES 'filename';
|
||||
INCLUDE 'filename';
|
||||
|
||||
INCLIDE and USES are parsed by pre-processor before script execution.
|
||||
INCLUDE inserts text from file 'filename' into the script, USES loads
|
||||
procedures and functions declarations.
|
||||
|
||||
|
||||
2. License
|
||||
----------
|
||||
|
||||
This software is provided as it is, without any kind of warranty given.
|
||||
The author can not be held responsible for any kind of damage, problems etc,
|
||||
arised from using this software. PASCALC interpreter is shareware product.
|
||||
Unregistered version has no time or functionality limitations, but can
|
||||
show info screen.
|
||||
|
||||
If you want get source code, you should register PASCALC and get registration code.
|
||||
Use your registration code as password for source archive (Source\pascsrc.zip).
|
||||
|
||||
Address for online registration (price $20):
|
||||
https://www.regnow.com/softsell/nph-softsell.cgi?item=2608-2
|
||||
|
||||
You can modify PASCALC source code as you need, distribute executable files
|
||||
compiled with PASCALC source. But you can't distribute original or modified
|
||||
PASCALC source code, .DCU units or libraries based on PASCALC source code.
|
||||
|
||||
|
||||
3. PASCALC inteface
|
||||
-------------------
|
||||
|
||||
|
||||
unit pascalc;
|
||||
|
||||
{$F+,B-,R-}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Math;
|
||||
|
||||
type TToken =
|
||||
(tEMPTY, tVR, tCON, tTRUE, tFALSE,
|
||||
tEQU, tOR, tAND, tNOT, tXOR,
|
||||
tCOMMA, tLBL, tNEQ, tGT, tLS,
|
||||
tGTE, tLSE, tADD, tSUB, tMUL,
|
||||
tDIV, tPWR, tLBR, tRBR, tLARR,
|
||||
tRARR, tSEMI, tREM, tREMB, tREME,
|
||||
tASSIGN, tBEGIN, tEND, tIF, tTHEN,
|
||||
tELSE, tFOR, tTO, tDOWNTO, tDO,
|
||||
tWHILE, tREPEAT, tUNTIL, tBREAK, tCONTINUE,
|
||||
tEXIT, tGOTO, tSHL, tSHR, tPROC,
|
||||
tFUNCT, tUSES, tINCLUDE, tCASE, tOF,
|
||||
tCOMMA2);
|
||||
|
||||
type TTokenSet = set of TToken;
|
||||
|
||||
const
|
||||
ResWords : array[TToken] of string[10] =
|
||||
('', '', '', 'TRUE', 'FALSE',
|
||||
'=', 'OR', 'AND', 'NOT', 'XOR',
|
||||
',', ':', '<>', '>', '<',
|
||||
'>=', '<=', '+', '-', '*',
|
||||
'/', '^', '(', ')', '[',
|
||||
']', ';', '//', '{', '}',
|
||||
':=', 'BEGIN', 'END', 'IF', 'THEN',
|
||||
'ELSE', 'FOR', 'TO', 'DOWNTO', 'DO',
|
||||
'WHILE', 'REPEAT', 'UNTIL', 'BREAK', 'CONTINUE',
|
||||
'EXIT', 'GOTO', 'SHL', 'SHR', 'PROCEDURE',
|
||||
'FUNCTION', 'USES', 'INCLUDE', 'CASE', 'OF',
|
||||
'..');
|
||||
|
||||
const
|
||||
Alpha : set of char = ['_','0'..'9','a'..'z','A'..'Z','à'..'ÿ','¸','À'..'ß','¨'];
|
||||
StrDelimiter : char = '''';
|
||||
DecimalPoint : char = '.';
|
||||
TokenDelimiter : char = #127;
|
||||
|
||||
|
||||
type TVar = record
|
||||
Name : string;
|
||||
Value : variant;
|
||||
end;
|
||||
|
||||
type TPVar = ^TVar;
|
||||
|
||||
type TVarList = class (TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddVar(V:TVar) : boolean;
|
||||
function AddValue(N:string; V:variant) : boolean;
|
||||
function VarExist(N:string):boolean;
|
||||
function VarIndex(N:string):integer;
|
||||
function VarByName(N:string;var V:TVar) : boolean;
|
||||
function SetVar(V:TVar) : boolean;
|
||||
function SetValue(N:string; V:variant) : boolean;
|
||||
procedure CopyTo(VL:TVarList);
|
||||
end;
|
||||
|
||||
type TPVarList = ^TVarList;
|
||||
|
||||
type PProcessProc = procedure;
|
||||
|
||||
type PFunction = function(Sender:TObject; var A:TVarList; var R:TVar) : boolean;
|
||||
|
||||
type TFunc = record
|
||||
Name : string;
|
||||
Func : Pointer;
|
||||
end;
|
||||
|
||||
type TPFunc = ^TFunc;
|
||||
|
||||
type TFuncList = class (TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddFunction(N:string; F:Pointer) : boolean;
|
||||
end;
|
||||
|
||||
type TProcedure = record
|
||||
Name : string;
|
||||
Body : string;
|
||||
Params : string;
|
||||
Result : boolean;
|
||||
end;
|
||||
|
||||
type TPProcedure = ^TProcedure;
|
||||
|
||||
type TProcList = class(TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddProc(Proc:TProcedure):boolean;
|
||||
function ProcIndex(Name:string):integer;
|
||||
function ProcByName(Name:string; var Proc:TProcedure):boolean;
|
||||
end;
|
||||
|
||||
|
||||
type TPasCalc = class
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure ClearVars;
|
||||
function VarCount : integer;
|
||||
function VarIndex(N:string) : integer;
|
||||
function VarByName(N:string; var V:TVar) : boolean;
|
||||
function VarByIndex(I:integer; var V:TVar) : boolean;
|
||||
function SetVar(V:TVar) : boolean;
|
||||
function SetValue(N:string; V:variant):boolean;
|
||||
procedure ClearFuncs;
|
||||
function SetFunction(N:string; F:Pointer) : boolean;
|
||||
procedure SetProcessProc(P:Pointer);
|
||||
function Parse(S:string) : string;
|
||||
function Calculate(S:string; var R:TVar) : boolean;
|
||||
function Execute(S:string):boolean;
|
||||
private
|
||||
Expr : string;
|
||||
ExprIndex : integer;
|
||||
Token : string;
|
||||
TokenCode : TToken;
|
||||
|
||||
BlockLevel : integer;
|
||||
BlockCmd : TToken;
|
||||
GotoLabel : string;
|
||||
|
||||
VarList : TVarList;
|
||||
FuncList : TFuncList;
|
||||
ProcList : TProcList;
|
||||
|
||||
ProcessProc : PProcessProc;
|
||||
|
||||
LastString : string;
|
||||
LastParsed : string;
|
||||
|
||||
procedure Clear;
|
||||
procedure Process;
|
||||
procedure Error(Msg,Line:string; Code:integer);
|
||||
procedure Level1(var R:TVar);
|
||||
procedure Level2(var R:TVar);
|
||||
procedure Level3(var R:TVar);
|
||||
procedure Level4(var R:TVar);
|
||||
procedure Level5(var R:TVar);
|
||||
procedure Level6(var R:TVar);
|
||||
procedure Level7(var R:TVar);
|
||||
procedure Level8(var R:TVar);
|
||||
procedure Arith(o : TToken; var R,H:TVar);
|
||||
procedure Unary(o : TToken; var R:TVar);
|
||||
function GetIndex(S:string; var Index:integer; var T:TToken) : string;
|
||||
function GetFuncParams(S:string; var Index:integer) : string;
|
||||
function FindFunc(N:string) : integer;
|
||||
function FindArray(N:string) : boolean;
|
||||
procedure SetVarDirect(var R:TVar);
|
||||
function CallFunc(N:string; A:string; var V:TVar) : boolean;
|
||||
function CallProc(N:string; A:string; var V:TVar) : boolean;
|
||||
function GetTextToken(S: string; var Index : integer; var Code : TToken) : string;
|
||||
function TokenStr(T:TToken;S:string) : string;
|
||||
function GetToken(S:string; var Index : integer; var Code : TToken) : string;
|
||||
function GetTokenCode(S: string; var Index:integer; var Code:TToken) : integer;
|
||||
function GetTokenLine(S:string; var Index:integer; var Code:TToken;
|
||||
StopToken:TTokenSet) : string;
|
||||
function NextToken(S:string; Index:integer) : TToken;
|
||||
function GetOperator(Txt:string; var Index : integer; EndToken:TTokenSet) : string;
|
||||
function ParseOperator(Txt:string; var Cmd,Line,Lbl : string) : TToken;
|
||||
function DelRemarks(S:string) : string;
|
||||
function UnParse(S:string; Show:boolean) : string;
|
||||
function PreProcess(Txt:string):string;
|
||||
function Calc(S:string; var R:TVar) : boolean;
|
||||
procedure Exec(Txt:string);
|
||||
procedure DoSet(CmdLine,Cmd,Line:string);
|
||||
procedure DoIf(CmdLine,Line:string);
|
||||
procedure DoBegin(CmdLine,Line:string);
|
||||
procedure DoFor(CmdLine,Line:string);
|
||||
procedure DoBreak(CmdLine,Line:string);
|
||||
procedure DoContinue(CmdLine,Line:string);
|
||||
procedure DoExit(CmdLine,Line:string);
|
||||
procedure DoWhile(CmdLine,Line:string);
|
||||
procedure DoRepeat(CmdLine,Line:string);
|
||||
procedure DoGoto(CmdLine,Line:string);
|
||||
procedure DoCase(CmdLine,Line:string);
|
||||
public
|
||||
Stop : boolean;
|
||||
ErrCode : integer;
|
||||
ErrMsg : string;
|
||||
ErrLine : string;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
4. Functions (unit PASFUNC.PAS)
|
||||
------------------------------
|
||||
|
||||
// String functions
|
||||
|
||||
Val
|
||||
IntToStr
|
||||
StrToInt
|
||||
FloatToStr
|
||||
StrToFloat
|
||||
Copy
|
||||
Pos
|
||||
Length
|
||||
Insert
|
||||
Delete
|
||||
Trim
|
||||
TrimLeft
|
||||
TrimRight
|
||||
UpperCase
|
||||
LowerCase
|
||||
Format
|
||||
|
||||
// DateTime functions
|
||||
|
||||
Now
|
||||
Date
|
||||
Time
|
||||
DateToStr
|
||||
StrToDate
|
||||
TimeToStr
|
||||
StrToTime
|
||||
FormatDateTime
|
||||
DayOfWeek
|
||||
IncMonth
|
||||
DecodeDate
|
||||
DecodeTime
|
||||
EncodeDate
|
||||
EncodeTime
|
||||
YearDays
|
||||
YearFrac
|
||||
|
||||
// Math functions
|
||||
Abs
|
||||
Int
|
||||
Frac
|
||||
Round
|
||||
Ceil
|
||||
Floor
|
||||
Trunc
|
||||
Sin
|
||||
Cos
|
||||
Tan
|
||||
ArcSin
|
||||
ArcCos
|
||||
ArcTan
|
||||
Exp
|
||||
Ln
|
||||
IntPower
|
||||
Sqr
|
||||
Sqrt
|
||||
Min
|
||||
Max
|
||||
Inc
|
||||
Dec
|
||||
|
||||
// Variable handling functions.
|
||||
// Allows get or set variable value by calculated variable name.
|
||||
|
||||
SetVar
|
||||
GetVar
|
||||
|
||||
// Misc functions
|
||||
|
||||
Decode (simular with the Oracle Decode function)
|
||||
|
||||
|
||||
5. Interpreter usage
|
||||
--------------------
|
||||
|
||||
See usage example in demo program (demo.dpr). At first you should write
|
||||
user-defined functions you want to use in scripts and expressions. Function
|
||||
should set result value (field Value of variable R:TVar) and return true.
|
||||
On errors (wrong parameters, etc) function should return false. In your
|
||||
program you should create an instance of TPasCalc class.
|
||||
Then associate functions with names (TPasCalc.SetFunction).
|
||||
To register pasfunc.pas function library, call SetFunctions.
|
||||
You can set predefined variables (TPasCalc.SetVarNum or TPasCalc.SetVarStr).
|
||||
Method TPasCalc.Calculate evaluates expression and returns result in variable
|
||||
R:TVar. Method TPasCalc.Execute executes script and fills variable list.
|
||||
You can access variables using TPasCalc.VarCount, TPasCalc.VarByIndex or
|
||||
TPasCalc.VarByName methods. TPasCalc.ErrCode, TPasCalc.ErrMsg and
|
||||
TPasCalc.ErrLine indicates last error code, error message and line that
|
||||
raises error. Variable list not cleared in Calculate and Execute methods.
|
||||
You can reset all variables using TPasCalc.ClearVars. TPasCalc.ClearFuncs
|
||||
resets function list. Method TPasCalc.SetProcessProc sets pointer to
|
||||
user-defined callback procedure. Interpreter calls this procedure in internal
|
||||
cycles. In this procedure you can check some condition (timeout for example)
|
||||
and break execution by assigning TPasCalc.Stop:=TRUE. It is useful to call
|
||||
Application.ProcessMessages in this procedure. If callback procedure not
|
||||
assigned, interpreter uses Process method instead. Process method performs
|
||||
only messages processing.
|
||||
To improve perfomance you can prepare script using Parse method, and then
|
||||
execute previously prepared script.
|
||||
|
||||
|
||||
6. Error codes
|
||||
--------------
|
||||
|
||||
0 - O.K.
|
||||
1 - Error in expression
|
||||
2 - Unpaired parentheses
|
||||
3 - Variable not found
|
||||
4 - Invalid variable/function/procedure name
|
||||
5 - Invalid typecast
|
||||
6 - Invalid string constant
|
||||
7 - Incorrect function call
|
||||
8 - Function not found
|
||||
9 - Invalid operator
|
||||
10 - END expected
|
||||
11 - Too many END
|
||||
12 - TO or DOWNTO expected
|
||||
13 - FOR-loop variable expected
|
||||
14 - DO expected
|
||||
15 - BREAK outside a loop
|
||||
16 - UNTIL expected
|
||||
17 - Too many UNTIL
|
||||
18 - Label not found
|
||||
19 - Index out of range
|
||||
20 - Value out of range
|
||||
21 - ']' expected
|
||||
22 - Too many '['
|
||||
23 - Division by zero
|
||||
24 - Variable or array name duplicated
|
||||
25 - File îpen error
|
||||
26 - Function must return result
|
||||
27 - CASE without OF
|
||||
28 - Too many ELSE in CASE statement
|
||||
29 - Case range expected
|
||||
|
||||
|
||||
7. Author
|
||||
---------
|
||||
|
||||
Alex Boiko
|
||||
alexboiko@mtu-net.ru
|
||||
http://alexboiko.da.ru
|
||||
http://alexboiko.chat.ru
|
463
AsProgrammer/scripts/README_RU.TXT
Normal file
|
@ -0,0 +1,463 @@
|
|||
1. Описание
|
||||
-----------
|
||||
|
||||
Модуль pascalc.dcu представляет собой интерпретатор Pascal - подобного
|
||||
языка для Delphi. Основные отличия его от стандартного Паскаля следующие:
|
||||
|
||||
- Для значений переменных используеися тип Variant, что позволяет хранить
|
||||
разнообразные типы данных.
|
||||
|
||||
- Переменные обьявлять не надо, они при небходимости создаются динамически
|
||||
при присваивании им значений. Тип определяется по последнему присвоенному
|
||||
значению, типовый контроль при присваивании не выполняется. То есть если
|
||||
существующей числовой переменной присвоить строку, ее тип изменится.
|
||||
Символам строки можно присваивать числовые значения в диапазоне 0..255 или
|
||||
символы (строки длиной 1).
|
||||
|
||||
- В выражениях поддерживаются следующие операции:
|
||||
арифметические: +, -, *, /, ^ (возведение в степень), SHL, SHR
|
||||
операции с битами: BITOR,BITAND,BITXOR,BITNOT
|
||||
логические: >, <, >=, <=, =, <>, AND, OR, NOT, константы TRUE и FALSE.
|
||||
Tакже можно использовать скобки. Порядок выполненния операций стандартный.
|
||||
|
||||
- В интерпретаторе поддерживаются операторы:
|
||||
BEGIN ... END
|
||||
IF ... THEN ... ELSE
|
||||
CASE
|
||||
FOR ... TO/DOWNTO ... DO
|
||||
WHILE ... DO
|
||||
REPEAT ... UNTIL
|
||||
CONTINUE
|
||||
BREAK
|
||||
GOTO
|
||||
EXIT
|
||||
USES
|
||||
INCLUDE
|
||||
|
||||
- Все зарезервированные слова объявлены в interface как массив строк.
|
||||
При желании вы можете изменить их на любые другие, например сделать
|
||||
русскими. Допускаются одинаковые операторы присваивания и равенства.
|
||||
Интерпретатор может сам различать их в зависимости от контекста. Все
|
||||
остальные зарезервированные слова должны отличаться друг от друга.
|
||||
|
||||
- Поддерживаются многомерные массивы, которые хранятся как набор переменных.
|
||||
Имена таких переменных состоят из имени массива и индексов в квадратных
|
||||
скобках. Имя массива должно быть уникальным, не допускается одновременное
|
||||
существование обычной переменной и переменной массива с тем же именем.
|
||||
(например переменная с именем MyArr и элемент массива MyArr[1]).
|
||||
Так как элементы массивов хранятся как обычные переменные, на них
|
||||
распространяются все правила применимые к обычным переменнм. Массивы не надо
|
||||
обьявлять, элементы одного массива могут хранить как строки так и числа.
|
||||
Для диапазона индексов массивов нет никаких ограничений. Непрерывность
|
||||
элементов массива также не обязательна. Чтобы создать непрерывную
|
||||
последовательность элементов массива им надо просто присвоить (например в цикле)
|
||||
какие - либо значения. Кроме того, к символам строк можно обращаться как к
|
||||
массиву символов. Так например MyArr[1][2] значит обрашение ко 2-му символу
|
||||
1-й строки массива MyArr. Запись MyArr[1] может значить либо первый символ
|
||||
обычной строковой переменной MyArr, либо первый элемент массива. Но так как
|
||||
элемент массива и переменная с таким же именем одновременно существовать не могут,
|
||||
неоднозначность не возникает.
|
||||
|
||||
- Все встроенные функции интерпретатора user-defined. Mодуль pasfunc.pas содержит
|
||||
библиотеку в которую включены аналоги многих функций Delphi. Пример ее
|
||||
использования есть в demo-программе. Вы можете использовать эту библиотеку,
|
||||
дополнив при необходимости любым количеством своих функций снужными вам
|
||||
параметрами. Параметры функций заранее не описываются, поэтому их количество
|
||||
и типы ничем не ограничены (подобно процедуре write паскаля). Интерпретатор
|
||||
вычисляет все параметры конкретного вызова и передает их функции как список
|
||||
значений. При необходимости вы можете реализовать типовый контроль внутри
|
||||
своей реализации функции. Если в качестве параметра функции передается
|
||||
переменная интерпретатора, этот пареметр считается VAR-параметром, и его
|
||||
изменение в коде функции вызовет изменение значения соответствующей переменной
|
||||
интерпретатора. Тип возвращаемого функцией значения тоже может быть разным при
|
||||
разных параметрах вызова. В модуле pasfunc.pas есть пример реализации таких
|
||||
функций (ф-ции Max, Min). Функции можно вызывать как процедуры, не используя
|
||||
возвращаемое значение.
|
||||
|
||||
- Поддерживаются процедуры и функции на языке интерпретатора. В списке параметров
|
||||
процедур и функций необходимо только перечислить имена формальных параметров.
|
||||
Типы параметров и способ передачи указывать не надо, также в объявлении функций
|
||||
не надо указывать тип возвращаемого значения. Для возврата значения функции
|
||||
используется переменная "result". Если в качестве параметра функции или процедуры
|
||||
передается глобальная переменная интерпретатора, этот параметр для данного вызова
|
||||
считается VAR-параметром и его изменение внутри функции изменит значение
|
||||
глобальной переменной. В то же время все глобальные переменные интерпретатора
|
||||
внутри функции или процедуры ведут себя, как локальные переменные, которым
|
||||
присвоены начальные значения совпадающие со значениями одноименных глобальных
|
||||
переменных. Их значения доступны в процедурах и функциях, их можно изменить,
|
||||
но после выхода из процедуры или функции значение глобальной переменной не
|
||||
изменится. Все новые переменные, созданные внутри процедур и функций являются
|
||||
локальными, и после выхода из процедуры/функции исчезнут. Таким образом, в
|
||||
процедурах и функциях можно использовать любые имена для локальных переменных,
|
||||
не опасаясь что они совпадут с именами глобальных переменных.
|
||||
|
||||
Для реализации библиотек процедур можно использовать операторы USES и INCLUDE.
|
||||
Их синтаксис : USES 'имя файла';
|
||||
INCLUDE 'имя файла';
|
||||
|
||||
Операторы USES и INCLUDE обрабатываются препроцессором, до начала выполнения
|
||||
скрипта. Оператор INCLUDE вставляет в скрипт текст из файла. Оператор USES
|
||||
только загружает реализации процедур и функций, чтобы их можно было
|
||||
использовать при выполнении скрипта.
|
||||
|
||||
|
||||
2. Лицензия.
|
||||
------------
|
||||
|
||||
Интерпретатор PASCALC распространяется по принципу "как есть".
|
||||
При этом не предусматривается никаких гарантий, явных или подразумеваемых.
|
||||
Вы используете его на свой собственный риск. Автор не отвечает за потери
|
||||
данных, повреждения, потери прибыли или любые другие виды потерь, связанные
|
||||
с использованием (правильным или неправильным) этого программного продукта.
|
||||
|
||||
http://alexboiko.da.ru
|
||||
http://alexboiko.chat.ru
|
||||
|
||||
|
||||
3. Интерфейс модуля интерпретатора:
|
||||
-----------------------------------
|
||||
|
||||
unit pascalc;
|
||||
|
||||
{$F+,B-,R-}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Math;
|
||||
|
||||
type TToken =
|
||||
(tEMPTY, tVR, tCON, tTRUE, tFALSE,
|
||||
tEQU, tOR, tAND, tNOT, tXOR,
|
||||
tCOMMA, tLBL, tNEQ, tGT, tLS,
|
||||
tGTE, tLSE, tADD, tSUB, tMUL,
|
||||
tDIV, tPWR, tLBR, tRBR, tLARR,
|
||||
tRARR, tSEMI, tREM, tREMB, tREME,
|
||||
tASSIGN, tBEGIN, tEND, tIF, tTHEN,
|
||||
tELSE, tFOR, tTO, tDOWNTO, tDO,
|
||||
tWHILE, tREPEAT, tUNTIL, tBREAK, tCONTINUE,
|
||||
tEXIT, tGOTO, tSHL, tSHR, tPROC,
|
||||
tFUNCT, tUSES, tINCLUDE, tCASE, tOF,
|
||||
tCOMMA2);
|
||||
|
||||
type TTokenSet = set of TToken;
|
||||
|
||||
const
|
||||
ResWords : array[TToken] of string[10] =
|
||||
('', '', '', 'TRUE', 'FALSE',
|
||||
'=', 'OR', 'AND', 'NOT', 'XOR',
|
||||
',', ':', '<>', '>', '<',
|
||||
'>=', '<=', '+', '-', '*',
|
||||
'/', '^', '(', ')', '[',
|
||||
']', ';', '//', '{', '}',
|
||||
':=', 'BEGIN', 'END', 'IF', 'THEN',
|
||||
'ELSE', 'FOR', 'TO', 'DOWNTO', 'DO',
|
||||
'WHILE', 'REPEAT', 'UNTIL', 'BREAK', 'CONTINUE',
|
||||
'EXIT', 'GOTO', 'SHL', 'SHR', 'PROCEDURE',
|
||||
'FUNCTION', 'USES', 'INCLUDE', 'CASE', 'OF',
|
||||
'..');
|
||||
|
||||
const
|
||||
Alpha : set of char = ['_','0'..'9','a'..'z','A'..'Z','а'..'я','ё','А'..'Я','Ё'];
|
||||
StrDelimiter : char = '''';
|
||||
DecimalPoint : char = '.';
|
||||
TokenDelimiter : char = #127;
|
||||
|
||||
|
||||
type TVar = record
|
||||
Name : string;
|
||||
Value : variant;
|
||||
end;
|
||||
|
||||
type TPVar = ^TVar;
|
||||
|
||||
type TVarList = class (TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddVar(V:TVar) : boolean;
|
||||
function AddValue(N:string; V:variant) : boolean;
|
||||
function VarExist(N:string):boolean;
|
||||
function VarIndex(N:string):integer;
|
||||
function VarByName(N:string;var V:TVar) : boolean;
|
||||
function SetVar(V:TVar) : boolean;
|
||||
function SetValue(N:string; V:variant) : boolean;
|
||||
procedure CopyTo(VL:TVarList);
|
||||
end;
|
||||
|
||||
type TPVarList = ^TVarList;
|
||||
|
||||
type PProcessProc = procedure;
|
||||
|
||||
type PFunction = function(Sender:TObject; var A:TVarList; var R:TVar) : boolean;
|
||||
|
||||
type TFunc = record
|
||||
Name : string;
|
||||
Func : Pointer;
|
||||
end;
|
||||
|
||||
type TPFunc = ^TFunc;
|
||||
|
||||
type TFuncList = class (TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddFunction(N:string; F:Pointer) : boolean;
|
||||
end;
|
||||
|
||||
type TProcedure = record
|
||||
Name : string;
|
||||
Body : string;
|
||||
Params : string;
|
||||
Result : boolean;
|
||||
end;
|
||||
|
||||
type TPProcedure = ^TProcedure;
|
||||
|
||||
type TProcList = class(TList)
|
||||
destructor Destroy; override;
|
||||
procedure ClearAll;
|
||||
function AddProc(Proc:TProcedure):boolean;
|
||||
function ProcIndex(Name:string):integer;
|
||||
function ProcByName(Name:string; var Proc:TProcedure):boolean;
|
||||
end;
|
||||
|
||||
|
||||
type TPasCalc = class
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure ClearVars;
|
||||
function VarCount : integer;
|
||||
function VarIndex(N:string) : integer;
|
||||
function VarByName(N:string; var V:TVar) : boolean;
|
||||
function VarByIndex(I:integer; var V:TVar) : boolean;
|
||||
function SetVar(V:TVar) : boolean;
|
||||
function SetValue(N:string; V:variant):boolean;
|
||||
procedure ClearFuncs;
|
||||
function SetFunction(N:string; F:Pointer) : boolean;
|
||||
procedure SetProcessProc(P:Pointer);
|
||||
function Parse(S:string) : string;
|
||||
function Calculate(S:string; var R:TVar) : boolean;
|
||||
function Execute(S:string):boolean;
|
||||
private
|
||||
Expr : string;
|
||||
ExprIndex : integer;
|
||||
Token : string;
|
||||
TokenCode : TToken;
|
||||
|
||||
BlockLevel : integer;
|
||||
BlockCmd : TToken;
|
||||
GotoLabel : string;
|
||||
|
||||
VarList : TVarList;
|
||||
FuncList : TFuncList;
|
||||
ProcList : TProcList;
|
||||
|
||||
ProcessProc : PProcessProc;
|
||||
|
||||
LastString : string;
|
||||
LastParsed : string;
|
||||
|
||||
procedure Clear;
|
||||
procedure Process;
|
||||
procedure Error(Msg,Line:string; Code:integer);
|
||||
procedure Level1(var R:TVar);
|
||||
procedure Level2(var R:TVar);
|
||||
procedure Level3(var R:TVar);
|
||||
procedure Level4(var R:TVar);
|
||||
procedure Level5(var R:TVar);
|
||||
procedure Level6(var R:TVar);
|
||||
procedure Level7(var R:TVar);
|
||||
procedure Level8(var R:TVar);
|
||||
procedure Arith(o : TToken; var R,H:TVar);
|
||||
procedure Unary(o : TToken; var R:TVar);
|
||||
function GetIndex(S:string; var Index:integer; var T:TToken) : string;
|
||||
function GetFuncParams(S:string; var Index:integer) : string;
|
||||
function FindFunc(N:string) : integer;
|
||||
function FindArray(N:string) : boolean;
|
||||
procedure SetVarDirect(var R:TVar);
|
||||
function CallFunc(N:string; A:string; var V:TVar) : boolean;
|
||||
function CallProc(N:string; A:string; var V:TVar) : boolean;
|
||||
function GetTextToken(S: string; var Index : integer; var Code : TToken) : string;
|
||||
function TokenStr(T:TToken;S:string) : string;
|
||||
function GetToken(S:string; var Index : integer; var Code : TToken) : string;
|
||||
function GetTokenCode(S: string; var Index:integer; var Code:TToken) : integer;
|
||||
function GetTokenLine(S:string; var Index:integer; var Code:TToken;
|
||||
StopToken:TTokenSet) : string;
|
||||
function NextToken(S:string; Index:integer) : TToken;
|
||||
function GetOperator(Txt:string; var Index : integer; EndToken:TTokenSet) : string;
|
||||
function ParseOperator(Txt:string; var Cmd,Line,Lbl : string) : TToken;
|
||||
function DelRemarks(S:string) : string;
|
||||
function UnParse(S:string; Show:boolean) : string;
|
||||
function PreProcess(Txt:string):string;
|
||||
function Calc(S:string; var R:TVar) : boolean;
|
||||
procedure Exec(Txt:string);
|
||||
procedure DoSet(CmdLine,Cmd,Line:string);
|
||||
procedure DoIf(CmdLine,Line:string);
|
||||
procedure DoBegin(CmdLine,Line:string);
|
||||
procedure DoFor(CmdLine,Line:string);
|
||||
procedure DoBreak(CmdLine,Line:string);
|
||||
procedure DoContinue(CmdLine,Line:string);
|
||||
procedure DoExit(CmdLine,Line:string);
|
||||
procedure DoWhile(CmdLine,Line:string);
|
||||
procedure DoRepeat(CmdLine,Line:string);
|
||||
procedure DoGoto(CmdLine,Line:string);
|
||||
procedure DoCase(CmdLine,Line:string);
|
||||
public
|
||||
Stop : boolean;
|
||||
ErrCode : integer;
|
||||
ErrMsg : string;
|
||||
ErrLine : string;
|
||||
end;
|
||||
|
||||
|
||||
4. Функции (unit PASFUNC.PAS)
|
||||
------------------------------
|
||||
|
||||
// Функции для работы со строками
|
||||
|
||||
Val
|
||||
IntToStr
|
||||
StrToInt
|
||||
FloatToStr
|
||||
StrToFloat
|
||||
Copy
|
||||
Pos
|
||||
Length
|
||||
Insert
|
||||
Delete
|
||||
Trim
|
||||
TrimLeft
|
||||
TrimRight
|
||||
UpperCase
|
||||
LowerCase
|
||||
Format
|
||||
|
||||
// Функции для работы с датой и временем
|
||||
|
||||
Now
|
||||
Date
|
||||
Time
|
||||
DateToStr
|
||||
StrToDate
|
||||
TimeToStr
|
||||
StrToTime
|
||||
FormatDateTime
|
||||
DayOfWeek
|
||||
IncMonth
|
||||
DecodeDate
|
||||
DecodeTime
|
||||
EncodeDate
|
||||
EncodeTime
|
||||
|
||||
// Математические функции
|
||||
|
||||
Abs
|
||||
Int
|
||||
Frac
|
||||
Round
|
||||
Ceil
|
||||
Floor
|
||||
Trunc
|
||||
Sin
|
||||
Cos
|
||||
Tan
|
||||
ArcSin
|
||||
ArcCos
|
||||
ArcTan
|
||||
Exp
|
||||
Ln
|
||||
IntPower
|
||||
Sqr
|
||||
Sqrt
|
||||
Min
|
||||
Max
|
||||
Inc
|
||||
Dec
|
||||
|
||||
// Функции PASCALC для работы с переменными.
|
||||
// Позволяют обращаться к переменной по вычисляемому имени.
|
||||
|
||||
SetVar
|
||||
GetVar
|
||||
|
||||
|
||||
5. Использование интерпретатора
|
||||
-------------------------------
|
||||
|
||||
Пример использования есть в demo-программе. В скриптах интерпретатора вы
|
||||
можете использовать готовую библиотеку функций из модуля pasfunc.pas, или
|
||||
напиcать собственную реализацию нужных вам функций, которых нет в библиотеке.
|
||||
Функция должна записать результат в поле Value переменной R:TVar и вернуть true.
|
||||
В случае ошибки (например при вызове с недопустимыми параметрами) функция
|
||||
должна вернуть false.
|
||||
|
||||
Потом создайте экземпляр класса TPasCalc. С помошью метода SetProcessProc
|
||||
можно задать указатель на процедуру которая будет регулярно вызываться в
|
||||
циклах интерпретатора. С ее помощью можно например реализовать таймаут.
|
||||
Если вы задали такую процедуру, то в ней стоит предусмотреть вызов обработчика
|
||||
сообщений (Application.ProcessMessages например). Если ее не задали, то вместо
|
||||
нее будет использоваться метод Process, в котором предусмотрена обработка сообщений.
|
||||
|
||||
Затем вызовами TPasCalc.SetFunction надо зарегистрировать функции которые вы
|
||||
хотите использовать и задать им имена. В модуле pasfunc.pas регистрация делается
|
||||
вызовом процедуры SetFunctions. Также можно задать предопределенные переменные
|
||||
вызовами SetVarNum или SetVarStr.
|
||||
|
||||
Метод Calculate вычисляет значение математического выражения и возвращает
|
||||
результат в переменной R:TVar, а метод Execute выполняет текст скрипта и
|
||||
заполняет список переменных. С помощью методов VarCount, VarByIndex или
|
||||
VarByName вы можете получить их значения. При возникновении ошибок их код
|
||||
возврашается в ErrCode. В ErrMsg и ErrLine возвращается сообщение об ошибке
|
||||
и строка ее вызвавшая.
|
||||
|
||||
При следуюших вызовах Calculate и Execute список переменных не очищается и
|
||||
их значения можно использовать в выражениях. При желании вы можете сами
|
||||
очистить список переменных вызвав ClearVars. Очистить список функций можно с
|
||||
помощью ClearFuncs. Если возникла необходимость принудительно прервать
|
||||
интерпретацию, надо присвоить значение true перменной TPasCalc.Stop.
|
||||
|
||||
Чтобы ускорить выполнение скриптов их можно предварительно подготовить
|
||||
с помощью метода Parse, который возвращает разобранную строку.
|
||||
Ее можно сохранить и затем выполнять теми же методами Calculate и Execute.
|
||||
|
||||
|
||||
6. Коды ошибок (ErrCode)
|
||||
------------------------
|
||||
|
||||
0 - O.K.
|
||||
1 - ошибка в выражении
|
||||
2 - непарные скобки
|
||||
3 - переменная не найдена
|
||||
4 - недопустимое имя переменной или функции
|
||||
5 - неверный тип операнда
|
||||
6 - невернaя строковая константе
|
||||
7 - неверный вызов функции
|
||||
8 - функция не найдена
|
||||
9 - неизвестный оператор
|
||||
10 - нехватает END
|
||||
11 - лишний END
|
||||
12 - нехватает TO или DOWNTO
|
||||
13 - нет переменной цикла
|
||||
14 - нехватает DO
|
||||
15 - BREAK вне цикла
|
||||
16 - нехватает UNTIL
|
||||
17 - лишний UNTIL
|
||||
18 - метка не найдена
|
||||
19 - индекс за границей диапазона
|
||||
20 - значение за границей диапазона
|
||||
21 - нехватает ']'
|
||||
22 - нехватает '['
|
||||
23 - деление на 0
|
||||
24 - Дублируется имя переменной/массива
|
||||
25 - Ошибка открытия файла
|
||||
26 - Функция должна возвращать значение
|
||||
27 - нет OF в операторе CASE
|
||||
28 - несколько ELSE в операторе CASE
|
||||
29 - неверный диапазон значений в операторе CASE
|
||||
|
||||
|
||||
7. Автор:
|
||||
---------
|
||||
|
||||
Алексей Бойко
|
||||
alexboiko@mtu-net.ru
|
||||
http://alexboiko.da.ru
|
24
AsProgrammer/scripts/blockerase.pas
Normal file
|
@ -0,0 +1,24 @@
|
|||
{$erase} //секция будет выполняться при нажатии кнопки "стереть"
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
|
||||
BlockSize := 65536; //Размер блока
|
||||
sreg := 0;
|
||||
ProgressBar(0, (_IC_SIZE / BlockSize)-1, 0);
|
||||
|
||||
for i:=0 to (_IC_SIZE / BlockSize)-1 do
|
||||
begin
|
||||
SPIWrite(1, 1, $06); //wren
|
||||
SPIWrite(1, 4, $D8, i,0,0); //BE
|
||||
|
||||
//Busy?
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
ProgressBar(1);
|
||||
end;
|
||||
|
||||
ProgressBar(0, 0, 0);
|
||||
SPIExitProgMode();
|
||||
end
|
59
AsProgrammer/scripts/i2c_example.pas
Normal file
|
@ -0,0 +1,59 @@
|
|||
{$read}
|
||||
//reading 24c08
|
||||
begin
|
||||
ChipSize := 1024;
|
||||
MemAddr := 0;
|
||||
ReadBuff := CreateByteArray(ChipSize);
|
||||
DevAddr := $A8;
|
||||
|
||||
if _IC_Name = '' then
|
||||
begin
|
||||
ShowMessage ('Choose a component in list');
|
||||
exit;
|
||||
end;
|
||||
|
||||
I2CEnterProgMode;
|
||||
|
||||
I2CReadWrite(DevAddr, 1, ChipSize, MemAddr, ReadBuff);
|
||||
ReadToEditor(ChipSize, 0, ReadBuff);
|
||||
|
||||
I2CExitProgMode;
|
||||
end
|
||||
|
||||
{$write}
|
||||
function I2CIsBusy(DevAdr): boolean;
|
||||
begin
|
||||
I2CStart;
|
||||
Result := not I2CWriteByte(DevAdr);
|
||||
I2CStop;
|
||||
end;
|
||||
//writing 24c08
|
||||
begin
|
||||
ChipSize := 1024;
|
||||
MemAddr := 0;
|
||||
WriteByte := 0;
|
||||
DevAddr := $A0;
|
||||
if _IC_Name = '' then
|
||||
begin
|
||||
ShowMessage ('Choose a component in list');
|
||||
exit;
|
||||
end;
|
||||
ProgressBar(0, _IC_SIZE-1, 0);
|
||||
|
||||
I2CEnterProgMode;
|
||||
|
||||
for i:=0 to ChipSize-1 do
|
||||
begin
|
||||
WriteFromEditor(1, i, WriteByte);
|
||||
I2CReadWrite(DevAddr, 2, 0, MemAddr, WriteByte);
|
||||
while I2CIsBusy(DevAddr) do
|
||||
MemAddr := MemAddr + 1;
|
||||
if MemAddr = 256 then DevAddr := $A2;
|
||||
if MemAddr = 512 then DevAddr := $A4;
|
||||
if MemAddr = 768 then DevAddr := $A6;
|
||||
ProgressBar(1);
|
||||
end;
|
||||
|
||||
I2CExitProgMode;
|
||||
ProgressBar(0, 0, 0);
|
||||
end
|
242
AsProgrammer/scripts/script_func.html
Normal file
|
@ -0,0 +1,242 @@
|
|||
<html lang="ru">
|
||||
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Language" content="ru"> </head>
|
||||
|
||||
<table border="1" cellpadding="5" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;"><font size="5"><b>Секции</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>{$read}</b></td>
|
||||
<td>Код секции выполняется при нажатии кнопки чтении памяти</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>{$write}</b></td>
|
||||
<td>Код секции выполняется при нажатии кнопки записи памяти</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>{$erase}</b></td>
|
||||
<td>Код секции выполняется при нажатии кнопки стирания памяти</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>{$verify}</b></td>
|
||||
<td>Код секции выполняется при нажатии кнопки сравнения памяти</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>{$unlock}</b></td>
|
||||
<td>Код секции выполняется при нажатии кнопки снятия защиты</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;"><font size="5"><b>Предопределенные переменные</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>_IC_Name</b></td>
|
||||
<td>Название текущей выбранной микросхемы </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>_IC_Size</b></td>
|
||||
<td>Размер, в байтах, текущей выбранной микросхемы</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>_IC_Page</b></td>
|
||||
<td>Размер страницы, в байтах, текущей выбранной микросхемы </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>_SPI_SPEED_MAX</b></td>
|
||||
<td>Максимально возможная частота для <b style="text-align: center;">SPISetSpeed</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;"><b><font size="5">Основные функции</font></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>ShowMessage(<font color="#0000FF">text</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Аналог ShowMessage</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>LogPrint(<font color="#0000FF">text</font>, <font color="#0000FF">color</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Выводит сообщение в лог<br>
|
||||
Параметры:<br>
|
||||
<b><font color="#0000FF">text</font></b> текст сообщения<br>
|
||||
Необязательные параметры:<br>
|
||||
<b style="text-align: center; color: #0000ff;">color </b>цвет bgr</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>IntToHex(<font color="#0000FF">value</font>, <font color="#0000FF">digits</font>): string;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left"> Аналог IntToHex</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>ProgressBar(<font color="#0000FF">inc</font>, <font color="#0000FF">max</font>, <font color="#0000FF">pos</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left"> Устанавливает состояние ProgressBar<br>
|
||||
Параметры:<br>
|
||||
<b><font color="#0000FF">inc </font></b>насколько увиличить позицию<br>
|
||||
Необязательные параметры:<br>
|
||||
<font color="#0000FF"><b>max</b></font> максимальная позиция ProgressBar<br>
|
||||
<font color="#0000FF"><b>pos</b></font> устанавливает конкретную позицию ProgressBar</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>CreateByteArray(<font color="#0000FF">size</font>): variant;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Создает массив с типом элементов varbyte</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>GetArrayItem(<font color="#0000FF">array</font>, <font color="#0000FF">index</font>): variant;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Возвращает значение элемента массива</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SetArrayItem(<font color="#0000FF">array</font>, <font color="#0000FF">index</font>, <font color="#0000FF">value</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Устанавливает значение элемента массива</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>ReadToEditor(<font color="#0000FF">size</font>, <font color="#0000FF">position</font>, <font color="#0000FF">buffer, ...</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Записывает данные из буфера в редактор размером size в позицию position</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>WriteFromEditor(<font color="#0000FF">size</font>, <font color="#0000FF">position</font>, <font color="#0000FF">buffer, ...</font>);</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Записывает данные из редактора размером size с позиции position</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>GetEditorDataSize: longword;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Возвращает размер данных в редакторе</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;"><font size="5"><b>Работа с SPI</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIEnterProgMode(<font color="#0000FF">speed</font>): boolean;</b></td>
|
||||
<td>
|
||||
<p>Инициализирует состояние пинов для SPI и устанавливает частоту SPI <br>
|
||||
Параметры:<br>
|
||||
<font color="#0000FF"><b>speed</b></font><br>
|
||||
<b>_SPI_SPEED_MAX</b> = AvrIsp 8(4) MHz / USbAsp 3 MHz<br>
|
||||
Если частота не установлена возвращает false<br>
|
||||
Игнорируется для устройств с фиксированной частотой</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIExitProgMode();</b></td>
|
||||
<td>
|
||||
<p>Отключает пины SPI</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIRead(<font color="#0000FF">cs</font>, <font color="#0000FF">size</font>, <font color="#0000FF">buffer</font></b><b>, ...</b><b>): integer;</b></td>
|
||||
<td>
|
||||
<p>Читает данные в буфер <br>
|
||||
Параметры: <br>
|
||||
<font color="#0000FF"><b>cs</b></font> если <font color="#0000FF"><b>cs</b></font>=1 отпускать Chip Select после чтения данных <br>
|
||||
<font color="#0000FF"><b>size </b></font>размер данных в байтах <br>
|
||||
<font color="#0000FF"><b>buffer</b></font> переменные для хранения данных или массив созданный <b>CreateByteArray</b> <br>
|
||||
Возвращает количество прочитанных байт</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIWrite(<font color="#0000FF">cs</font>, <font color="#0000FF">size</font>, <font color="#0000FF">buffer</font></b><b>, ...</b><b>): integer;</b></td>
|
||||
<td>
|
||||
<p>Записывает данные из буфера <br>
|
||||
Параметры: <br>
|
||||
<b><font color="#0000FF">cs</font> </b>если <b><font color="#0000FF">cs</font></b>=1 отпускать Chip Select после записи данных <br>
|
||||
<b><font color="#0000FF">size </font></b>размер данных в байтах <br>
|
||||
<b><font color="#0000FF">buffer </font></b>переменные с данными или массив созданный <b>CreateByteArray </b><br>
|
||||
Возвращает количество записанных байт</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIReadToEditor(<font color="#0000FF">cs</font>, <font color="#0000FF">size</font>): integer;</b></td>
|
||||
<td>
|
||||
<p>Читает данные в редактор <br>
|
||||
Параметры: <br>
|
||||
<b><font color="#0000FF">cs </font></b>если <b><font color="#0000FF">cs</font></b>=1 отпускать Chip Select после чтения данных <br>
|
||||
<b><font color="#0000FF">size</font> </b>размер данных в байтах <br>
|
||||
Возвращает количество прочитанных байт</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>SPIWriteFromEditor(<font color="#0000FF">cs</font>, <font color="#0000FF">size</font>, <font color="#0000FF">position</font>): integer;</b></td>
|
||||
<td>
|
||||
<p>Записывает данные из редактора размером <b><font color="#0000FF">size </font></b>с позиции <b><font color="#0000FF">position </font></b><br>
|
||||
Параметры: <br>
|
||||
<b><font color="#0000FF">cs </font></b>если <b><font color="#0000FF">cs</font></b>=1 отпускать Chip Select после записи данных <br>
|
||||
<b><font color="#0000FF">size </font></b>размер данных в байтах <br>
|
||||
<b><font color="#0000FF">position</font> </b>позиция в редакторе <br>
|
||||
Возвращает количество записанных байт</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;"><font size="5"><b>Работа с I2C</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CEnterProgMode();</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left"> Инициализирует состояние пинов</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2cExitProgMode();</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left"> Отключает пины</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CReadWrite(<font color="#0000FF">DevAddr</font>, <font color="#0000FF">wsize</font>, <font color="#0000FF">rsize</font>, <font color="#0000FF">wbuffer</font>, <font color="#0000FF">rbuffer</font></b><b>): integer;</b></td>
|
||||
<td>
|
||||
<p>Записывает/читае данные из буферов <br>
|
||||
Параметры: <br>
|
||||
<b><font color="#0000FF">DevAddr</font></b> адрес устройства <br>
|
||||
<b><font color="#0000FF">size </font></b>размер данных в байтах <br>
|
||||
<b><font color="#0000FF">buffer </font></b>переменные с данными или массив созданный <b>CreateByteArray </b><br>
|
||||
Возвращает количество записанных + прочитанных байт<br>
|
||||
*Если <b><font color="#0000FF">rsize</font></b>=0 можно опустить параметр <b><font color="#0000FF">rbuffer</font></b></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CStart();</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Используется вместе с I2CReadByte и I2CWriteByte</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CStop();</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Используется вместе с I2CReadByte и I2CWriteByte</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CReadByte(<font color="#0000FF">ack</font>: boolean): byte;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Читает байт данных и отправляет ack/nack</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><b>I2CWriteByte(<font color="#0000FF">data</font>): boolean;</b></td>
|
||||
<td style="text-align: center;">
|
||||
<p align="left">Записывает байт данных и возвращает ack/nack</p>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p> </p>
|
192
AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas
Normal file
|
@ -0,0 +1,192 @@
|
|||
// designed for WINBOND W25Q32FV/JV W25Q64FV/JV W25Q128FV/JV (not BV serie)
|
||||
// READ / WRITE / ERASE Security REGISTERS
|
||||
// script can be adapted for other brand and models by changing 'RegSize' value in each section
|
||||
{$ READ_JEDEC_ID}
|
||||
begin
|
||||
ID:= CreateByteArray(3);
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read JEDEC ID');
|
||||
|
||||
// read ID to test installation
|
||||
SPIWrite (0, 1, $9F);
|
||||
SPIRead(1, 3, ID);
|
||||
|
||||
logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2));
|
||||
LogPrint ('End read JEDEC ID');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_UNIQUE_ID}
|
||||
begin
|
||||
UID:= CreateByteArray(8);
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read UNIQUE ID');
|
||||
|
||||
// read 64bits UNIQUE ID
|
||||
SPIWrite (0, 5, $4B, $00, $00, $00, $00);
|
||||
SPIRead(1, 8, UID);
|
||||
|
||||
logprint('Read UID: ' + inttohex((GetArrayItem(UID, 0)),2)+ inttohex((GetArrayItem(UID, 1)),2)+ inttohex((GetArrayItem(UID, 2)),2)+ inttohex((GetArrayItem(UID, 3)),2)
|
||||
+ inttohex((GetArrayItem(UID, 4)),2)+ inttohex((GetArrayItem(UID, 5)),2)+ inttohex((GetArrayItem(UID, 6)),2)+ inttohex((GetArrayItem(UID, 7)),2));
|
||||
LogPrint ('End read UNIQUE ID');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_1}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read security register #1');
|
||||
RegSize := 256;
|
||||
// read register 1
|
||||
SPIWrite (0, 5, $48, $00, $10, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_2}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read security register #2');
|
||||
RegSize := 256;
|
||||
// read register 2
|
||||
SPIWrite (0, 5, $48, $00, $20, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ READ_SECURITY_REGISTER_3}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read security register #3');
|
||||
RegSize := 256;
|
||||
// read register 3
|
||||
SPIWrite (0, 5, $48, $00, $30, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
|
||||
LogPrint ('End read security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_1}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase security register #1');
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 1
|
||||
SPIWrite (1, 4, $44, $00, $10, $00);
|
||||
|
||||
LogPrint ('End Erase security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_2}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase security register #2');
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 2
|
||||
SPIWrite (1, 4, $44, $00, $20, $00);
|
||||
|
||||
LogPrint ('End Erase security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ ERASE_SECURITY_REGISTER_3}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start Erase security register #3');
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
// erase register 3
|
||||
SPIWrite (1, 4, $44, $00, $30, $00);
|
||||
|
||||
LogPrint ('End Erase security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_1}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write security register #1');
|
||||
RegSize := 256;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 1
|
||||
SPIWrite (0, 4, $42, $00, $10, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write security register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_2}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write security register #2');
|
||||
RegSize := 256;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 2
|
||||
SPIWrite (0, 4, $42, $00, $20, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write security register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ WRITE_SECURITY_REGISTER_3}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start write security register #3');
|
||||
RegSize := 256;
|
||||
sreg := 0;
|
||||
|
||||
// write enable
|
||||
SPIWrite (1, 1, $06);
|
||||
|
||||
// write register 3
|
||||
SPIWrite (0, 4, $42, $00, $30, $00);
|
||||
SPIWriteFromEditor(1, Regsize, 0);
|
||||
|
||||
//Busy
|
||||
repeat
|
||||
SPIWrite(0, 1, $05);
|
||||
SPIRead(1, 1, sreg);
|
||||
until((sreg and 1) <> 1);
|
||||
|
||||
// write disable
|
||||
SPIWrite (1, 1, $04);
|
||||
LogPrint ('End write security register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
55
AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas
Normal file
|
@ -0,0 +1,55 @@
|
|||
// designed for WINBOND W25Q32FV/JV W25Q64FV/JV W25Q128FV/JV (not BV serie)
|
||||
// READ the 3 Serial Flash Discoverable Parameter (SFDP) REGISTERS
|
||||
// note: W25Q32FV have only one SFDP register
|
||||
// script can be adapted for other brand and models by changing 'RegSize' value in each section
|
||||
{$ READ_JEDEC_ID}
|
||||
begin
|
||||
ID:= CreateByteArray(3);
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read JEDEC ID');
|
||||
|
||||
// read ID to test installation
|
||||
SPIWrite (0, 1, $9F);
|
||||
SPIRead(1, 3, ID);
|
||||
|
||||
logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2));
|
||||
LogPrint ('End read JEDEC ID');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ Read_SFDP_Register_1}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read SFDP Register #1');
|
||||
RegSize := 256;
|
||||
// read register 1
|
||||
SPIWrite (0, 5, $5A, $00, $10, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
LogPrint ('End read SFDP Register #1');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
|
||||
{$ Read_SFDP_Register_2}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read SFDP Register #2');
|
||||
RegSize := 256;
|
||||
// read register 2
|
||||
SPIWrite (0, 5, $5A, $00, $20, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
LogPrint ('End read SFDP Register #2');
|
||||
SPIExitProgMode ();
|
||||
end
|
||||
|
||||
{$ Read_SFDP_Register_3}
|
||||
begin
|
||||
if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed');
|
||||
LogPrint ('Start read SFDP Register #3');
|
||||
RegSize := 256;
|
||||
// read register 3
|
||||
SPIWrite (0, 5, $5A, $00, $30, $00, $00);
|
||||
SPIReadToEditor (1, RegSize);
|
||||
LogPrint ('End read SFDP Register #3');
|
||||
SPIExitProgMode ();
|
||||
end
|
6
AsProgrammer/settings.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<settings>
|
||||
<locale lang="en"/>
|
||||
<options hw="ch341a" CHIP="" clear="0" skipff="1" unprot="0" verify="0" busyskip="0" mw_speed="32Khz" spi_speed="1_5Mhz" blankcheck="0" LoadLastDev="1" arduino_comport="" arduino_baudrate="1000000"/>
|
||||
<Windows DPI="96" Top="110" Left="369" LogH="101" Width="766" Height="489"/>
|
||||
</settings>
|