ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

ナイトライダーの回路図を忘れてた

2013年05月29日 22時16分22秒 | 電子工作
ATtiny13Aを使ったナイトライダーですが、肝心の回路図を出すのを忘れてました。



PIC12F509の場合はこれです。


8Pの場合、PICとAVRはほぼ同じような回路に出来ます。

ただ、AVRの場合、リセット端子を普通のI/Oとして使うと
次の書き込みが簡単にできなくなってしまうのが惜しいです。
8Pだと、端子1個でも貴重ですからね。

まあ、PICにしてもGP3が入力専用なので、どっちもどっちですけど。

ATtiny13Aでナイトライダーを作ってみた

2013年05月29日 21時52分31秒 | AVR
昨日のブレッドボードですが、

AVR ATtiny13Aを使ったナイトライダーです。

ソースコードはPICのと基本は同じです。
#define で少し見易くしてみました。


/*
 * 5 LED rotation
 *
 * Created: 2013/05/27 9:53:49
 *  Author: ikkei
 *  Knight rider
 *  for ATtiny13A
 *  FUSE : FF 79

 sink output
    PB2--LED1
    PB1--LED2
    PB0--LED3
    PB4--LED4
    PB3--LED5

 */
 

#include<avr/io.h>
#include <avr/pgmspace.h> 

#define LED_0____ 0x04
#define LED__0___ 0x02
#define LED___0__ 0x01
#define LED____0_ 0x10
#define LED_____0 0x08


#define PAT_NUM 20
//const unsigned char led_patt[PAT_NUM] = { 
const unsigned char led_patt[PAT_NUM] PROGMEM = { 
    LED_0____, // 1
    LED_0____, // 2
    LED_0____, // 3
    LED__0___, // 4
    LED__0___, // 5
    LED___0__, // 6
    LED____0_, // 7
    LED____0_, // 8
    LED_____0, // 9
    LED_____0, // 10
    LED_____0, // 11
    LED_____0, // 12
    LED_____0, // 13
    LED____0_, // 14
    LED____0_, // 15
    LED___0__, // 16
    LED__0___, // 17
    LED__0___, // 18
    LED_0____, // 19
    LED_0____, // 20
};
unsigned char pat_cnt;


int main(void)
{
    DDRB = 0x1F; // PORTB output
    TCCR0A = 0x02; // 0000xx10 CTC mode
    TCCR0B = 0x05; // 00xx0101 4,8MHz/1024 = 213us
    OCR0A  = 234-1;  // 213us x 234 = 50ms

    pat_cnt = 0;
    while(1){
        if (TIFR0 & 1<<OCF0A){ // time up
            TIFR0 |= 1<<OCF0A; // flag clear
            //PORTB = ~led_patt[pat_cnt];
            PORTB = ~pgm_read_byte_near( &led_patt[pat_cnt] );
            pat_cnt++;
            pat_cnt %= PAT_NUM;
        }
    }
}



不等号は表示が乱れるので、全角に変えてあります。

配列の部分をフラッシュメモリにするためにPROGMEM を使っています。
これはAVR特有の作法ですね。
コメントアウトしてある方に戻すと、RAM上になります。

AVR用ISP変換ケーブルを作ってみた

2013年05月29日 00時32分05秒 | AVR
「PICkit2の延長ケーブル」に続いて、
「Single in lineのAVR用ISP端子」と言う2つの前ふりのあと
いよいよ本題の「AVR用ISP変換ケーブル」です。
いや、長かった...

なぜAVR用のISPケーブルなのか、なぜ変換なのか
と言うことを説明するために必要だったのです。


まず、ハーネスQIケーブル6P-6P と2X3のハウジングです。


これをこの変換回路のように差し替えます。

Single in line 側は、全部抜く必要はありません。1,2,4を入れ換えれば良いのです。

出来上がりはこんな風になります。


これをどう使うかと言うと、このようにISPケーブルを延長します。


だったら、直接基板に挿す方が良いでしょう。
と言うことで、今度は用意するのがハーネスQIケーブル6S-6P と2X3のハウジングです。


ソケットの方を2x3にするのです。


このように基板に直接挿します。


2x3の方は、ソケットとプラグで、配列が違うので、注意が必要です。


さらに、ターゲット側がピンヘッダの場合は、両方がソケットのケーブルがあったら良いですね。
と、思ったら、ありました。

でも、これ、2x3の方の配列がソケットなのになぜかプラグの配列になっています。
入れ換えて、こうなります。


使い方はこのようになります。




では、実際にブレッドボードで使っているところがこれです。


Single in lineのAVR用ISP端子を考えた

2013年05月28日 22時44分51秒 | AVR
PICの次はAVRです。
AVRの場合、ISPケーブルと言えばこれですが、

(デジットのAVRWRT2)
2x3になっているので、ブレッドボードではちょっと面倒です。

一応、ブレッドボード用アダプタも作りましたが、ATtiny2313でこんな感じです。


で、8PのATtiny13Aの場合を考えていたら、凄いことに気が付きました。
それは、ISPで使用するピンが8PのPICときれいにかぶっているのです。

PICの場合


AVRの場合

なぜか両方とも2番ピン、3番ピンを使っていないのです。

つまりこういう事です。


と言うわけで、Single in line のこんなAVR用ISPを考えました。

同様にSingle in lineのISP端子を考えた人が居ましたが、私の場合、
ブレッドボード用にGNDの位置が違っています。

この配置だと、冒頭のAttiny2313の場合、こんな簡単になります。



配線図ではこうなります。8Pの場合も同様です。


PICと比べてみましょう。14P PICと8P PICに適合します。


よく似ていますね。
PICの場合は、このままPICkit2につなげば良いのですが、
AVRだと、2x3に変換する必要があります。

一応、アダプタも作ってみました。


でも、さきのQIケーブルで作った方がスマートですね。
では、Single in lineに変換するAVR用ISPケーブルを作ってみましょう。
ちょっと、前ふりが長かったかな。

YMMF(Yamaguchi Mini Maker Faire)の出展承認キター!

2013年05月27日 21時25分57秒 | 電子工作
Yamaguchi Mini Maker Faire の出展申し込みをしていたのですが、
今日、出展承認のメールが来ました。
8/10日は土曜出勤日ですが、年休を取って行こうと思います。

昨年のMFTに行けなかったので、リベンジです。www
今回はアクリル板のCharileplexingがメインです。
もちろん、「ちっちゃいーの」や16セグも展示するつもりです。