;**************************************************************************************** ; Mega 128 Scope Controller Program ; (c) Martin Cibulski ; ; Serial EEPROM Access ;**************************************************************************************** .equ TWI_ST_START = 0x08 .equ TWI_ST_REPSTART = 0x10 .equ TWI_ST_SLA_W_ACK = 0x18 .equ TWI_ST_DATA_ACK = 0x28 .equ TWI_ST_SLA_R_ACK = 0x40 .equ TWI_SLA_W = 0b10100000 .equ TWI_SLA_R = 0b10100001 ;**************************************************************************************** twi_test: rcall twi_init twi_test_01: ldi r16 ,0x55 ldi r25 ,high(0) ldi r24 ,low(0) rcall twi_write brtc twi_test_01 twi_test_02: ldi r25 ,high(0) ldi r24 ,low(0) rcall twi_read brtc twi_test_02 call printf_byte_hex PUTC 13 twi_test_03: ldi r16 ,0xAA ldi r25 ,high(0) ldi r24 ,low(0) rcall twi_write brtc twi_test_03 twi_test_04: ldi r25 ,high(0) ldi r24 ,low(0) rcall twi_read brtc twi_test_04 call printf_byte_hex PUTC 13 set ret ;**************************************************************************************** twi_init: ldi r16 ,12 ;400 kHz at 16 MHz CPU clock sts TWBR ,r16 ldi r16 ,0 ;no clock prescaler sts TWSR ,r16 ret ;**************************************************************************************** ;Write one byte into serial EEPROM ; ;r16 byte ;r25:r24 adress ;**************************************************************************************** twi_write: push r17 push r18 clt ldi r18 ,(1<