User manual
126
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); // DEVICE ADDRESS : A0
I2C_Write(address>>8); // HIGH WORD ADDRESS
I2C_Write(address);
// LOW WORD ADDRESS
I2C_Write(data); // write Data
I2C_Stop();
AbsDelay(5);
// delay for EEPROM Write Cycle
// read data from 24C64 (8k x 8) EEPROM
I2C_Start();
I2C_Write(0xA0); // DEVICE ADDRESS : A0
I2C_Write(address>>8); // HIGH WORD ADDRESS
I2C_Write(address);
// LOW WORD ADDRESS
I2C_Start(); // RESTART
I2C_Write(0xA1); // DEVICE ADDRESS : A1
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 Beschrijving
INT_0 Externe interrupt0
INT_1 Externe interrupt1
INT_2 Externe interrupt2
INT_3 Externe interrupt3 (alleen Mega128)
INT_4 Externe interrupt4 (alleen Mega128)
INT_5 Externe interrupt5 (alleen Mega128)
INT_6 Externe interrupt6 (alleen Mega128)
INT_7 Externe interrupt7 (alleen Mega128)
INT_TIM1CAPT Timer1 Capture
INT_TIM1CMPA Timer1 CompareA
INT_TIM1CMPB Timer1 CompareB