步驟1:材料和工具
有完整的物料清單和采購清單。
4x6cm通用PCB(1)
5V Arduino Pro Mini帶公頭(1)
ATTINY85-20PU(1)
8針DIL IC插座(1)
2.1 x 5.5 mm直流電源插座插座(1)
BC547 NPN晶體管(1)
1K電阻器(6)
150R電阻器(1)
5V蜂鳴器(可選)
LED (可選)
連接線(~12)
焊料和鐵(1)
強氰基丙烯酸酯粘合劑(1)
12V電源(1)
RTL-232 FTDI芯片(1)
步驟2:PCB組裝
下面的組件適合我的電源。電源插座和2P公頭可以用螺絲端子換掉,如果它適合。..
在頂部,插入電源插座(膠水到電路板),2P插頭,Arduino Pro Mini ,8P DIL插座,BC547,底部焊接。
將電源插座上的卡舌彎曲至2P引腳并焊接(+ ve至WHITE3)。
在頂部,將1K電阻跟蹤到BLUE1和BLUE2并焊接。將BLUE1的引線彎曲到ORANGE9并焊接。
在頂部,將1K電阻跟蹤到BLUE3和BLUE3并焊接。將BLUE3的引線彎曲到ORANGE10并焊接。
在頂部,將1K電阻跟蹤到BLUE5和BLUE6并焊接。將BLUE5的引線彎曲到ORANGE11并焊接。
在頂部,將1K電阻跟蹤到BLUE7和BLUE8并焊接。將BLUE7的引線彎曲到ORANGE12并焊接。
在頂部,將1K電阻跟蹤到BLUE9和BLUE10并焊接。將BLUE9的引線彎曲到ORANGE13并焊接。
在頂部,將1K電阻跟蹤到WHITE5和WHITE6并焊接。將WHITE5的引線彎曲到WHITE3并焊接。
在底部,將黃色線跟蹤到YELLOW5和BLUE2,然后焊接。
在底部,將黃色線跟蹤到YELLOW6和BLUE4,然后焊接。
在底部,將黃色線跟蹤到YELLOW7和BLUE6,然后焊接。
在底部,將黃色線跟蹤到YELLOW2和BLUE8,然后焊接。
在底部,將黃色線跟蹤到YELLOW8和ORANGE8,然后焊接。
在底部,將黑色線跟蹤到WHITE2和WHITE4,然后焊接。
在底部,將紅線描繪成WHITE1和WHITE3,然后焊接。
在底部,追蹤從WHITE8到BLUE10的引線,然后焊接。
在底部,追蹤從WHITE7到WHITE5的引線,并焊接。
在底部,追蹤從WHITE9到WHITE4的引線,并焊接。
在底部,將黑色線跟蹤到WHITE4和YELLOW4,然后焊接。
在底部,將紅線描繪成WHITE7和YELLOW1,然后焊接。
[蜂鳴器,可選]在頂部,將蜂鳴器插入PINK1和PINK2,焊接在底部。
[蜂鳴器,可選]在底部,將紅線跟蹤到PINK1和PINK3,然后焊接。
[蜂鳴器,可選]在底部,將黑色線跟蹤到PINK2和PINK5,然后焊接。
[LED,OPTIONAL]在頂部,將LED插入PINK6(短陰極)和PINK7(長陽極),焊接在底部。
[LED,OPTIONAL]在底部,將PINK6的引線彎曲到YELLOW4,然后焊接。
[LED,OPTIONAL]在頂部,將一個150歐姆的電阻跟蹤到PINK7和PINK4并焊接。
步驟3:固件上傳
使用的代碼庫已經過了幾手牌。它從Ralph的GIT中未經修改。
Arduino Pro Mini使用FTDI232 USB轉TTL轉換器方便地閃存。將Mini的6P直角引腳插入轉換器的母頭。
確保在FTDI232上選擇5V設置。按照以下代碼使用下面的代碼(使用GIST鏈接)。
來自https://github.com/RalphBacon/ATTiny85_Fuse_Resetter/blob/master/ATTiny85_Reset.ino。嵌入Instructables。
# include “ Arduino.h “
//最初由Paul Willoughby創建03/20/2010
// www.rickety.us斜線2010/03/arduino-avr-high-voltage-serial-programmer/
//受Jeff Keyzer啟發mightyohm.com
//來自ATtiny25/45/85數據表的串行編程例程
//所需的保險絲配置
# define HFUSE 0xDF //默認值for ATtiny25/45/85
#定義 LFUSE 0x62
# define RST 13 //輸出到電平轉換器!從晶體管到引腳1的RESET
#定義 CLKOUT 12 //連接到串行時鐘輸入(SCI)引腳2
#定義 DATAIN 11 //連接串行數據輸出(SDO)引腳7
# define INSTOUT 10 //連接到串行指令輸入(SII)引腳6
# define DATAOUT 9 //連接到串行數據輸入(SDI)引腳5
# define VCC 8 //連接到VCC引腳8
//由Ralph S Bacon添加,旨在增強用戶體驗
# define GND 5 //用于蜂鳴器的GND
# define PWRLED 6 //上電LED
#定義 BUZZ 7 //蜂鳴器針
int inData = 0 ; //傳入的串行字節AVR
int targetValue = HFUSE;
void setup (){
//設置HV并行編程的控制線
pinMode (VCC,OUTPUT);
pinMode ( RST,OUTPUT);
pinMode (DATAOUT,OUTPUT);
pinMode (INSTOUT,OUTPUT);
pinMode (CLKOUT,OUTPUT);
pinMode (DATAIN,OUTPUT); //在編程模式下配置為輸入
// RSB”增強功能“
//將蜂鳴器接地
pinMode (GND,OUTPUT);
digitalWrite (GND,LOW );
//打開電源指示燈
pinMode (PWRLED,OUTPUT);
//蜂鳴器/蜂鳴器
pinMode (BUZZ,OUTPUT);
digitalWrite (PWRLED,HIGH);
//讓用戶知道我們已經準備好了
digitalWrite (BUZZ,HIGH);
延遲( 50 );
digitalWrite (BUZZ,LOW);
// RSB結束
//根據需要初始化輸出引腳
digitalWrite (RST,HIGH) ; //電平轉換器正在反相,這將關閉12V
//以9600 bps啟動串口:
Serial。 begin ( 9600 );
}
void loop (){
switch ( establishContact ()){
case 49 :
targetValue = HFUSE;
break ;
case 50 :
targetValue = 0x5F ;
break ;
默認:
targetValue = HFUSE;
}
Serial。 println ( “進入編程模式 \ n ” );
//初始化引腳以進入編程模式
pinMode (DATAIN,OUTPUT); //臨時
digitalWrite (DATAOUT,LOW);
digitalWrite (INSTOUT,LOW);
digitalWrite (DATAIN,LOW);
digitalWrite (RST,HIGH); //電平轉換器正在反相,這將關閉12V
//進入高壓串行編程模式
digitalWrite (VCC,HIGH); //應用VCC開始編程過程
delayMicroseconds ( 20 );
digitalWrite (RST,LOW); //打開12v
delayMicroseconds ( 10 );
pinMode (DATAIN,INPUT); //發布DATAIN
delayMicroseconds ( 300 );
//編程模式
int hFuse = readFuses ();
//如果還沒有我們想要的值,則寫入hfuse 0xDF (允許在引腳1上使用RST)
if (hFuse!= targetValue){
延遲( 1000 );
Serial。 print ( “寫作hfuse as “ ); Serial。 println (targetValue,HEX);
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST, 0x40 , 0x4C );
//默認的RESET功能
// shiftOut2(DATAOUT,INSTOUT,CLKOUT,MSBFIRST,HFUSE,0x2C);
//這會將RST引腳1變為a(弱)IO端口
// shiftOut2(DATAOUT,INSTOUT,CLKOUT,MSBFIRST,0x5F,0x2C);
//用戶選擇的選項
sh iftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST,targetValue, 0x2C );
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST, 0x00 , 0x74 );
shiftOut2 (DATAOUT,INSTOUT ,CLKOUT,MSBFIRST, 0x00 , 0x7C );
}
//寫lfuse
延遲( 1000 );
Serial。 println ( “寫lfuse \ n ” );
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST, 0x40 , 0x4C );
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST,LFUSE, 0x2C );
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST, 0x00 , 0x64 );
shiftOut2 (DATAOUT,INSTOUT,CLKOUT,MSBFIRST, 0x00 , 0x6C );
//確認新的播放狀態
hFuse = readFuses ();
digitalWrite (CLKOUT,LOW) ;
digitalWrite (VCC,LOW);
digitalWrite (RST,HIGH); //關閉12v
//讓用戶知道我們已經完成
digitalWrite (BUZZ,HIGH);
延遲( 50 );
digitalWrite (BUZZ,LOW);
delay ( 50 );
《溫泉n》 digitalWrite (BUZZ,HIGH);
延遲( 50 );
digitalWrite (BUZZ,LOW);
Serial。 println ( ” \ n 編程完成。按RESET再次運行?!?);
while ( 1 == 1 ){};
}
int establishContact (){
Serial。 println ( “打開12伏電源/ \ n \ n 您可以啟用RST引腳(作為RST)“
“允許編程 \ n 或禁用它以將其變為(弱)GPIO引腳。 \ n “ );
//我們必須得到1或2才能繼續
int 回復;
do {
Serial。 println ( “輸入1以啟用RST引腳(恢復正常)” );
Serial。 println ( ”輸入2以禁用RST引腳(使它成為GPIO引腳)“ );
while (!Serial。 available ()){
//等待用戶輸入
}
reply = Serial。 read ();
}
while (?。ɑ貜?= 49 ||回復== 50 ));
返回回復;
}
int shiftOut2 ( uint8_t dataPin, uint8_t dataPin1, uint8_t clockPin, uint8_t bitOrder, byte val,byte val1){
int i;
int inBits = 0 ;
//等到DATAIN變高
-
ATtiny
+關注
關注
3文章
128瀏覽量
19606 -
復位器
+關注
關注
0文章
5瀏覽量
6825
發布評論請先 登錄
相關推薦
評論