ATXmega32D4

キャラクタLCD SG2004 を使用する

C言語でプログラムを組んでみる。
回路図はには時計IC RTC8564とリチウム電池
バックアップ回路を掲載しているが、プログラムは時計ICは組み込まれていない。

注意が必要なのは、ATXmegaが3.6v 表示LCDが5Vであることから
出力回路にコンバーターが必要である。

クロックは 内部クロック 32Mhz


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に表示させることに成功した。



プログラム





本文へジャンプ 2013年11月  
ATXmega32D4