ATXmega32D4
C言語でプログラムを組んでみる。
回路図はには時計IC RTC8564とリチウム電池
バックアップ回路を掲載しているが、プログラムは時計ICは組み込まれていない。
注意が必要なのは、ATXmegaが3.6v 表示LCDが5Vであることから
出力回路にコンバーターが必要である。
AVRstudio6 を開き(遅い)ファイル名を入力する
プログラムを記入する
buildして エラー0ならば、 AVRISPmarkUを接続して
memoriysで HEXファイルをprogram する
//ATmegaとの違い
#include <io.h>---->#include <avr/io.h>
#define LED_GON PORTB |= _BV(PB0)--->#define LED_GON PORTB.OUT |= _BV(0)
bit_is_clear (PINC ,PC7) ---> bit_is_clear (PORTC.IN ,7)
;------------------------------------------------
// 内部 32MHz 発振子で動作させる
void clock_internal_init(void)
{
// 内部 32 MHz 発振子を許可
OSC.CTRL |= OSC_RC32MEN_bm;
// 発信器が安定するまで待つ
loop_until_bit_is_set(OSC.STATUS, OSC_RC32MRDY_bp);
// 設定変更を許可する
CPU_CCP = CCP_IOREG_gc;
// クロックを内部 32 MHz クロックに設定
CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
}
;-----------------------------------------------
メインプログラムでは 初めに 内部発振か外部か決める
PORTの設定は DDRA がPORTA.DIRに変わっている
int main () {
/* ATXmega 動作 */
clock_internal_init(); // 内部 32 MHz で動作
// clock_external_init(); // 外部 32 MHz で動作
//初期化 出力=1 入力=0
PORTA.DIR = 0x00; // 0b0000-0000 全IN
PORTB.DIR = 0x03; // 0b0000-0011
PORTC.DIR = 0x00; // 0b0000-0000
PORTD.DIR = 0xF3; // 0b1111-0011
;ーーーーーーーーーーーーーーーーーーーーーーーー
とりあえず、LCDに表示させることに成功した。
|