2014年9月3日 星期三
stm32f030f4p6
stm32f030f4p6 TSSOP20包裝 16KFlash rom 4K ram 零售一個13元 , 買了幾個來試試 ,先銲在轉接板上,首先到官網下載 , STM32F0xx_StdPeriph_Lib_V1.3.1 , 然後 用keil 4.74版(試用版的就可以,因為可以支持到32k,而stm32f030f4p6只有16k) 開啟 檔案 編譯 燒入(我是用網拍的JLink) , 恩 果然可以執行 , 事後 用keil 4.2版 開啟 編譯過不了 , 看來還是 用keil 4.74版好了
專案的路徑 :STM32F0xx_StdPeriph_Lib_V1.3.1\Projects\STM32F0xx_StdPeriph_Templates\MDK-ARM\Project.uvproj
2014年9月2日 星期二
2014年8月25日 星期一
人機介面 和 單晶片
HMI 人機介面 對我而言 , 很陌生完全沒用過 , 因工作 需要用人機介面和單晶片連接 ,一般HMI是連接PLC , 查資料後 知它通訊是走MODBUS RTU , 手上沒 人機介面實體機器 , 還好 HMI 有很好的模擬軟體 , 所以先用 PC 模擬HMI 連接單晶片 , 我是一對一 所以 用 RS232 , 單晶片上外接的LED 對應 HMI 裡的一個按鍵輸出 , 外接的七段顯示器 是 HMI 裡的設定值(條棒), 而 HMI 裡的跳動數字 是 由單晶片產生的 計數值 , 目前這個測試 是把單晶片設 MASTER , HMI 為 SLAVE
2014年7月30日 星期三
2014年7月20日 星期日
Miss MCU 包裝 畫錯
哇哇 MCU 包裝 畫錯, 完全沒辦法使用 . 原因是 LQFP64 腳距有0.4mm (笙泉MG82FE316就是這種包裝 ) 0.5mm (新唐NCU100 其實目前很多元件是這個包裝 ) 而我 PCB 是用NCU100卻畫成0.4mm 腳距, 真是不小心 以後 板子檔案要送出時 , 要列印出來看看 較安全
前方是 錯誤板子 , 後方是修正後的板子
2014年7月8日 星期二
2014年6月12日 星期四
2014年6月2日 星期一
2014年5月26日 星期一
推出Arduino Zero
新推的Arduino Zero mcu是用ATSAMD21G18, 48pins LQFP
ARM Cortex-M0+ CPU running at up to 48MH
- 規格如下
| Microcontroller | ATSAMD21G18, 48pins LQFP |
| Operating Voltage | 3.3V |
| Digital I/O Pins | 14, with 12 PWM and UART |
| Analog Input Pins | 6, 12-bit ADC channels |
| Analog Output Pins | 1, 10-bit DAC |
| DC Current per I/O Pin | 7 mA |
| Flash Memory | 256 KB |
| SRAM | 32 KB |
| EEPROM | up to 16KB by emulation |
| Clock Speed | 48 MHz |
我們台灣目前有 新唐 M0 M4 , 松翰 M0 , Holtek盛群 M3 是很好的選擇, 尤其是 新唐 在市場上的耕耘是很用力的, 在台灣 各大都市定期都有開免費研習會, 上課資訊在他們的官網友公布 ,可以善加利用 。
2014年5月15日 星期四
2014年4月28日 星期一
在PCB上,使用QFN
在PCB 使用QFN , 看下圖元件 其器件上並沒有出腳,只在斷面上有一點露銅
手工銲接時,要將元件銲點和PCB對齊是一件難事,因為元件沒腳再加上四面都要對齊,一開始我也這麼認為,看下圖PCB 其PAD 有延伸出去,就把它當作元件的出腳,而PAD邊有四個白色直角,只要將元件BODY的四個角,對準PCB上的那四個角 這樣所有銲點就全部對齊
下圖對齊的樣子
先用烙鐵 融一坨錫將它固定
再在其他位置上開始銲, 用整坨錫 再用烙鐵將錫在銲點上移動,不用擔心 它自動會分開,因為PCB防銲層的關係,有表面張力會把溶解的錫推開
注意看下圖 有一個點沒銲好, 再重新跑一次 上圖的動作
四面 都依序銲好的樣子 上有松香焦油
用藥用酒精 洗過 ,並且衛生紙擦過 (酒精可以溶解附著在PCB上的松香焦油)
完成
2014年4月24日 星期四
資訊分享 三
Fairchild宣佈2014年度北美洲和亞洲功率技術研討會時間表
"台灣只有台中一場,機會難的"
本年度研討會主題為“工程能效”,將重點探討如何説明Fairchild客戶解決功率管理方面的難題, 美國加州聖約瑟 – 2014年4月9日 – Fairchild宣佈第八季全球知名功率技術研討會在北美洲和亞洲的舉辦時間。
研討會由一些頂級的業界電源專家組織安排,旨在讓客戶和經銷商借此機會瞭解最新的技術,以解決他們每日面對的功率管理挑戰。
這些為期一天的綜合研討會將圍繞“工程能效”這一主題展開並提供豐富的技術性和實用性簡報,簡報內容包括最新的先進電源概念、基本設計理念的教程回顧以及親自體驗實際應用示例等,以幫助設計工程師打造出震撼的供電產品。
2014年度功率技術研討會全新主題包括:
LLC諧振轉換器: 設計問題和解決方案
驅動高功率工業燈具中的HB-LED
降壓功率因數校正的電流波形調整策略
採用快速反覆運算方法提高反激式設計性能
可在低電壓DC-DC應用中實現最優效率和尺寸的封裝技術的發展
2014年4月21日 星期一
2014年4月4日 星期五
2014年3月31日 星期一
DIY香水移動電源
因測試需要買了10個香水移動電源套件回來自己DIY 如下圖
其實也不算甚麼DIY 就只是把 PCB 放入塑膠盒中,再放入一個18650電池蓋上白色蓋子即完成
不過,因好奇PCB上少了一個元件,經查證缺的那個元件是DW06D 作用是防止電池過度放電的功能,呀呀 ! 少了他會讓電池 壽命變短啊 ,這是甚麼居心 ?
缺DW06D的情形下 ,會放電到2.2V 這18650 鋰電池會被他害死的,需另外再購入DW06D自己來銲,這樣算一算 ,真省不了多少錢
市面上的香水或口紅移動電源,都是中國製的,我買的這個還留下一個陷阱,讓18650壽命變短真是....
2014年3月26日 星期三
2014年3月25日 星期二
2014年3月24日 星期一
LED 混色
我這個是用TM1804 ,市面上的七彩燈條大部分是用WS2801不過都大同小異啦
一般玩七彩燈條會買專用的控制器,我這個只是玩玩所以用MCU 直驅TM1804 ,
這IC 的控制線只有一條 所以時序上要求較緊張,在第一張圖片裡有其時序規格 ,
MCU是用82E54 晶振24Mhz,所以1cycle是0.042uSec 其控制方式,下次再聊
老MCU
PIC16F72好老的單片機不過比PIC16F5X好一些啦,多了ADC TIMER0 TIMER1 TIMER2中斷等,
但
2K x 14字的程序存儲器,
128×8個字節的數據存儲器(RAM)
八級深硬件堆棧<< 堆疊只有8層
麻煩的是使用數據存儲要先切到正確的銀行,光看到這規格是不是就打退堂鼓了呢?
因為手上剛好有這芯片就順手測試一下,就當作是筆記下面練習程式啟動計時1中斷,
(這顆的中斷位置是所有中斷一起共用的,所以進到中斷副程式時要先檢查是哪一個中斷裝置發生中斷)令端口_A每進一次中斷就反向輸出一次
列表P = 16F72; 列表指令來定義處理器
#包括 ; 具體的處理器變量定義
__config _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&_XT_OSC
; “__config'指令用於內。asm文件中嵌入的配置數據。
; 下列指令的標籤都位於各自的。增量文件。
; 請參閱相關的數據表上的配置字的更多信息。
; *****變量定義(舉例)
W_TEMP EQU 32H
STATUS_TEMP EQU 31H
FLAG_A EQU 30H
; ****************** *********************
ORG量0x000; 處理器復位向量
轉到開始; 進入程序開始
INT_VECTOR:
ORG量0x004; 中斷向量地址
MOVWF W_TEMP; 節省了電流W寄存器的內容;
MOVF 狀態,W; 移動狀態寄存器為W寄存器
BCF STATUS,RP0; 確保文件寄存器組設置為0
MOVWF STATUS_TEMP; 節省OFF狀態寄存器的內容
; ISR代碼可以去這裡或位於其他位置的子程序調用
BANKSEL PIR1; TMR1IF
BTFSS PIR1,0
GOTO VECTOR_QUIT
BCF PIR1,0; CLR TMR1IF
COMF FLAG_A,0;取FLAG_A的補數
MOVWF FLAG_A
MOVLW B'11110000'; RELOAD TMR1H TMR1L
MOVWF TMR1L
MOVLW B'00000000'
MOVWF TMR1H
VECTOR_QUIT:
BCF STATUS,RP0; 確保文件寄存器組設置為0
MOVF STATUS_TEMP,W; 找回狀態寄存器副本
MOVWF 狀態; 恢復預ISR狀態寄存器的內容
SWAPF W_TEMP,F
SWAPF W_TEMP,W; 恢復預ISR W寄存器的內容
RETFIE; 從中斷返回
開始:
BANKSEL ADCON1; 16F72復位>> PORTA均設定為ADC
MOVLW B'00000111'; PORTA至數字IO
MOVWF ADCON1
BANKSEL TRISA
MOVLW B'00000000'
MOVWF TRISA
MOVWF TRISB
MOVWF TRISC
BANKSEL PORTA
MOVLW 80H
MOVWF PORTC
MOVLW 0
MOVWF 33H
; T1CON = 0B00110101;
BANKSEL T1CON
MOVLW B'00110101'
MOVWF T1CON
; TIMER1為16BIT上數計數器
MOVLW B'11110000'
MOVWF TMR1L; 0X00F0
MOVLW B'00000000'
MOVWF TMR1H
; TMR1IE = 1; / /外設中斷使能
BANKSEL PIE1
MOVLW B'00000001'
MOVWF PIE1
; PEIE = 1 ;/ /使能計時器1中斷
; GIE = 1; / /全域中斷使能
BANKSEL INTCON
MOVLW B'11000000';
MOVWF INTCON
LOOP:
BTFSC FLAG_A,0
GOTO OFF_LED
MOVLW B'00000000';
MOVWF PORTA
GOTO LOOP
OFF_LED:
MOVLW B'11111111';
MOVWF PORTA
GOTO LOOP
完
但
2K x 14字的程序存儲器,
128×8個字節的數據存儲器(RAM)
八級深硬件堆棧<< 堆疊只有8層
麻煩的是使用數據存儲要先切到正確的銀行,光看到這規格是不是就打退堂鼓了呢?
因為手上剛好有這芯片就順手測試一下,就當作是筆記下面練習程式啟動計時1中斷,
(這顆的中斷位置是所有中斷一起共用的,所以進到中斷副程式時要先檢查是哪一個中斷裝置發生中斷)令端口_A每進一次中斷就反向輸出一次
列表P = 16F72; 列表指令來定義處理器
#包括
__config _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&_XT_OSC
; “__config'指令用於內。asm文件中嵌入的配置數據。
; 下列指令的標籤都位於各自的。增量文件。
; 請參閱相關的數據表上的配置字的更多信息。
; *****變量定義(舉例)
W_TEMP EQU 32H
STATUS_TEMP EQU 31H
FLAG_A EQU 30H
; ****************** *********************
ORG量0x000; 處理器復位向量
轉到開始; 進入程序開始
INT_VECTOR:
ORG量0x004; 中斷向量地址
MOVWF W_TEMP; 節省了電流W寄存器的內容;
MOVF 狀態,W; 移動狀態寄存器為W寄存器
BCF STATUS,RP0; 確保文件寄存器組設置為0
MOVWF STATUS_TEMP; 節省OFF狀態寄存器的內容
; ISR代碼可以去這裡或位於其他位置的子程序調用
BANKSEL PIR1; TMR1IF
BTFSS PIR1,0
GOTO VECTOR_QUIT
BCF PIR1,0; CLR TMR1IF
COMF FLAG_A,0;取FLAG_A的補數
MOVWF FLAG_A
MOVLW B'11110000'; RELOAD TMR1H TMR1L
MOVWF TMR1L
MOVLW B'00000000'
MOVWF TMR1H
VECTOR_QUIT:
BCF STATUS,RP0; 確保文件寄存器組設置為0
MOVF STATUS_TEMP,W; 找回狀態寄存器副本
MOVWF 狀態; 恢復預ISR狀態寄存器的內容
SWAPF W_TEMP,F
SWAPF W_TEMP,W; 恢復預ISR W寄存器的內容
RETFIE; 從中斷返回
開始:
BANKSEL ADCON1; 16F72復位>> PORTA均設定為ADC
MOVLW B'00000111'; PORTA至數字IO
MOVWF ADCON1
BANKSEL TRISA
MOVLW B'00000000'
MOVWF TRISA
MOVWF TRISB
MOVWF TRISC
BANKSEL PORTA
MOVLW 80H
MOVWF PORTC
MOVLW 0
MOVWF 33H
; T1CON = 0B00110101;
BANKSEL T1CON
MOVLW B'00110101'
MOVWF T1CON
; TIMER1為16BIT上數計數器
MOVLW B'11110000'
MOVWF TMR1L; 0X00F0
MOVLW B'00000000'
MOVWF TMR1H
; TMR1IE = 1; / /外設中斷使能
BANKSEL PIE1
MOVLW B'00000001'
MOVWF PIE1
; PEIE = 1 ;/ /使能計時器1中斷
; GIE = 1; / /全域中斷使能
BANKSEL INTCON
MOVLW B'11000000';
MOVWF INTCON
LOOP:
BTFSC FLAG_A,0
GOTO OFF_LED
MOVLW B'00000000';
MOVWF PORTA
GOTO LOOP
OFF_LED:
MOVLW B'11111111';
MOVWF PORTA
GOTO LOOP
訂閱:
文章 (Atom)
































