2010年12月8日水曜日

変なところがやけに詳しくなるなあ ATmega128-16AU Arduino化でいじった。

ピンアサインが足らなくて全部で31本しか認識してなかったので、出来るかな?でキーアサインのcore部を書き足してしまった。PAから後ろを書き足した。
元は、ATmega1280用だったらしい。・・・PGのラインはいい加減だが、PFから時計回りになるようにしてみた。

ちょっと書き直すと変化するって言う意味で、Arduinoはかなり楽しい。

抜き打ち検査的に、Lチカで、51番まで数値道理に動くのは確認した。(抜き打ちなのでミスは有るかも)

あんまりピン数が多くて、ピン表をピンサイドに貼らないと訳解らなくなりそうだ。64ピンのATmega128-16AUの全ピン対応出来たみたい。

頭から順番に数えた、配列式にポートのA−Gと、マスク番号を並べるって、書く方としては解りにくい。PORTB0 DDRB PINB0 とか並べて書く方が書いてて解かり安いとは思う。

裏手は面倒臭く、表は凄く簡単に・・・Arduinoの思想みたいなのを感じはする。

凄く面倒な事を我慢すれば、私の千鳥型ピン配列のATmega128-16AUの外側に一列ずつ番号順に並べるなんてのも出来る。

そう考えると、他の言語みたいに、ポート8個で、1バイトの配列と考えて、そこにパルスを送って表示するとか言うのは苦手そうに見える。
パルスモーター駆動とかで、4ビットx16個とかの配列を作って、ポートに順番に入れてくってのは、普通にやる事だが・・・そうゆう部分は、ライブラリに全部隠蔽するって言う構造なんだろうな。なるほどとか思う。



/*
  pins_arduino.c - pin definitions for the Arduino board
  Part of Arduino / Wiring Lite

  Copyright (c) 2005 David A. Mellis

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General
  Public License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  Boston, MA  02111-1307  USA

  $Id: pins_arduino.c 804 2009-12-18 16:05:52Z dmellis $
*/

#ifndef _AVR_IO_H_
#include <avr/io.h>
#endif
//#include "wiring_private.h"
#ifndef Wiring_h
#include "wiring.h"
#endif
#ifndef Pins_Arduino_h
#include "pins_arduino.h"
#endif


#ifndef PA
#define PA 1
#define PB 2
#define PC 3
#define PD 4
#define PE 5
#define PF 6
#define PG 7
#define PH 8
#define PJ 10
#define PK 11
#define PL 12
#endif


// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)

//__AVR_ATmega128__
const uint16_t PROGMEM port_to_mode_PGM[] = {
NOT_A_PORT,
&DDRA,
&DDRB,
&DDRC,
&DDRD,
&DDRE,
&DDRF,
&DDRG,
NOT_A_PORT,
};

const uint16_t PROGMEM port_to_output_PGM[] = {
NOT_A_PORT,
&PORTA,
&PORTB,
&PORTC,
&PORTD,
&PORTE,
&PORTF,
&PORTG,
};

const uint16_t PROGMEM port_to_input_PGM[] = {
NOT_A_PIN,
&PINA,
&PINB,
&PINC,
&PIND,
&PINE,
&PINF,
&PING,
};

const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
// PORTLIST
//-------------------------------------------
// ALE ** Physical pin 1 ** 
// NC ** Physical pin 2 ** 
PD, // PD 7 ** logical pin 0 Physical pin 3 ** /T2
PD, // PD 6 ** logical pin 1 Physical pin 4 ** T1
PD, // PD 5 ** logical pin 2 Physical pin 5 ** XCK1
PD, // PD 4 ** logical pin 3 Physical pin 6 ** ICP1
PD, // PD 3 ** logical pin 4 Physical pin 7 ** TXD1
PD, // PD 2 ** logical pin 5 Physical pin 8 ** RXD1
PD, // PD 1 ** logical pin 6 Physical pin 9 ** SDA
PD, // PD 0 ** logical pin 7 Physical pin 10 ** SCL

PB, // PB 7 ** logical pin 8 Physical pin 11 ** 
PB, // PB 6 ** logical pin 9 Physical pin 12 ** 
PB, // PB 5 ** logical pin 10 Physical pin 13 ** 
PB, // PB 4 ** logical pin 11 Physical pin 14 ** 
PB, // PB 3 ** logical pin 12 Physical pin 15 ** 
PB, // PB 2 ** logical pin 13 Physical pin 16 ** 
PB, // PB 1 ** logical pin 14 Physical pin 17 ** 
PB, // PB 1 ** logical pin 15 Physical pin 18 ** 

PE, // PE 7 ** logical pin 16 Physical pin 19 ** 
PE, // PE 6 ** logical pin 17 Physical pin 20 ** 
PE, // PE 5 ** logical pin 18 Physical pin 21 ** 
PE, // PE 4 ** logical pin 19 Physical pin 22 ** 
PE, // PE 3 ** logical pin 20 Physical pin 23 ** 
PE, // PE 2 ** logical pin 21 Physical pin 24 ** 
PE, // PE 1 ** logical pin 22 Physical pin 25 ** 
PE, // PE 0 ** logical pin 23 Physical pin 26 ** 

PF, // PF 0 ** logical pin 24 ** ANALOG 1
PF, // PF 1 ** logical pin 25 ** ANALOG 2
PF, // PF 2 ** logical pin 26 ** ANALOG 3
PF, // PF 3 ** logical pin 27 ** ANALOG 4
PF, // PF 4 ** logical pin 28 ** ANALOG 5
PF, // PF 5 ** logical pin 29 ** ANALOG 6
PF, // PF 6 ** logical pin 30 ** ANALOG 7
PF, // PF 7 ** logical pin 31 ** ANALOG 8
PA, // PF 0 ** logical pin 32 
PA, // PF 1 ** logical pin 33   
PA, // PF 2 ** logical pin 34   
PA, // PF 3 ** logical pin 35  
PA, // PF 4 ** logical pin 36   
PA, // PF 5 ** logical pin 37   
PA, // PF 6 ** logical pin 38   
PA, // PF 7 ** logical pin 39
PC, // PC 7 ** logical pin 40
PC, // PC 6 ** logical pin 41   
PC, // PC 5 ** logical pin 42   
PC, // PC 4 ** logical pin 43  
PC, // PC 3 ** logical pin 44   
PC, // PC 2 ** logical pin 45   
PC, // PC 1 ** logical pin 46   
PC, // PC 0 ** logical pin 47   

PG, // PG 3 ** logical pin 48  
PG, // PG 4 ** logical pin 49   
PG, // PG 0 ** logical pin 50   
PG, // PG 1 ** logical pin 51   
PG, // PG 2 ** logical pin 52 
};
//_BOARD_AMBER128_
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
// PIN IN PORT
// -------------------------------------------
_BV( 7 ) , // PD 
_BV( 6 ) , // PD 
_BV( 5 ) , // PD 
_BV( 4 ) , // PD 
_BV( 3 ) , // PD 
_BV( 2 ) , // PD 
_BV( 1 ) , // PD 
_BV( 0 ) , // PD 

_BV( 7 ) , // PD 
_BV( 6 ) , // PD 
_BV( 5 ) , // PD 
_BV( 4 ) , // PD 
_BV( 3 ) , // PD 
_BV( 2 ) , // PD 
_BV( 1 ) , // PD 
_BV( 0 ) , // PD 

_BV( 7 ) , // PD 
_BV( 6 ) , // PD 
_BV( 5 ) , // PD 
_BV( 4 ) , // PD 
_BV( 3 ) , // PD 
_BV( 2 ) , // PD 
_BV( 1 ) , // PD 
_BV( 0 ) , // PD 

_BV( 0 ) , // PF 
_BV( 1 ) , // PF 
_BV( 2 ) , // PF 
_BV( 3 ) , // PF 
_BV( 4 ) , // PF 
_BV( 5 ) , // PF 
_BV( 6 ) , // PF 
_BV( 7 ) , // PF
_BV( 0 ) , // PA
_BV( 1 ) , // PA 
_BV( 2 ) , // PA 
_BV( 3 ) , // PA 
_BV( 4 ) , // PA 
_BV( 5 ) , // PA 
_BV( 6 ) , // PA 
_BV( 7 ) , // PA
_BV( 7 ) , // PC
_BV( 6 ) , // PC
_BV( 5 ) , // PC
_BV( 4 ) , // PC
_BV( 3 ) , // PC
_BV( 2 ) , // PC
_BV( 1 ) , // PC
_BV( 0 ) , // PC
_BV( 3 ) , // PG
_BV( 4 ) , // PG
_BV( 0 ) , // PG
_BV( 1 ) , // PG
_BV( 2 ) , // PG
};

const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
// TIMERS
// -------------------------------------------
NOT_ON_TIMER, // PD 7 ** 0 ** /T2
NOT_ON_TIMER , // PD 6 ** 1 ** T1
NOT_ON_TIMER , // PD 5 ** 2 ** XCK1
NOT_ON_TIMER , // PD 4 ** 3 ** ICP1
NOT_ON_TIMER , // PD 3 ** 4 ** TXD1
NOT_ON_TIMER , // PD 2 ** 5 ** RXD1
NOT_ON_TIMER , // PD 1 ** 6 ** SDA
NOT_ON_TIMER , // PD 0 ** 7 ** SCL

TIMER2 , // PB 7 ** 8 ** OK
TIMER1B , // PB 6 ** 9 ** OK
TIMER1A , // PB 5 ** 10 ** OK
TIMER0A , // PB 4 ** 11 ** not working
NOT_ON_TIMER , // PB 3 ** 12 ** 
NOT_ON_TIMER , // PB 2 ** 13 ** 
NOT_ON_TIMER , // PB 1 ** 14 ** 
NOT_ON_TIMER , // PB 0 ** 15 ** 

NOT_ON_TIMER , // PE 7 ** 16 ** 
NOT_ON_TIMER , // PE 6 ** 17 ** 
TIMER3C , // PE 5 ** 18 ** OK
TIMER3B , // PE 4 ** 19 ** OK
TIMER3A , // PE 3 ** 20 ** OK
NOT_ON_TIMER , // PE 2 ** 21 ** 
NOT_ON_TIMER , // PE 1 ** 22 ** 
NOT_ON_TIMER , // PE 0 ** 23 ** 

NOT_ON_TIMER , // PF 0 ** 24 ** ANALOG 0
NOT_ON_TIMER , // PF 1 ** 25 ** ANALOG 1
NOT_ON_TIMER , // PF 2 ** 26 ** ANALOG 2
NOT_ON_TIMER , // PF 3 ** 27 ** ANALOG 3
NOT_ON_TIMER , // PF 4 ** 28 ** ANALOG 4
NOT_ON_TIMER , // PF 5 ** 29 ** ANALOG 5
NOT_ON_TIMER , // PF 6 ** 30 ** ANALOG 6
NOT_ON_TIMER , // PF 7 ** 31 ** ANALOG 7
NOT_ON_TIMER , // PA 0 ** 32
NOT_ON_TIMER , // PA 1 ** 33
NOT_ON_TIMER , // PA 2 ** 34
NOT_ON_TIMER , // PA 3 ** 35
NOT_ON_TIMER , // PA 4 ** 36
NOT_ON_TIMER , // PA 5 ** 37
NOT_ON_TIMER , // PA 6 ** 38
NOT_ON_TIMER , // PA 7 ** 39
NOT_ON_TIMER , // PC 7 ** 40
NOT_ON_TIMER , // PC 6 ** 41
NOT_ON_TIMER , // PC 5 ** 42
NOT_ON_TIMER , // PC 4 ** 43
NOT_ON_TIMER , // PC 3 ** 44
NOT_ON_TIMER , // PC 2 ** 45
NOT_ON_TIMER , // PC 1 ** 46
NOT_ON_TIMER , // PC 0 ** 47
NOT_ON_TIMER , // PG 4 ** 48
NOT_ON_TIMER , // PG 3 ** 49
NOT_ON_TIMER , // PG 0 ** 50
NOT_ON_TIMER , // PG 1 ** 51
NOT_ON_TIMER , // PG 2 ** 52
};

0 件のコメント:

コメントを投稿