/*
*********************************************************************************************************
*
* File : HAL.C
* Data : March 20, 2007
*********************************************************************************************************
*/
#include "hal.h"
/*
*********************************************************************************************************
* IOPORT_INIT
*
* Description :
* Arguments :
* Returned Values : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
inline void IOPORT_INIT(void)
{
//--------------------------------------------------------------------------------------------//
//| DDxn |PORTxn | PUD | I/O |PULL-UP| COMMENT //
//| | |(in MCUCR)| | | //
//| 0 | 0 | x | Input | No | Tri-state(Hi-z) //
//| 0 | 1 | 0 | Input | Yes | Pxn will source current if ext. pulled low //
//| 0 | 1 | 1 | Input | No | Tri-state(Hi-z) //
//| 1 | 0 | x | Output | No | Output Low(sink) //
//| 1 | 1 | x | Output | No | Output High(sourced) //
//--------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------
// PORTB Function NAME I/O DDRB PORTB
// PB7 GIO/PCINT7/[X2]/TOSC2 - O 1 0 output
// PB6 GIO/PCINT6/[X1]/TOSC1 - I 0 1 input
// PB5 GIO/PCINT5/[SCK] - O 1 0
// PB4 GIO/PCINT4/[MISO] - I 0 0
// PB3 GIO/PCINT3/[MOSI]/OC2A - O 1 0
// PB2 GIO/PCINT2/[SS]/OC1B LED_R O 1 0
// PB1 [GIO]/PCINT1/OC1A GDO2 I 0 0
// PB0 [GIO]/PCINT0/ICP1/CLKO CSn O 1 1
DDRB = B1010_1101;
PORTB = B0100_0001;
//-----------------------------------------------------------------------
// PORTC Function NAME I/O DDRB PORTB
// - - - - 0 0
// PC6 GIO/PCINT14/[RESET] - I 0 0
// PC5 GIO/PCINT13/ADC5/SCL SCL - 0 1
// PC4 GIO/PCINT12/ADC4/SDA SDA - 0 1
// PC3 GIO/PCINT11/ADC3 LED3 O 1 0
// PC2 GIO/PCINT10/ADC2 LED2 O 1 0
// PC1 [GIO]/PCINT9/ADC1 LED1 O 1 0
// PC0 [GIO]/PCINT8/ADC0 BATON Hi-z/O 0/1 0 // change between Hi-z and output
DDRC = B0000_1110;
PORTC = B0011_0000;
//-----------------------------------------------------------------------
// PORTD Function NAME I/O DDRB PORTB
// PD7 [GIO]/PCINT23/AIN1 MC- O 1 0
// PD6 [GIO]/PCINT22/AIN0/OC0A MC+ O 1 0
// PD5 [GIO]/PCINT21/T1/OC0B KEY I 0 0 // pull down with resistance
// PD4 [GIO]/PCINT20/T0/XCK THI O 1 0 // not use , now is for test
// PD3 GIO/PCINT19/[INT1]/OC2B INT1 I 0 1 // external pull up
// PD2 GIO/PCINT18/[INT0] INT0 I 0 1 // external pull up
// PD1 GIO/PCINT17/TXD TXD O 1 1 // Input for Charge, output for UART
// PD0 GIO/[PCINT16]/RXD RXD I 0 1 //
DDRD = B1101_0010;
PORTD = B0000_1111;
//-----------------------------------------------------------------------
// PORTD Function NAME I/O DDRB PORTB
// ADC7 ADC7 BATIN - - -
// ADC6 ADC6 MOTORIN - - -
//-----------------------------------------------------------------------
// 每 每 每 [PUD] 每 每 IVSEL IVCE
//MCUCR &= ~(1<<PUD);
/*pin change interrupt*/
//PCINT23 PCINT22 PCINT21 PCINT20 PCINT19 PCINT18 PCINT17 PCINT16 (PCMSK2) PORTD
// 0 0 KEY 0 [TILT] [SWITCH] CHGST 0
PCMSK2 = B0000_0000;
//每 PCINT14 PCINT13 PCINT12 PCINT11 PCINT10 PCINT9 PCINT8 (PCMSK1) PORTC
//0 0 0 0 0 0 0 0
PCMSK1 = B0000_0000;
//PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 (PCMSK0) PORTB
// 0 0 0 0 0 0 GDO2 0
PCMSK0 = B0000_0000;
//每 每 每 每 每 PCIE2 PCIE1 PCIE0 (PCICR) //pin change enable
//0 0 0 0 0 1 0 1
PCICR = B0000_0000;
//每每每每每PCIF2 PCIF1 PCIF0 (PCIFR)
//0 0 0 0 0 0 0 0
//PCIFR=B0000_0000;
/*external interrupt*/
//B00 Lower level
//B01 Any logical change
//B10 Falling edge
//B11 Rising edge
//每 每 每 每 ISC11 ISC10 ISC01 ISC00 (EICRA)
EICRA = B0000_0001;
//每 每 每 每 每 每 INT1 INT0 (EIMSK)
EIMSK = B0000_0001;
//每 每 每 每 每 每 INTF1 INTF0 (EIFR)
//EIFR = B0000_0000;
}
//------------------------------------------------------------------------------
void HAL_INIT(void)
{
_CLI();
IOPORT_INIT();
}
//------------------------------------------------------------------------------
- 1
- 2
- 3
- 4
前往页