Hallo! ich möchte den MCP2515 CAN Controller über seine SPI schnittstelle ansteuern, jedoch habe ich einige (verständnis)probleme mit der SPI schnittstelle: um einen readvorgang von einem register auszufüren muss mann ein Commandbyte und ein Adressbye sende, danach wird das Registerbyte empfangen. mein problem bezieht sich jetzt auf das empfangen des bytes. der code: (die C-Routinen sind aus dem ATmega16 Datenblatt) void main(void) { .... SPI_master_init(); cbi(DD_SPI, DD_SS); //CS=0 SPI_master_transmit(0x03); //send Read Command SPI_master_transmit(0x0C); //send Adress sbi(DD_SPI, DD_SS); //CS=1 ... hier sollte jetzt das byte empfangen werden, weiß nur nicht, wie ich das machen soll, also wäre super wenn ihr mir weiterhelfen könntn! } danke und schöne grüße, Martin
Hi ohne jetzt den Chip selber zu kennen: Bei SPI ist es üblicherweise so das du, um ein Byte zu lesen, ein Dummybyte an den Chip schicken mußt. Der gibt dann durch den Takt gesteuert sein Ausgaberegister auf SO aus. Matthias
ah... danke für di information! also so etwa? cbiDD_SPI, DD_SS); //CS=0 SPI_master_transmit(0x03); //send Read Command SPI_master_transmit(0x0C); //send Adress SPI_master_transmit(0xFF); //Dummy sbi(DD_SPI, DD_SS); data=SPDR; gruß martin
ok.. habs gerade getestet, funktioniert super! danke nochmal, war sicher ne stunde mit disem problem beschäftigt g. martin
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.