Hallo,
Ich muss eine 2KB Chipkarte mittels TWIC beschreiben.
Bisher brauchte ich nur die erste 16 Seiten der Karte ( eine Seite = 16
Byte) von daher hatte ich nie versucht den 257. Byte auf der Karte zu
beschreiben.
Schreib vorgang
1 | void card_page_write (unsigned char* page_content , unsigned char page_index)
|
2 | {
|
3 | TWI_PORT_SELECT.MASTER.ADDR = SLA_W;
|
4 | while( !WaitForTxTWIComplete() );
|
5 |
|
6 | TWIC_MASTER_DATA = CARD_PAGE_SIZE * page_index;
|
7 | while( !WaitForTxTWIComplete() );
|
8 |
|
9 | for(uint8_t i = 0; i < CARD_PAGE_SIZE; i++)
|
10 | {
|
11 | TWI_PORT_SELECT.MASTER.DATA = page_content[i];
|
12 | while( !WaitForTxTWIComplete() );
|
13 | }
|
14 |
|
15 | TWI_PORT_SELECT.MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc;
|
16 | while( !WaitForTxTWIComplete() );
|
17 | _delay_ms(CARD_PAGE_WRITE_TIME_MS);
|
18 | } // void card_page_write (unsigned char* page_content , unsigned char page_index)
|
1 | TWIC_MASTER_DATA = CARD_PAGE_SIZE * page_index;
|
2 | while( !WaitForTxTWIComplete() );
|
Hier setze ich den index auf CARD_PAGE_SIZE(16) * page_index( welche
Seite ich schreiben möchte)
Sobald ich versuche die 16. ([0,.....16] ist eigentlich die 17. Seite)
zu beschreiben, wird die erste Seite der Karte überschrieben.
Hatte jemand schon so ein ähnliches Problem ?
Ich würde mich auf jede Antword freuen.
PS: Microcontroller: XMega 32A4
Gruß,
Kemal