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の方の配列がソケットなのになぜかプラグの配列になっています。
入れ換えて、こうなります。


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




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