音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

照葫蘆畫瓢:90S2313,最高分辨率2us的8通道邏輯分析儀

作者:janeslee 欄目:單片機
照葫蘆畫瓢:90S2313,最高分辨率2us的8通道邏輯分析儀
對于沒有示波器或邏輯分析儀的工程師們,調(diào)試電路過程中,若經(jīng)驗不足或稍一馬虎,干活往往事倍功半。這里根據(jù)AVRFREAKS上的OPEN PROJECT制作了一個簡單的8通道邏輯儀,使用90S2313,5V,工作頻率16MHZ,最高分辨率2us,存儲深度2K,與PC使用串口連接,波特率38400,對很多低速外設(shè)的調(diào)試監(jiān)控來說足夠了。

原作者使用90S1200,使用軟件模擬UART,我這里改動了一下,使用90S2313,串口也改為使用硬件串口,編譯后程序為495WORDS。若哪位大蝦有閑也可以將存儲深度提高,傳輸速率提高甚至使用FPGA升級到100M分辨率、采用USB傳輸?shù)鹊取?br>
源程序及原理圖下載地址:
http://www.avrfreaks.net/freaks/files/project_47/project_47.zip

軟件界面:


我的樣板:



2樓: >>參與討論
xiao_ke
好!謝謝。
不過把你改后的圖和程序(495WORDS)也提供出來就更好了。

3樓: >>參與討論
bigger
.
同感!

4樓: >>參與討論
su_mj000
極有創(chuàng)意的設(shè)計
若改用Mega32或更高檔的芯片的話,設(shè)計還可簡化(省去外接RAM等),
是嗎?可能分辨率能達到1~1.5us。

5樓: >>參與討論
Wxy8030
很不錯!
我有個想法——
如果能增加一個控制輸入端,作為啟動和停止數(shù)據(jù)采集的控制端,作用為——如果我對某段代碼有懷疑想看看執(zhí)行時I/O輸出的情況,可借用另外一個I/O口控制數(shù)據(jù)采集,這樣就可以更好的對某一段代碼進行分析,,,

6樓: >>參與討論
janeslee
CPU改為2313的源程序,硬件改動見程序中管腳定義
討論:采用MEGA32等芯片的話,使用內(nèi)部SRAM存儲,確實應(yīng)該還能提高分辨率,不過這就是簡單的升級了。其實,程序還可加入數(shù)據(jù)壓縮功能,將數(shù)據(jù)壓縮10-200倍以上,加大存儲深度,具體實現(xiàn)是采用時間變化量存儲,實際存儲的數(shù)據(jù)是當前通道的值和距前一次通道變化的時間間隙,一個字節(jié)用于存儲時間可高達255個采樣間隔,實際數(shù)據(jù)壓縮率應(yīng)該能達到50-100倍以上,這樣對于跟蹤長周期的數(shù)據(jù)變化非常有幫助。



; Logic-Analyzer and PulseGenerator
; Version 0.16  CPU改為2313
; Version 0.15  Neu: PulseGenerator-Modes. Erwartet 7 Bytes!
; Version 0.09  Verkuerzte Routine fuer cntclk und ram_wr
; Version 0.07  Neue Modes fuer Test-Routinen
; Version 0.06  Anpassung an AT90S1200
; Version 0.05  funktionsfaehig fuer AT90S2313
;
; 串口控制字符/LogicAnalyzer:                                / PulseGen:
; 1. TriggerByte (觸發(fā)字節(jié))                                / TiL
; 2. Masken-Byte (為1的位don't care)                       / TiH
; 3. Timer-Intervall                                       / TpL
; 4. Timer-Prescaler                                       / TpH
; 5. Pre-Trigger in 256-Byte Schritten;                    / TnL
; 6. unbenutzt                                             / TnH
; 7. Modus-Byte (int-/ext-Clock, int-/ext-Trigger)         / Mode
;
; 假設(shè) Triggerword:          0 1 1 0 X X X 1
; TriggerByte:               0 1 1 0 1 1 1 1
; Masken-Byte:               0 0 0 0 1 1 1 0
;
; Sampling-Byte:             0 1 1 0 0 1 1 1
; mit Masken-OR:             0 1 1 0 1 1 1 1 = TriggerByte --> TRIGGER!
;

.nolist
.include ".\2313def.inc"
.list

.def TpCntH  = R27 ;PulseGen: Tp-Counter-High
.def TpCntL  = R26 ;PulseGen: Tp-Counter-Low
.def TiCntH  = R25 ;PulseGen: Ti-Counter-High
.def TiCntL  = R24 ;PulseGen: Ti-Counter-Low
.def TEMP    = R23 ;TEMPorary storage register
.def bitcnt  = R22 ;bit counter
.def TXbyte  = R21 ;Data to be transmitted
.def RXbyte  = R20 ;Received data
.def bufcntH = R19 ;Ringspeicher-Zaehler High
.def TnCntH  = R19 ;PulseGen: Burst-Count-High
.def bufcntL = R18 ;Ringspeicher-Zaehler Low
.def TnCntL  = R18 ;PulseGen: Burst-Count-Low
.def mode    = R17 ;Modus
.def wreg    = R16 ;Working-Register
.def trig    = R15 ;Trigger-Register
.def TiL     = R15 ;低電平持續(xù)時間(PulseGen)
.def mask    = R14 ;Masken-Register
.def TiH     = R14 ;高電平持續(xù)時間(PulseGen)
.def timereg = R13 ;fuer Timervergleich
.def TnH     = R13 ;(PulseGen)
.def prescal = R12 ;Timer PreScaler
.def TpH     = R12 ;(PulseGen)
.def delta   = R11 ;Timer-Intervall
.def TpL     = R11 ;(PulseGen)
.def pretrig = R10 ;Pre-Trigger
.def TnL     = R10 ;(PulseGen)
.def aux1    = R9  ;Hilfsregister
.def aux0    = R8  ;Hilfsregister
.def store1  = R7  ;PORTD, cntclk=H und ram_wr=L
.def store2  = R6  ;PORTD, cntclk=L und ram_wr=H (Ruhezustand)

;---------------------------------------------------------------------------
;HARDWARE Definition
;
;Baudrate 38400:
.equ  baud  = 25       ;16MHZ Quart (90S3212)  fosc/(16*BAUD) - 1
;
;Port-Pinbelegung:
.equ ram_wr = PD5      ;RAM /WR Write-Enable  (Low-aktiv)
.equ ram_oe = PD4      ;RAM /OE OUTPUT-Enable (Low-aktiv)
.equ SAMPLE = PD6      ;Clock (positiv) und OUTPUT-Enable (Low) des 74HC574
.equ PGout  = PD2      ;PulseGenerator OUTPUT
.equ cntclk = PD3      ;Clock (positiv) des Ripple-Counters 74HC4040
.equ RxD    = PD0      ;RxD
.equ TxD    = PD1      ;TxD
.equ extpin = PB0      ;Externer Trigger-/Clock-Eingang an Port-B
;
;---------------------------------------------------------------------------

.org 0x0000
         rjmp start           ;Sprung nach Reset
         reti                 ;INT0
         reti                 ;INT1
         reti                 ;TMR1 CAPT1
         reti                 ;TMR1 COMP1
         reti                 ;TMR1 OVF
         reti                 ;TMR0 OVF
         rjmp RAMfull         ;UART RXI 程序中斷捕獲
         reti                 ;UART UDRE
         reti                 ;UART TXI
         reti                 
7樓: >>參與討論
zlei
好,給janeslee大哥助興
推薦一個網(wǎng)站,很多AVR做的小儀器


Dick Cappels" Project Pages

8樓: >>參與討論
janeslee
若以速度論英雄,在這么簡單的MCU中
當屬SCENIX公司的SX系列單片機,我手頭的SX28AC就能跑75MHz!SX52BD更能跑100MHZ,指令周期10ns,用來做這個邏輯分析儀仿佛更合適。但為了提高精度,我覺得還是用CPLD/FPGA做前端更好,主要就是鎖存、邏輯比較、計數(shù)、存儲器地址發(fā)生、讀寫,后端用CYPRESS的EZUSB做傳輸,這樣就比較完美了,能成為一個有商業(yè)價值的產(chǎn)品.

9樓: >>參與討論
jy6715
不錯。頂
 
10樓: >>參與討論
zhifeng
能夠說說原理嗎?是采集后傳輸?shù)絧c處理嗎?
 
11樓: >>參與討論
crc
好東西,頂
 
12樓: >>參與討論
qwernet
請問什么叫做預觸發(fā)(Pre-Trigger)?有什么用?
 
13樓: >>參與討論
傲氣雄鷹
“軟件界面”上那兒弄?
 
14樓: >>參與討論
qjy_dali
同意janeslee的說法
 
15樓: >>參與討論
flymonkey
頂上來看!
 
16樓: >>參與討論
黑佬
樓主,我怎么下不了呀
樓主,我怎么下不了呀

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
大家來發(fā)表一下WINAVR(GCC)的使用經(jīng)驗
一個初學AVR的煩惱
簡單的熔絲設(shè)置
AVR IO操作
在ICC中如何訪問FLASH內(nèi)的特定地址?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號