Also ich hab mal versucht eine Routine zu erstellen aber irgendwie bleib ich in der "Wait1"-Schleife hängen.
Ich hab auch nicht so ganz bei den Voreinstellungen (Bit Rate, Prescaler) durchgeblickt.
Deshalb hab ich den TWBR auf 10 und den Presccaler auf 4 gestellt (siehe ersten vier Zeilen)
Ich habe mich nach dem MR Mode gerichtet (Seite 188 Datenblatt). Es kann sein das auch noch andere Fehler sich darin befinden.
Code:
ldi temp1, 0b00001010
out TWBR, temp1
ldi temp1, 0b00000001
out TWSR, temp1
ldi temp1, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) ;Start Befehl
out TWCR, temp1
wait1: in temp1,TWCR ;Wenn TWINT gesetzt ist, wurde Start übermittelt
sbrs temp1,TWINT
rjmp wait1
in temp1,TWSR
andi temp1, 0xF8
cpi temp1, 0x08
brne loop
ldi temp1, 0b10010001 ;Adresse des Tempsensors (SLA_R)
out TWDR, temp1
ldi temp1, 0b10000100
out TWCR, temp1
wait2: in temp1, TWCR
sbrs temp1, TWINT
rjmp loop
in temp1,TWSR
andi temp1, 0xF8
cpi temp1, 0x40
brne loop
in temp2, TWDR
ldi temp1, 0b11000100
out TWCR, temp1
in temp1,TWSR
andi temp1, 0xF8
cpi temp1, 0x40
brne loop
in temp3, TWDR
ldi temp1, 0b10010100
out TWCR, temp1
mov temp1, temp2
rcall lcd_data
loop: rjmp loop
Lesezeichen