Hallo,
Ich benötige einen I2C Slave auf einem ATTiny417. Leider ändert sich
beim einem Broadcast auf alle Adressen vom Master im SSTATUS Register
nichts. Ich mutmaße das ich den Clock, Port oder CPUINT nicht richtig
configuriert habe.
Was muss ich bei den Ports einstellen? Genügt das MUX oder muss ich den
Port auf Output oder input stellen?
1 | PORTMUX_CTRLB = 0x10; // twi0
|
Bei den Clocks habe ich nichts geändert. CLK_MAIN dürfte auf 20MHz
stehen. Der Prescaler steht auf 6. Aber wo kann ich den Takt für CLK_PER
und CLK_CPU einstellen/aktivieren? Oder hängen beide direkt am Prescaler
und haben nun 3,33Mhz?
Initialisierung:
1 | TWI0_SADDR = 0x11 << 1;
|
2 | //TWI0_SADDRMASK = 0xff;
|
3 | TWI0_SCTRLA = 0x71;
|
4 | TWI0_SCTRLB = 0x7;
|
Abfrage um festzustellen ob Adresse stimmt
1 | if(twi_test_ap() | twi_test_apif()) {
|
2 | REG->wr_bits.led_vtr1 = ~REG->wr_bits.led_vtr1;
|
3 | twi_ackact();
|
4 | state = (TWI0_SDATA & 1) ? DATX : DATX;
|
5 | }
|