Tue 01/21, 2014

サイコロKA2 [Electronics ]

dice.png積みマイコンを使った簡単な電子工作として Freescale MC9RS08KA2 による電子サイコロを作りました。元ネタは noritan さんの「ルーレットKA2」です。そちらではGPIOの4ポートを使って8個のLEDを使いますが、サイコロ用には4系統7個のLEDとしました。ポートは出力固定でシンク電流での点灯のみとするため電流制限抵抗も入れています。これは2個並列点灯保護のためでもあります。下図がLED周辺の回路図ですが、図上のLEDの位置はサイコロの目の配置になっています。この色は視認性が良くなかったかも。 dice_schemaric.png

コードはLEDの表示定義を編集した他に、表示確定時のブザー制御を外しています。これはこの部分を通るとパターン0の表示に戻ってしまうからです。オリジナルのルーレットでも同じようになったのですが、コードを見ても何故そうなるのかわかりません。下がオリジナルとの差分です。

*** Roulette.asm.org	Fri Jan 17 21:05:22 2014
--- Roulette.asm	Tue Jan 21 22:10:50 2014
***************
*** 154,160 ****
  RELEASE_PERIOD: equ     6               ; Period of button release.
  MAX_SPEED:      equ     255             ; Maximum speed of LED.
  MIN_SPEED:      equ     13              ; Minimum speed of LED.
! LED_AMOUNT:     equ     8               ; Number of LEDs.
  
  ;**************************************************************
  ;
--- 154,160 ----
  RELEASE_PERIOD: equ     6               ; Period of button release.
  MAX_SPEED:      equ     255             ; Maximum speed of LED.
  MIN_SPEED:      equ     13              ; Minimum speed of LED.
! LED_AMOUNT:     equ     6  ; 8               ; Number of LEDs.
  
  ;**************************************************************
  ;
***************
*** 208,222 ****
  ;==============================================================
                  align   64
  PTAD_PATTERN:   ;       PTAD      PTADD
!                 fcb     %00100000,%00100001   ; 0 5-0
!                 fcb     %00000010,%00000011   ; 1 1-0
!                 fcb     %00000001,%00000011   ; 2 0-1
!                 fcb     %00010000,%00010010   ; 3 4-1
!                 fcb     %00000010,%00010010   ; 4 1-4
!                 fcb     %00100000,%00110000   ; 5 5-4
!                 fcb     %00010000,%00110000   ; 6 4-5
!                 fcb     %00000001,%00100001   ; 7 0-5
!                 
  ;**************************************************************
  ;*  Macro code definition.
  ;**************************************************************
--- 208,228 ----
  ;==============================================================
                  align   64
  PTAD_PATTERN:   ;       PTAD      PTADD
!                 ; fcb     %00100000,%00100001   ; 0 5-0
!                 ; fcb     %00000010,%00000011   ; 1 1-0
!                 ; fcb     %00000001,%00000011   ; 2 0-1
!                 ; fcb     %00010000,%00010010   ; 3 4-1
!                 ; fcb     %00000010,%00010010   ; 4 1-4
!                 ; fcb     %00100000,%00110000   ; 5 5-4
!                 ; fcb     %00010000,%00110000   ; 6 4-5
!                 ; fcb     %00000001,%00100001   ; 7 0-5
!                 ;
!                 fcb     %00110010,%00110011   ; 1 0
!                 fcb     %00110001,%00110011   ; 2 1
!                 fcb     %00110000,%00110011   ; 3 0,1
!                 fcb     %00100001,%00110011   ; 4 1,4
!                 fcb     %00100000,%00110011   ; 5 0,1,4
!                 fcb     %00000001,%00110011   ; 6 1,4,5
  ;**************************************************************
  ;*  Macro code definition.
  ;**************************************************************
***************
*** 443,449 ****
  ;=  disable_mtim();
  ;==============================================================
  stop_init:
!         mov     #%00000000,PTAD
          mov     #%00110011,PTADD
          enable_kbi
          disable_rti
--- 449,455 ----
  ;=  disable_mtim();
  ;==============================================================
  stop_init:
!         mov     #%00110011,PTAD ; #%00000000,PTAD
          mov     #%00110011,PTADD
          enable_kbi
          disable_rti
***************
*** 631,636 ****
--- 637,644 ----
          disable_kbi
          enable_mtim
          enable_rti
+         bra epilogue_done
+         ;
          mov     #HIGH_6_13(FANFARE),sound_page
          lda     led_index
          beq     set_sound
***************
*** 670,676 ****
          incx
          bra     epilogue_loop
  
! epilogue_done:        
          jmp     prologue_loop
  
  ;-----------------------------------------------------
--- 678,684 ----
          incx
          bra     epilogue_loop
  
! epilogue_done:       
          jmp     prologue_loop
  
  ;-----------------------------------------------------

8 pin DIP な 32 bit ARM マイコンが登場した昨今ですが、このようなローエンド 8 bit マイコンの場は価格を無視すれば超低消費電力用途向けに限られていくかも知れません。アマチュアが少数だけ使う分にはチップの価格差は気にならないですしね。

Posted by masato at 10:20 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1862
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?