USI: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
K (Kategorien: AVR I2C)
Zeile 9: Zeile 9:
// 2-wire mode; Hold SCL on start and overflow; ext. clock
// 2-wire mode; Hold SCL on start and overflow; ext. clock
USICR |= (1<<USIWM1) | (1<<USIWM0) | (1<<USICS1);
USICR |= (1<<USIWM1) | (1<<USIWM0) | (1<<USICS1);
DDR_USI  &= ~(1<<PORT_USI_SDA);
PORT_USI &= ~(1<<PORT_USI_SDA);
DDR_USI  |=  (1<<PORT_USI_SCL);
PORT_USI |=  (1<<PORT_USI_SCL);
</pre>
</pre>



Version vom 18. Januar 2006, 20:03 Uhr


Das Universal serial Interface USI ist eine in manchen Atmelcontrollern (z.B. attinny26, attiny2313) verwendete serielle Schnittstelle. Es kann unter anderem als TWI Interface, der Atmelvariante des I2C Buses, verwendet werden.

USI als I2C/TWI Interface

// 2-wire mode; Hold SCL on start and overflow; ext. clock
USICR |= (1<<USIWM1) | (1<<USIWM0) | (1<<USICS1);

Mit dieser Konfiguration gelten folgende Tabellen für den SDA respektive SCL Pin:

SDA
DDR SDA Shiftreg. Bit 7 PORT SDA PIN SDA
0 X X 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1


SCL
DDR SCL Startdet. Overflowdet. PORT SCL PIN SCL
0 X X X 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0