AVR Cのヘッダなど   



 1 I2Cヘッダー 2019.11.27
 2 LCDヘッダー 2019.11.27






 1 I2Cヘッダー  2019.11.27

 I2Cのヘッダーは以前に作ってあって、利用していましたが一部を変更しました。
大きな変更は2点で次のとおりです。
 1 スレーブアドレスの指定を 8ビット から 7ビット に変更しました。一般には7ビットのようです。
 2 スレーブのローカルアドレスのうち、highアドレスが無いものがあります。今まで 0x00 で無視するようにして
   いましたが、中にはhighアドレスが0x00のものもあるようなので、0xff(255)に変更しました。
ヘッダーファイルのコメントをコピーしておきます。
 /* ***************************************************************************************
  i2c_msr.h  I2Cマスター機能のためのヘッダファイル  2019.11.26 一部修正  (2010.12.25) im
  スレーブアドレスは 7ビット に変更した。
  スレーブのhighアドレスが無いときは 255(0xff)に変更した。(以前は0であった)
  
  swNAK氏のプログラムからimが作製。「動いている」が正しいとは限らない。

  i2c_msr.c とともに使用プログラムフォルダに置くこと。

  FCPUは makefile で決定しているので注意のこと。これにより、下記の#define TWBR_data F_CPU/1000000UL*1.25-2
  で SCKは100kHzに決定される。
  
  RTC読み出しの手順
    // ライト・シーケンス
    I2CStart();             // スタート・コンディション
    I2CWrite(0x68)          // CB(W) Adrs=address<<1 7bit+0  R/W=0
    I2CWrite(0xXX);         // ROM Adrs(H)  Hは不要=無いものには 255(0xff)を書く。スルーされる。
    I2CWrite(0x00);         // ROM Adrs(L)
    I2CWrite(0xXX);         // 0番地書き込みデータ
    I2CWrite(0xXX);         // 1番地書き込みデータ
    I2CStop();              // ストップ・コンディション発行
    
    //リード・シーケンス (読み出す内部番地を書き込んで、リピートする)      -------  流れ  ----------------------
    I2CStart();             // スタート・コンディション                      |スタートコンディション発行           |
    I2CWrite(0x68)          // CB(W) Adrs=address<<1 7bit+0  R/W=0           |コントロールバイト(書き込み)       |
    I2CWrite(0xXX);         // ROM Adrs(H)  Hがないときは 255                |                                     |
    I2CWrite(0x00)          // ROM Adrs(L)指定=読み出しポイント00           |ROMアドレス書き込み(読み出し起点)  |
    I2CStart();             // リピート・スタート・コンディション            |リピートコンディション発行           |
    I2CWrite(0x68)          // CB(R)  Adrs=(address<<1)+1  7bit+1 R/W=1      |コントロールバイト(読み出し)       |
    dat1 = I2CRead(0);      // バイト・リード(ACK応答)                       |読み出し(継続)  自動インクリメント |
    dat1 = I2CRead(1);      // バイト・リード(NOACK応答)                     |読み出し(最終)                     |
    I2CStop();              // ストップ・コンディション発行                  |ストップコンディションで終了         |
                                                                             ----------------------------------------
    スレーブのアドレス指定時は NOACK 対策を施すべきだが省略している
        if(!I2CWrite(0x68<<1)) {  // CB Adrs=0xd0(W)
          // NOACK時
          I2CStop();      // ストップ・コンディション発行
          Delay3();
          string_out("NOACK!!!!");
          while(1){}
        }

  TWIビットレート値設定 100kHzの時は クロック(MHz)*1.25-2 の値になる。←←←(注意)
  8MHz=8  12MHz=13  16MHz=18  20MHz=23
  
********************************************************************************************* */
zipファイルをここに置きます。
                 1 I2Cヘッダー おわり  ↑






 2 LCDヘッダー   2019.11.27

 データ4ビット、コントロール2ビット、及び電源2本の8ピンで接続する 2行×16文字 LCDのヘッダーファイルです。自己流のファイルで機能は乏しいものです。
ヘッダーファイルのコメントをコピーしておきます。
/*******************************************************************
 lcd.h     ファイル名を  lcd.hに変更してください。
  HD4470系 液晶モジュール用コード  060429  041216 im
  LCD ヘッダーファイル (Kusunoki Masahiroさんのものを変更)
  ポートの割り当て
    LCD_DATA_PORT 0:3bit ここからLCDのD4:D7にデータを送る(8ビットを2回に分けて)
    LCD_CTL_PORT  bit_n  LCDの RS(Register Srect)指定
    LCD_CTL_PORT  bit_m  〃    E(Enable)指定
  060117  SRAMを消費しない文字列表示 lcd_putstrp() を追加した。
  
  よく使う関数
  //  lcd_init();
  //  lcd_cls();
  //  lcd_gotopos(uint8_t col,uint8_t lin);
  //  lcd_putch(uint8_t ch);
  //  lcd_putstr(uint8_t *str);
  //  lcd_putstrp("");
  
  注意:メインプログラムに #include <avr/pgmspace.h> が必要です。
  
 ******************************************************************* */
zipファイルをここに置きます。
               2 LCDヘッダー おわり  ↑
























工事中

 1 めんにゅー 1   ほ そ く

  1 めんにゅー 1 おわり  ↑



















  

inserted by FC2 system