Hallo Gemeinde
brauchte mal ein paar Tips wie ich das machen muss. Möchte mit einem SAM
D21 einen Taster an einem PCF8574 abfragen ob er geschaltet hat oder
nicht.
1 | void write_a_data(void) // Bus schreiben
|
2 | {
|
3 | uint16_t timeout;
|
4 | timeout = 100;
|
5 | wr_a_packet.address = SLAVE_ADDRESS_1;
|
6 | wr_a_packet.data_length = DATA_LENGTH;
|
7 | wr_a_packet.data = i2c_write_buffer_a;
|
8 | while (i2c_master_write_packet_wait(&i2c_master_instance, &wr_a_packet) != STATUS_OK)
|
9 | {
|
10 | if (timeout ++ == Timeout )
|
11 | {
|
12 | // Error LED_PB30_ON
|
13 | break;
|
14 | }
|
15 | }
|
16 | }
|
mit diesem Teil kann ich z.B. LEDs auf einem PCF schalten.
Bis her habe ich es so versucht:
1 | packet.address = (SLAVE_ADDRESS_2);
|
2 | packet.data_length = 32; //DATA_LENGTH_1;
|
3 | packet.data = i2c_read_buffer;
|
4 | timeout = 0;
|
5 | while (i2c_master_read_packet_wait(&i2c_master_instance, &packet) != STATUS_OK)
|
6 | {
|
7 | if (timeout++ == Timeout)
|
8 | {
|
9 | // Error LED_PB30_ON
|
10 | break;
|
11 | }
|
12 | }
|
leider geht das nicht. Habe mich an das Datenblatt des Herstllers
gehalten.
Eine noch blöde Frage dazu. Beim AVR setze ich doch erst den Ausgang auf
H und lese dann die Veränderung ein. Wie mache ich das beim ARM?
LG KLR