Forum: Mikrocontroller und Digitale Elektronik I2C-Programmierung für NXP Chip


von Hans_XY (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.