Moin!
Ich habe mir bei Reichelt einige der 4KB Chipkarten gekauft und versuche
nun, Daten darauf zu speichern. Bislang leider erfolglos :(
Ich benutze einen Mega8. SCL der Karte hängt an Pin 0, SDA an Pin 1 von
Port B.
Beide Leitungen sind mit einem 10k Pull-up Widerstand versehen.
An Port D hängen ein paar LEDs gemäß dem Tutorial (1k in der Leitung)
Mein Programm soll die LEDs einschalten: 0xFF nach Port D (ich habe +
der LEDs am controller)
Danach soll 0b10101010 in den EEPROM der Karte geschrieben werden,
dieses direkt danach ausgelesen werden und nach Port D ausgegeben werden
-> jede 2. LED sollte ausgehen, wenn alles geklappt hat.
Erst habe ich versucht, nach Datenblatt des EEPROM selber die Routinen
zu schreiben. Immerhin kam am Oszilloskop was wackelndes an... Soviel
zum Erfolg ;)
Nun versuche ich die AVR300.asm von oben ^^ zu nutzen.
Leider noch erfolgloser. Diesmal tut sich rein garnichts am Ausgang des
Controllers. :(
Mein Code entspricht der AVR300.asm. Ich habe lediglich DDRD durch DDRB
und die entspechenden PINs angepasst.
Außerdem ist dies hier eingefügt:
;-----------------------------------------------------
;**** Interrupt Vectors ****
.org 0x000 ; kommt ganz an den Anfang des Speichers
rjmp RESET ; Interruptvektoren berspringen
; und zum Hauptprogramm
reti ;rjmp EXT_INT0 ; IRQ0 Handler
reti ;rjmp EXT_INT1 ; IRQ1 Handler
reti ;rjmp TIM2_COMP ; Timer2 Compare Handler
reti ;rjmp TIM2_OVF ; Timer2 Overflow Handler
reti ;rjmp TIM1_CAPT ; Timer1 Capture Handler
reti ;rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti ;rjmp TIM1_COMPB ; Timer1 CompareB Handler
reti ;rjmp TIM1_OVF ; Timer1 Overflow Handler
reti ;rjmp TIM0_OVF ; Timer0 Overflow Handler
reti ;rjmp SPI_STC ; SPI Transfer Complete Handler
reti ;rjmp USART_RXC ; USART RX Complete Handler
reti ;rjmp USART_DRE ; UDR Empty Handler
reti ;rjmp USART_TXC ; USART TX Complete Handler
reti ;rjmp ADC ; ADC Conversion Complete Interrupt Handler
reti ;rjmp EE_RDY ; EEPROM Ready Handler
reti ;rjmp ANA_COMP ; Analog Comparator Handler
reti ;rjmp TWSI ; Two-wire Serial Interface Handler
reti ;rjmp SPM_RDY ; Store Program Memory Ready Handler
;LEDs einschalten
ldi temp, 0xFF
out DDRD, temp
out PORTD, temp
RESET:
;init
rcall i2c_init
;schreiben
ldi i2cadr, 0b10100000
rcall i2c_start
ldi i2cdata, 0x00
rcall i2c_do_transfer
ldi i2cdata, 0b10101010
rcall i2c_write
rcall i2c_stop
;1 sekunde pause
rcall wait_1s
;lesen
ldi i2cadr, 0b10100000
rcall i2c_start
ldi i2cdata, 0x00
rcall i2c_do_transfer
ldi i2cadr, 0b10100001
rcall i2c_rep_start
sec
rcall i2c_read
;LEDs schalten
out PORTD, i2cdata
rcall i2c_stop
loop:
rjmp loop
;----------------------------------------------
danach folgen die vorhandenen Routinen.
Hat jemand vielleicht Beispielcode, den er auf einem Mega8 erfolgreich
eingesetzt hat? Ich bin für jede Hilfe dankbar.
Schönen Abend noch