細々とネタをご提供しているようで...何よりです。
Posted by GLOCKen - 2008.06.02,Mon
実は未切断 and 未実装で嫁に来たSMD版Old Arduino君の画像
中の人の話を思い返すとPCBが切り替わる時期だったと思う。
シルクが同プロジェクトの以前使われていたURLとなっている
現行版は
http://www.mecharoboshop.com/Products/physicalcomputing/arduino/index_html
で買えるらしい。便利な世の中だなぁ
現行verは基盤デザインもぜんぜん格好良いなぁ
裏地図がブラボー
あの頃は、適当な英語とイタリア語でTrinoの基盤デザインをしてる
人とやりとりして「こんなのも出来そうなんだけど...どう?」
と、Proto Shieldの写真を送ってくれたりしてワクワクしていた
やっぱブレッドShieldは萌えるなぁ
PR
Posted by GLOCKen - 2008.02.22,Fri
たまたまお見かけした
http://d.hatena.ne.jp/yaneurao/20080228
経由で知る。(すごい人らしい Z80 golf)
P付きはUSARTが2本載っている。
入手と実装容易なAVRでは最強っぽい。
ただ、Dragonはプログラムエリア32KBまでなので、
「164Pでブロックごとにデバグして...」
ってことになるのでしょうか?
今3本ある644はP無しだけど...
40pinなのでSG12232Cも余裕。
~CSnとかをイネーブルしなければデータ線は他に開放されるので
実際はそれほど占有していない事に最近気づいた
40pin DIP...
カッコいぃ...
http://d.hatena.ne.jp/yaneurao/20080228
経由で知る。(すごい人らしい Z80 golf)
P付きはUSARTが2本載っている。
入手と実装容易なAVRでは最強っぽい。
ただ、Dragonはプログラムエリア32KBまでなので、
「164Pでブロックごとにデバグして...」
ってことになるのでしょうか?
今3本ある644はP無しだけど...
40pinなのでSG12232Cも余裕。
~CSnとかをイネーブルしなければデータ線は他に開放されるので
実際はそれほど占有していない事に最近気づいた
40pin DIP...
カッコいぃ...
Posted by GLOCKen - 2008.02.03,Sun
Posted by GLOCKen - 2008.02.01,Fri
発作的に思いついたので、TeXとかでも良いのだろうけどメンドイ
http://www.meesoft.com/
の"Diagram Designer 1.19"をインストールしてみた
ほんのちょっとしか触ってないけども直感的で良い感じ
日本語も通る。
UmeフォントでCoolTypeが良い感じ
http://www.meesoft.com/
の"Diagram Designer 1.19"をインストールしてみた
ほんのちょっとしか触ってないけども直感的で良い感じ
日本語も通る。
UmeフォントでCoolTypeが良い感じ
Posted by GLOCKen - 2008.01.26,Sat
いろいろあって会社を休んだ
年明けから割りと乗れただけに悔しい思い
グタグタだが頭だけ仕事モードのままで着かない。
とりあえず、これのTimer0(8bit PWM-First)でLCDのCLを2KHzで出力
ついでにコンペアマッチ割込みでLEDを1秒間ごとにトグル
クロックは内臓8MHz/8=1MHz
(LEDが負論理とは気づかずかなり悩んだ。まだ短縮できるかな)
(kaoriya版 Vim からHTMLコンバート)
==================================
; AM644RX 向けテスト
; とりあえずLED点滅でも...
; MPU: ATmega644
; CLK: factory default 1MHz = 8MHz/Prescale8
;
; 外付け発振子のときは、CLKSELヒューズビットを 0000 へアンプログラム
; タイマ割り込み発生チェックにSREGのTフラグを利用
;
;====================================================================
.nolist
.include <m644def.inc>
.list
.WARNING "This Code is not properly tested, use at own risk."
.dseg ;==== data segment ====
.org SRAM_START
; LEDウエイト用カウント値
; 汎用I/Oレジスタ0-2とかでも良い(8bit)
led_cnt0: .byte 1 ; led_wait0 が入る
led_cnt1: .byte 1 ; led_wait1 が入る
.cseg ;==== Code segment ====
;------------ Vecror table ----
; 使わないベクタは指定しない
; 間が抜けてるときは.orgで指定
jmp reset ;reset
; jmp int0 ; IRQ0
; jmp int1 ; IRQ1
; jmp int2 ; IRQ2
; jmp pcint0 ; PCINT0
; jmp pcint1 ; PCINT1
; jmp pcint2 ; PCINT2
; jmp pcint3 ; PCINT3
; jmp wdt ; Watchdog Timeout
; jmp tim2_compa ; Timer2 CompareA
; jmp tim2_compb ; Timer2 CompareB
; jmp tim2_ovf ; Timer2 Overflow
; jmp tim1_capt ; Timer1 Capture
; jmp tim1_compa ; Timer1 CompareA
; jmp tim1_compb ; Timer1 CompareB
; jmp tim1_ovf ; Timer1 Overflow
.org $0020
jmp tim0_compa ; Timer0 CompareA $001A
; jmp tim0_compb ; Timer0 CompareB
; jmp tim0_ovf ; Timer0 Overflow $001E
; jmp spi_stc ; SPI Transfer Comlete
; jmp usart0_rxc ; USART0 RX Complete
; jmp usart0_udre ; USART0,UDR Empty
; jmp usart0_txc ; USART0 TX Comlete
; jmp ana_comp ; Analog Comparetor
; jmp adc ; ADC Comversion Comlete
; jmp ee_rdy ; EEEPROM Ready
; jmp twi ; 2-wire Serial
; jmp spm_rdy ; SPM Ready
;------------ End table -------
reset:
.org $0038
;---- Device Initialyze
; ATmega644 int.8MHz @1MHz
; RAM clear (Ref: ChaN's source)
; clr _0 ;Zero reg.
; ldiw Z, RAMTOP ;Clear all variables 参照アドレス取得
; ldiw X, RAMEND-RAMTOP+1 ; 回数として取得
; st Z+, _0 ; Zの指すaddrをゼロクリア後インクリメント (*1)
; sbiw XL, 1 ; 回数減算
; brne PC-2 ;/ ^の結果残り回数が0(Zフラグ=1)でなければ戻る (*1)
; sbiw ZL, 1 ;SP 初期化
; outw SP, Z ;/
clr R16
ldi XL, low(SRAM_SIZE)
ldi XH, high(SRAM_SIZE)
ldi ZL, low(SRAM_START)
ldi ZH, high(SRAM_START)
do_clr:
st Z+, R16
sbiw XL, 1
brne do_clr
; SP clear
ldi R16, high(RAMEND)
ldi R17, low(RAMEND)
out SPH, R16
out SPL, R17
WDT_OFF: cli
wdr
in r16,MCUSR
andi r16, ($FF-(1<<WDRF))
out MCUSR, r16
lds r16, WDTCSR
ori r16, (1<<WDCE)|(1<<WDE)
sts WDTCSR, r16
ldi r16,(0<<WDE)
sts WDTCSR, r16
;------ Initialize post and peripheral ctrl ------
; PB4-LED2(GREEN) for main routine check
; and PB3-lcd/CL PWM output
ldi R16, (1<<DDB4)|(1<<DDB3) ; PB4 set function to output
out DDRB,R16
ldi R16, (1<<PD4) ; LED2 off(negative logic)
out PORTB, R16
; PD4-LED1(RED)
ldi R16, (1<<DDD4) ; PD4 set function to output
ldi R17, (0<<PD4) ; PD4 set Data
out DDRD,R16 ; portD setting
out PORTD,R17 ; LED1 on
; F-PWM Duty50% TCCR0B(WGM02)/TCCR0A(WGM01-0)=111,TCCR0A(COM0A1-0)=01
ldi R16, (1<<WGM02)|(1<<CS00)
ldi R17, (1<<WGM01)|(1<<WGM00)|(1<<COM0A0)
out TCCR0B, R16
out TCCR0A, R17
; カウンタTOP値
ldi ZH, high(tc_div<<1)
ldi ZL, low(tc_div<<1)
lpm R16, Z ; OCR0A
out OCR0A, R16
;led wait値のロード
ldi ZH, high(led_div0<<1)
ldi ZL, low(led_div0<<1)
lpm R16, Z
ldi ZH, high(led_div1<<1)
ldi ZL, low(led_div1<<1)
lpm R17, Z
sts led_cnt0, R16
sts led_cnt1, R17
jmp main
;_/_/_/_/_/_/ int handlers _/_/_/_/_/_/
tim0_compa:
set ; SREG/T=1 for LED wait
; \ 他のINTに時間を空けるためこれのみ
reti
;_/_/_/_/_/_/ Sub routines _/_/_/_/_/_/_/
;---- LED wait and switch routine
led_wait0:
lds R16, led_cnt0 ; led_cnt0 -1
dec R16 ; \
breq led_wait1 ; ^の結果残りが0なら led_wait1 へ
sts led_cnt0, R16 ; 一旦書き戻して戻る
ret
led_wait1:
ldi ZH, high(led_div0<<1) ; led_cnt0 リロードしておく
ldi ZL, low(led_div0<<1) ;\
lpm R16, Z ;\
sts led_cnt0, R16 ;\
lds R16, led_cnt1 ; led_cnt1 -1
dec R16 ; \
breq led_1sec ; ^の結果0ならLED処理へ
sts led_cnt1,R16 ; 一旦書き戻して戻る
ret
led_1sec:
ldi ZH, high(led_div1<<1) ; led_cnt1 リロードしておく
ldi ZL, low(led_div1<<1) ;\
lpm R16, Z ;\
sts led_cnt1, R16 ;\
jmp led_toggle ; led トグル
led_toggle:
in R16, PORTD ; PORTD4のbit取得
ldi R17, (1<<PORTD4)
eor R16,R17 ; bitトグル
out PORTD, R16 ; 出力
ret
;_/_/_/_/_/_/ Main routine_/_/_/_/_/_/_/
main:
ldi R16, (1<<OCIE0A) ; Timer0A コンペア 割込み許可
sts TIMSK0, R16
sei ; 全体割り込み許可
; ldi R16, (1<<PORTB4) ; LED2(GREEN), for "main done"
loop:
sbi PINB, PINB4 ; Done main, On LED2 green
; Check SREG/T as INTed flug
brtc loop ; IF not flaged do looping
call led_wait0 ; フラグが立ってればledウエイトのカウントをする
clt ; SREG/T のクリア
jmp loop
;---------- Constant number -------------
tc_div: .db 250
led_div0: .db 250 ; 1sec=4khz*4000
led_div1: .db 16 ; 250x16=4000
年明けから割りと乗れただけに悔しい思い
グタグタだが頭だけ仕事モードのままで着かない。
とりあえず、これのTimer0(8bit PWM-First)でLCDのCLを2KHzで出力
ついでにコンペアマッチ割込みでLEDを1秒間ごとにトグル
クロックは内臓8MHz/8=1MHz
(LEDが負論理とは気づかずかなり悩んだ。まだ短縮できるかな)
(kaoriya版 Vim からHTMLコンバート)
==================================
; AM644RX 向けテスト
; とりあえずLED点滅でも...
; MPU: ATmega644
; CLK: factory default 1MHz = 8MHz/Prescale8
;
; 外付け発振子のときは、CLKSELヒューズビットを 0000 へアンプログラム
; タイマ割り込み発生チェックにSREGのTフラグを利用
;
;====================================================================
.nolist
.include <m644def.inc>
.list
.WARNING "This Code is not properly tested, use at own risk."
.dseg ;==== data segment ====
.org SRAM_START
; LEDウエイト用カウント値
; 汎用I/Oレジスタ0-2とかでも良い(8bit)
led_cnt0: .byte 1 ; led_wait0 が入る
led_cnt1: .byte 1 ; led_wait1 が入る
.cseg ;==== Code segment ====
;------------ Vecror table ----
; 使わないベクタは指定しない
; 間が抜けてるときは.orgで指定
jmp reset ;reset
; jmp int0 ; IRQ0
; jmp int1 ; IRQ1
; jmp int2 ; IRQ2
; jmp pcint0 ; PCINT0
; jmp pcint1 ; PCINT1
; jmp pcint2 ; PCINT2
; jmp pcint3 ; PCINT3
; jmp wdt ; Watchdog Timeout
; jmp tim2_compa ; Timer2 CompareA
; jmp tim2_compb ; Timer2 CompareB
; jmp tim2_ovf ; Timer2 Overflow
; jmp tim1_capt ; Timer1 Capture
; jmp tim1_compa ; Timer1 CompareA
; jmp tim1_compb ; Timer1 CompareB
; jmp tim1_ovf ; Timer1 Overflow
.org $0020
jmp tim0_compa ; Timer0 CompareA $001A
; jmp tim0_compb ; Timer0 CompareB
; jmp tim0_ovf ; Timer0 Overflow $001E
; jmp spi_stc ; SPI Transfer Comlete
; jmp usart0_rxc ; USART0 RX Complete
; jmp usart0_udre ; USART0,UDR Empty
; jmp usart0_txc ; USART0 TX Comlete
; jmp ana_comp ; Analog Comparetor
; jmp adc ; ADC Comversion Comlete
; jmp ee_rdy ; EEEPROM Ready
; jmp twi ; 2-wire Serial
; jmp spm_rdy ; SPM Ready
;------------ End table -------
reset:
.org $0038
;---- Device Initialyze
; ATmega644 int.8MHz @1MHz
; RAM clear (Ref: ChaN's source)
; clr _0 ;Zero reg.
; ldiw Z, RAMTOP ;Clear all variables 参照アドレス取得
; ldiw X, RAMEND-RAMTOP+1 ; 回数として取得
; st Z+, _0 ; Zの指すaddrをゼロクリア後インクリメント (*1)
; sbiw XL, 1 ; 回数減算
; brne PC-2 ;/ ^の結果残り回数が0(Zフラグ=1)でなければ戻る (*1)
; sbiw ZL, 1 ;SP 初期化
; outw SP, Z ;/
clr R16
ldi XL, low(SRAM_SIZE)
ldi XH, high(SRAM_SIZE)
ldi ZL, low(SRAM_START)
ldi ZH, high(SRAM_START)
do_clr:
st Z+, R16
sbiw XL, 1
brne do_clr
; SP clear
ldi R16, high(RAMEND)
ldi R17, low(RAMEND)
out SPH, R16
out SPL, R17
WDT_OFF: cli
wdr
in r16,MCUSR
andi r16, ($FF-(1<<WDRF))
out MCUSR, r16
lds r16, WDTCSR
ori r16, (1<<WDCE)|(1<<WDE)
sts WDTCSR, r16
ldi r16,(0<<WDE)
sts WDTCSR, r16
;------ Initialize post and peripheral ctrl ------
; PB4-LED2(GREEN) for main routine check
; and PB3-lcd/CL PWM output
ldi R16, (1<<DDB4)|(1<<DDB3) ; PB4 set function to output
out DDRB,R16
ldi R16, (1<<PD4) ; LED2 off(negative logic)
out PORTB, R16
; PD4-LED1(RED)
ldi R16, (1<<DDD4) ; PD4 set function to output
ldi R17, (0<<PD4) ; PD4 set Data
out DDRD,R16 ; portD setting
out PORTD,R17 ; LED1 on
; F-PWM Duty50% TCCR0B(WGM02)/TCCR0A(WGM01-0)=111,TCCR0A(COM0A1-0)=01
ldi R16, (1<<WGM02)|(1<<CS00)
ldi R17, (1<<WGM01)|(1<<WGM00)|(1<<COM0A0)
out TCCR0B, R16
out TCCR0A, R17
; カウンタTOP値
ldi ZH, high(tc_div<<1)
ldi ZL, low(tc_div<<1)
lpm R16, Z ; OCR0A
out OCR0A, R16
;led wait値のロード
ldi ZH, high(led_div0<<1)
ldi ZL, low(led_div0<<1)
lpm R16, Z
ldi ZH, high(led_div1<<1)
ldi ZL, low(led_div1<<1)
lpm R17, Z
sts led_cnt0, R16
sts led_cnt1, R17
jmp main
;_/_/_/_/_/_/ int handlers _/_/_/_/_/_/
tim0_compa:
set ; SREG/T=1 for LED wait
; \ 他のINTに時間を空けるためこれのみ
reti
;_/_/_/_/_/_/ Sub routines _/_/_/_/_/_/_/
;---- LED wait and switch routine
led_wait0:
lds R16, led_cnt0 ; led_cnt0 -1
dec R16 ; \
breq led_wait1 ; ^の結果残りが0なら led_wait1 へ
sts led_cnt0, R16 ; 一旦書き戻して戻る
ret
led_wait1:
ldi ZH, high(led_div0<<1) ; led_cnt0 リロードしておく
ldi ZL, low(led_div0<<1) ;\
lpm R16, Z ;\
sts led_cnt0, R16 ;\
lds R16, led_cnt1 ; led_cnt1 -1
dec R16 ; \
breq led_1sec ; ^の結果0ならLED処理へ
sts led_cnt1,R16 ; 一旦書き戻して戻る
ret
led_1sec:
ldi ZH, high(led_div1<<1) ; led_cnt1 リロードしておく
ldi ZL, low(led_div1<<1) ;\
lpm R16, Z ;\
sts led_cnt1, R16 ;\
jmp led_toggle ; led トグル
led_toggle:
in R16, PORTD ; PORTD4のbit取得
ldi R17, (1<<PORTD4)
eor R16,R17 ; bitトグル
out PORTD, R16 ; 出力
ret
;_/_/_/_/_/_/ Main routine_/_/_/_/_/_/_/
main:
ldi R16, (1<<OCIE0A) ; Timer0A コンペア 割込み許可
sts TIMSK0, R16
sei ; 全体割り込み許可
; ldi R16, (1<<PORTB4) ; LED2(GREEN), for "main done"
loop:
sbi PINB, PINB4 ; Done main, On LED2 green
; Check SREG/T as INTed flug
brtc loop ; IF not flaged do looping
call led_wait0 ; フラグが立ってればledウエイトのカウントをする
clt ; SREG/T のクリア
jmp loop
;---------- Constant number -------------
tc_div: .db 250
led_div0: .db 250 ; 1sec=4khz*4000
led_div1: .db 16 ; 250x16=4000
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(06/04)
(06/02)
(05/31)
(04/11)
(04/05)
最新トラックバック
プロフィール
HN:
GLOCKen
性別:
非公開
ブログ内検索
最古記事
(10/15)
(12/10)
(12/11)
(12/14)
(12/16)
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"
