Skip to content

Commit 9c37f34

Browse files
committed
Fix more hard-coded instance numbers, clock disabling
1 parent dee8456 commit 9c37f34

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

src/CANSAME5x.cpp

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,11 @@ void CANSAME5x::end()
294294
hw->CCCR.bit.INIT = 1;
295295
while (!hw->CCCR.bit.INIT) {
296296
}
297-
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = GCLK_CAN1 | (1 << GCLK_PCHCTRL_CHEN_Pos);
297+
if(_idx == 0) {
298+
GCLK->PCHCTRL[CAN0_GCLK_ID].reg = 0;
299+
} else {
300+
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = 0;
301+
}
298302
}
299303

300304
int CANSAME5x::endPacket()
@@ -438,9 +442,9 @@ int CANSAME5x::observe() {
438442

439443
hw->CCCR.bit.MON = 1;
440444

441-
CAN1->CCCR.bit.CCE = 0;
442-
CAN1->CCCR.bit.INIT = 0;
443-
while (CAN1->CCCR.bit.INIT) {
445+
hw->CCCR.bit.CCE = 0;
446+
hw->CCCR.bit.INIT = 0;
447+
while (hw->CCCR.bit.INIT) {
444448
}
445449
return 1;
446450
}
@@ -455,25 +459,33 @@ int CANSAME5x::loopback() {
455459
hw->CCCR.bit.TEST = 1;
456460
hw->TEST.bit.LBCK = 1;
457461

458-
CAN1->CCCR.bit.CCE = 0;
459-
CAN1->CCCR.bit.INIT = 0;
460-
while (CAN1->CCCR.bit.INIT) {
462+
hw->CCCR.bit.CCE = 0;
463+
hw->CCCR.bit.INIT = 0;
464+
while (hw->CCCR.bit.INIT) {
461465
}
462466
return 1;
463467
}
464468

465469
int CANSAME5x::sleep() {
466470
hw->CCCR.bit.CSR = 1;
467-
while (!CAN1->CCCR.bit.CSA) {
471+
while (!hw->CCCR.bit.CSA) {
472+
}
473+
if(_idx == 0) {
474+
GCLK->PCHCTRL[CAN0_GCLK_ID].reg = 0;
475+
} else {
476+
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = 0;
468477
}
469-
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = GCLK_CAN1;
470478
return 1;
471479
}
472480

473481
int CANSAME5x::wakeup() {
474-
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = GCLK_CAN1 | (1 << GCLK_PCHCTRL_CHEN_Pos);
475-
CAN1->CCCR.bit.INIT = 0;
476-
while (CAN1->CCCR.bit.INIT) {
482+
if(_idx == 0) {
483+
GCLK->PCHCTRL[CAN0_GCLK_ID].reg = GCLK_CAN0 | (1 << GCLK_PCHCTRL_CHEN_Pos);
484+
} else {
485+
GCLK->PCHCTRL[CAN1_GCLK_ID].reg = GCLK_CAN1 | (1 << GCLK_PCHCTRL_CHEN_Pos);
486+
}
487+
hw->CCCR.bit.INIT = 0;
488+
while (hw->CCCR.bit.INIT) {
477489
}
478490
return 1;
479491
}

0 commit comments

Comments
 (0)