N.Y.Cityのまちかど

Studuino

スタディーノ(Studuino)開発メモ

ポート

マイコン・Studuinoのポートマップ

ATmega168 Studuino Memo
PB0(ICP) D8 サーボ出力
PB1(OC1A) D9 サーボ出力
PB2(SS/OC1B) D10 サーボ出力
PB3(MOSI/OC2) D11/MOSI SPI/サーボ出力
PB4(MISO) D12/MISO SPI/サーボ出力
PB5(SCK) D13/SCK SPI/オンボードLED
PB6(XTAL1/OTSC1) -- XTAL
PB7(XTAL2/OTSC2) -- XTAL
PC0(ADC0) A0 オンボードSW/センサ入力ピン
PC1(ADC1 A1 オンボードSW/センサ入力ピン
PC2(ADC2) A2 オンボードSW/センサ入力ピン
PC3(ADC3) A3 オンボードSW/センサ入力ピン
PC4(ADC4/SDA) A4/SDA I2C(TWI)/センサ入力ピン
PC5(ADC5/SCL) A5/SCI I2C(TWI)/センサ入力ピン
ADC6 A6 センサ入力ピン
ADC7 A7 センサ入力ピン
PD0(RXD) D0/RXI USART
PD1(TXD) D1/TXO USART
PD2(INT0) D2 サーボ出力
PD3(INT1) D3
PD4(XCK/T0) D4 サーボ出力
PD5(T1) D5
PD6(AIN0) D6
PD7(AIN1) D7 サーボ出力

入出力ポート

レジスタ名のxはポート(B,C,D) nはピン番号を表す。

関係レジスタ
レジスタ名 役割
DDRx ポートx方向レジスタ
PORTx ポートx出力レジスタ
PINx ポートx入力レジスタ
MCUCR MCU制御レジスタ
設定レジスタの項目と意味
項目名
レジスタ名 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
MCUCR - (BODS) (BODSE) PUD - - (IVSEL) (IVCE)
PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
DDRB DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRB0
PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
PORTC - PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0
DDRB - DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0
PINB - PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0
PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0
DDRD DDRD7 DDRD6 DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRD0
PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0
入出力設定
DDxn PORTxn PUD(MCUCR) 入出力 プルアップ抵抗 備考
0 0 X 入力 Hi-Z
0 1 0 入力 Pxnに外部からLowを入力するとソース電流が流れる
0 1 1 入力 Hi-Z
1 0 X 出力 Low(シンク)出力
1 1 X 出力 High(ソース)出力
交換機能

交換機能により、入出力ポート「ではなくなる」ポートがある。

ピン値の読み込み

DDxnレジスタの設定に関係なく、PINxnレジスタビットを通じてポートの電圧を読み込むことができる。

ピン値の出力

出力モードにおいてPORTxnに1を書くとピンがHignに駆動される。同様に0を書くとピンがLowに駆動される。

タイマ

PWM付き8ビット タイマ/カウンタ0 (TC0)

8ビットタイマ・カウンタで、2つの独立した比較部を持つ。

関係レジスタ
レジスタ名 役割
TCNT0 TC0のカウンタ(計数カウンタ)
OCR0A 比較レジスタA
OCR0B 比較レジスタB
TCCR0A タイマ/カウンタ0制御レジスタA
TCCR0B タイマ/カウンタ0制御レジスタB
TIMSK0 タイマ/カウンタ0割込み許可レジスタ
TIFR0 タイマ/カウンタ0割込み要求フラグレジスタ
タイマ動作の種類
標準動作

カウンタ(TCNT0)をインクリメントしていって、0xffに到達した次のインクリメントでカウンタ(TCNT0)をリセットする。

比較一致タイマ/カウンタ解除(CTC)

カウンタ(TCNT0)と比較レジスタA(OCR0A)または比較レジスタB(OCR0B)を比較し、一致したところでカウンタ(TCNT0)をリセットする。

高速PWM動作
位相基準PWM動作
設定レジスタの項目と意味
項目名
レジスタ名 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
TCCR0A COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00
TCCR0B FOC0A FOC0B - - WGM02 CS02 CS01 CS00
TIMSK0 - - - - - OCIE0B OCIE0A TOIE0
プリスケーラ
CS02 CS01 CS00 意味 クロック8MHzの場合
0 0 0 停止(タイマ/カウンタ0動作停止) ---
0 0 1 プリスケーラなし 8MHz=0.125usec
0 1 0 8分周 1MHz=1usec
0 1 1 64分周 125kHz=8usec
1 0 0 256分周 31.05kHz=32usec
1 0 1 1024分周 7.8125kHz=128usec
1 1 0 T0ピンネガティブエッジ(外部クロック) ---
1 1 1 T0ピンポジティブエッジ(外部クロック) ---
タイマ動作設定
WGM02 WGM01 WGM00 意味
0 0 0 標準動作
0 0 1 8ビット位相基準PWM動作
0 1 0 比較一致タイマ/カウンタ解除(CTC)動作
0 1 1 8ビット高速PWM動作
1 0 0 (予約)
1 0 1 位相基準PWM動作
1 1 0 (予約)
1 1 1 高速PWM動作
タイマの使い方(基本設定)

カウンタ(TCNT0)を0クリアしておく。

プリスケーラを設定する。プリスケーラはTCCR0BのCS02~CS00で設定する。まずはあらかじめクロック周波数(内蔵クロックの場合8MHz)を確認しておく。

タイマの使い方(比較一致タイマ)

タイマの動作設定をする。タイマ動作はWGM02~WGM01で設定する。(レジスタがTCC0AとTCC0Bにまたがっていることに注意)

比較レジスタA(OCR0A)、比較レジスタB(OCR0B)を設定する。

割込み許可を設定する。比較レジスタA(OCR0A)の一致で割込みを発生するときはOCIE0Bに1を、比較レジスタB(OCR0B)の一致で割込みを発生するときはOCIE0Aに1をセットする。

作例

(作例)3-3-7拍子マシン
Studinoを使って3-3-7拍子を奏でる簡単なおもちゃを作りました

現在ご覧のページの最終更新日時は2019/10/26 17:23:28です。

Copyright (C) N.Y.City ALL Rights Reserved.

Email: info[at]nycity.main.jp