Randbedingungen: Ein über SPI angeschlossener Chip muss nach dem Reset initialisiert werden. Die SPI Routine zum Schreiben eines Registers mit einem bestimmten Wert ist bereits vorhanden. Sie heisst void SPI_WriteReg(UINT8 register, UINT8 value). Der Chip enthält insgesamt 16 Register die von 0 bis 15 adressierbar sind. Die Register des Chips müssen laut Hersteller mit folgenden Werten in der angegebenen Reihenfolge aufgesetzt werden: Register0 = 12 Register12 = 13 Register13 = 3 Register15 = 56 Register1 = 129 Register12 = 2 Register7 = 212 Die Tabelle der aufzusetzenden Register ist laut Spezifikation des Herstellers vorläufig. Es ist daher gut möglich, dass noch weitere Register zu initialisieren sein werden. Erstellen Sie eine allgemeine ChipInit() Funktion in C um den Chip entsprechend der Tabelle zu initialisieren. Achten Sie auf Erweiterbarkeit falls in Zukunft noch weitere Register initialsiert werden müssen.
Ahh....si j'avais le temps de faire tes devoires....
Am elegantesten mit einer Struct-Tabelle und dann die Tabelle bis zum Ende ausgeben (sizeof-Operator). Die Tabelle kann dann beliebig erweitert werden. Peter
Hi Peter, Kannst du mir ein Ansatz geben ? Wie meinst du mit sizeof-Operator ? Ich bin eigentlich Neuling in den Sachen. Ich danke dir. Beranger
Hallo, hier ein Problem mit dem SPI Verbingung Randbedingungen: Ein über SPI angeschlossener Chip muss nach dem Reset initialisiert werden. Die SPI Routine zum Schreiben eines Registers mit einem bestimmten Wert ist bereits vorhanden. Sie heisst void SPI_WriteReg(UINT8 register, UINT8 value). Der Chip enthält insgesamt 16 Register die von 0 bis 15 adressierbar sind. Die Register des Chips müssen laut Hersteller mit folgenden Werten in der angegebenen Reihenfolge aufgesetzt werden: o Register0 = 12 o Register12 = 13 o Register13 = 3 o Register15 = 56 o Register1 = 129 o Register12 = 2 o Register7 = 212 Die Tabelle der aufzusetzenden Register ist laut Spezifikation des Herstellers vorläufig. Es ist daher gut möglich, dass noch weitere Register zu initialisieren sein werden. Aufgabe: erstellen Sie eine allgemeine ChipInit() Funktion in C um den Chip entsprechend der Tabelle zu initialisieren. Achten Sie auf Erweiterbarkeit falls in Zukunft noch weitere Register initialsiert werden müssen. Ich danke Ihnen für eure Hilfe Beranger
"Wie meinst du mit sizeof-Operator ?" Du solltest Dir ein C-Buch oder einen Compiler mit guter Hilfe zulegen, um solche grundlegenden Dinge zu klären. sizeof(x) gibt die Größe von x in Bytes zurück. Mit sizeof(Tabelle)/sizeof(Strukturelement) hast Du also die Anzahl der Einträge in der Tabelle und kannst sie als Abbruchbedingung in der Ausgabeschleife verwenden. Alternativ kann man auch einen Enderecord definieren, der dann als letztes in die Tabelle geschrieben wird und kein gültiger Ausgabewert sein darf. Wenn z.B. nur Register 0..15 erlaubt sind, könnte der Enderecord die 16 sein. Peter
Danke Peter ! Ich werde es probieren, melde mich später noch. :-))) Beranger
das einfachste ist doch wohl, in der ChipInit-Funktion der Reihe nach die Register mit der SPI_WriteReg-Funktion zu beschreiben. void ChipInit(void) { SPI_WriteReg(0,12); SPI_WriteReg(12,13); SPI_WriteReg(13,3); SPI_WriteReg(15,56); SPI_WriteReg(1,129); SPI_WriteReg(12,2); SPI_WriteReg(7,212); } Zack, fertig... und jeder Zeit erweiterbar. (Ich gehe jetzt davon aus, dass es sich um eine Schulhausaufgabe oder so handelt... Vermutlich behandelter Stoff: Funktionen...)
Hallo Rahul, Meinst du es wurde so gehen ? Ich habe nal probieren also es schein so nicht funktionieren. Ich komme eigentlich aus Frankreich und bin im 10. Klasse. Also danke für deine Antwort. Beranger
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.