Hallo,
wenn man für einen Atmega644 nicht das TWI_Master.c bzw. .h verwenden,
sondern die Register selbst setzen möchte - gibt es da einen Hinweis,
wie man DDRC setzen muß?
Der AVR soll nur als Master betrieben werden, also kann der SCL-Port als
Ausgang gesetzt werden.
Anders der SDA-Port, der für acht Bits als Ausgang, für das neunte ACK /
NOT ACK - Bit als Eingang geschaltet werden müßte.
Wenn man das selbst macht, wäre das machbar, aber irgendwo bei Google
habe ich gefunden:
1 | // init SCL and SDA with pull-ups
|
2 | DDRC &= (~(1<<SCL) | (1<<SDA));
|
3 | PORTC |= (1<<SCL) | (1<<SDA);
|
Kann man denn die Ports so summarisch setzen? Jedenfalls wird im Rest
des Programms (=TWI_Master.c) das DDRC nirgends mehr erwähnt, d.h., die
Einstellung bleibt so.
(das interessiert mich deshalb so sehr, weil mein PCF8574A noch kein ACK
sendet).
Und noch eine Frage hätte ich zu dem TWI-Statusregister:
Lt. Manual S.213 dachte ich, man könne einfach schreiben
if ((TWSR == 0x08) ... ?
In TWI_Master.c finde ich
if ((TWSR & 0xF8) == 0x08). Muß das so sein?
Viele Grüße
Egon