Servus Leute
ich bin möchte hier Daten, die auf einem RFID-Chip der Firma NXP
gespeichert sind, über eine I2C Schnittstelle auslesen. Folgendes
Hardware benutze ich:
RFID-Chip: NXP - SL3S4011_4021
Microcontroller: ATMEGA16
Board: STK500 Entwicklerboard
Debugger: JTAG ICE3 MKII
Software: AVR Studio 6
Der NXP Chip wurde mit dem Tool "Simple I2C" erfolgreich getestet, der
chip funktioniert einwandfrei.
Ich habe nun im AVR Studio mittels der Bibliothek von Peter Fleury ein
Programm für die I2C Kommunikation erstellt. Es sieht folgendermaßen
aus:
1 | #include <asf.h>
|
2 | #include <avr/io.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <twimaster.c>
|
5 | #include <util/twi.h>
|
6 | #include "i2cmaster.h"
|
7 |
|
8 | #define Adr_NXP 0xA2 // Read: 0xA3 (Adresse 10100011) // Write: 0xA2 (Adresse 10100010)
|
9 | #define Wert //
|
10 |
|
11 |
|
12 | //############ init MAX1238 via I2C
|
13 | void NXP_init(void)
|
14 | {
|
15 | i2c_start(0xA3);
|
16 | i2c_readAck(Wert);
|
17 | i2c_stop(); // stop i2c
|
18 | }
|
19 |
|
20 | //########################### main
|
21 | int main(void)
|
22 | {
|
23 | cli();
|
24 | i2c_init();
|
25 | sei();
|
26 | NXP_init();
|
27 | }
|
Der Code bringt mir bei der kompilierung keinen Fehler, allerdings habe
ich irgendein Problem mit dem TWI-Registern wenn ich den Code Debuge und
Eine Überwachung der einzelnen Register durchführe. Es wird mir
folgender Error gebracht:
TWBR Syntax error: parsing stopped at (*(volatile uint8_t *)((0x00) +
0x20)). Error
TWSR Syntax error: parsing stopped at (*(volatile uint8_t *)((0x01) +
0x20)). Error
Und diesen Fehler bekomme ich bei allen Registern, dementsprechnd steht
auch nichts in meinem WERT, den ich gerne ausgelesen hätte.
Eine Suche nach diesem Fehler erbrachte bis jetzt nichts. Syntaxfehler
zeigen doch eigentlich auf eine falsch gesetztes oder fehlendes Zeichen
ist. Der Code wird jedoch ohne Fehler kompiliert und wie gesagt,
eigentlich sollten doch in diesen Registern Werte stehen ?
Um die I2C Kommunikation durchzuführen sollten wenigstens Werte auf dem
TWSR Register gesetzt sein, ist aber nicht der Fall.
Was mache ich hier falsch, wer kann helfen ?
LG Hans