Gast
#347647
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