5.4.8.9
I2C voorbeeld
Voorbeeld: EEPROM 24C64 lezen en schrijven zonder I2C_status opvragen
// I2C Initialization, Bit Rate 100kHz
main(void)
{
word address;
byte data,EEPROM_data;
address=0x20;
data=0x42;
I2C_Init(I2C_100kHz );
// write data to 24C64 (8k x 8) EEPROM
I2C_Start();
I2C_Write(0xA0);
I2C_Write(address>>8);
I2C_Write(address);
I2C_Write(data);
I2C_Stop();
AbsDelay(5);
// read data from 24C64 (8k x 8) EEPROM
I2C_Start();
I2C_Write(0xA0);
I2C_Write(address>>8);
I2C_Write(address);
I2C_Start();
I2C_Write(0xA1);
EEPROM_data=I2C_Read_NACK();
I2C_Stop();
Msg_WriteHex(EEPROM_data);
}
5.4.9 Interrupt
De Controller stelt een veelvoud aan interrupts ter beschikking. Sommige daarvan worden
gebruikt voor systeemfuncties en staan niet ter beschikking van de gebruiker. De volgende
interrupts kunnen door de gebruiker benut worden:
Tabel interrupts
Interrupt naam
INT_0
INT_1
INT_2
INT_3
INT_4
INT_5
INT_6
INT_7
INT_TIM1CAPT
INT_TIM1CMPA
INT_TIM1CMPB
126
// DEVICE ADDRESS : A0
// HIGH WORD ADDRESS
// LOW WORD ADDRESS
// write Data
// delay for EEPROM Write Cycle
// DEVICE ADDRESS : A0
// HIGH WORD ADDRESS
// LOW WORD ADDRESS
// RESTART
// DEVICE ADDRESS : A1
Beschrijving
Externe interrupt0
Externe interrupt1
Externe interrupt2
Externe interrupt3
(alleen
Externe interrupt4
(alleen
Externe interrupt5
(alleen
Externe interrupt6
(alleen
Externe interrupt7
(alleen
Timer1 Capture
Timer1 CompareA
Timer1 CompareB
Mega128)
Mega128)
Mega128)
Mega128)
Mega128)