忍者ブログ
細々とネタをご提供しているようで...何よりです。
Posted by - 2026.06.21,Sun
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

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...
カッコいぃ...
Posted by GLOCKen - 2008.02.03,Sun
AM644RX Pin connect
といった感じ。
ネタが無いので特に脈略無く自分用に以前作製したものを晒します。

SW3は、
1. デフォルトではSW3として機能。(細いパターンでクローズ済み)
2. オープンで外部コネクタへ開放。(よってAVRのピンそのまま)
3. シルク"RES"とセンターパッドとのジャンパでRESET-SW(外付け抵抗でPullUpされている)
の排他機能選択(違ってたらすんません)
Posted by GLOCKen - 2008.02.01,Fri
発作的に思いついたので、TeXとかでも良いのだろうけどメンドイ

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
カレンダー
05 2026/06 07
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
GLOCKen
性別:
非公開
バーコード
ブログ内検索
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]