Hallo zusammen,
Ich habe eine Platine mit einem Mega64 und angeschlossenem SJA1000.
Es gibt schon ein fertiges Programm, aber der SJA1000 scheint nicht
richtig zu funktionieren, ich kann nicht auf seine Register zugreifen.
Folgenden Code nutze ich:
// Bus-Keeper
XMCRB |= _BV(XMBK);
//PortC freigeben
XMCRB |= _BV(XMM2)|_BV(XMM1)|_BV(XMM0);
// INT1
EIMSK |= _BV(INT1);
// external RAM - SJA1000
MCUCR |= _BV(SRE);
// can init
CAN_CS_DIR |= _BV(CAN_CS); // set CS signal output
CAN_RST_DIR |= _BV(CAN_RST); // set Reset signal output
CAN_RST_PORT &=~ _BV(CAN_RST); // force SJA1000 hardware reset
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
CAN_RST_PORT |= _BV(CAN_RST); // pull Reset high
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
CAN_INT_PORT |= _BV(CAN_INT); // enable pull-up on CAN interrupt
signal
// Ausgabe der Registerwerte
uint8_t *pExtSRAM = (uint8_t *) 0x1100;
putc(pExtSRAM[0]); // Gibt 0
putc(pExtSRAM[1]); // Gibt 1
putc(pExtSRAM[2]); // Gibt 2
putc(pExtSRAM[3]); // Gibt 3
putc(pExtSRAM[4]); // Gibt 4
So wie ich das verstehe wäre das can init erstmal unnötig.
Sobald der mega64 "weiss", dass dort externes ram ist, müsste er doch
drauf zugreifen, oder?
Komisch ist, dass ich genau die Index-Zahl zurückkriege, deren
Speicherwert ich anfrage.
Ich hoffe, ihr könnt mir helfen.
Danke!
Florian
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.