コード例 #1
0
ファイル: avr_watchdog.c プロジェクト: jdpillon/simulide
static avr_cycle_count_t avr_watchdog_timer(struct avr_t * avr, avr_cycle_count_t when, void * param)
{
	avr_watchdog_t * p = (avr_watchdog_t *)param;

	printf("WATCHDOG timer fired.\n");
	avr_raise_interrupt(avr, &p->watchdog);

	if (!avr_regbit_get(avr, p->watchdog.enable)) {
		printf("WATCHDOG timer fired and interrupt is not enabled. Quitting\n");
		avr_sadly_crashed(avr, 10);
	}

	return 0;
}
コード例 #2
0
ファイル: sim_core.c プロジェクト: kevinf28/simavr
void crash(avr_t* avr)
{
	DUMP_REG();
	printf("*** CYCLE %" PRI_avr_cycle_count "PC %04x\n", avr->cycle, avr->pc);

	for (int i = OLD_PC_SIZE-1; i > 0; i--) {
		int pci = (avr->trace_data->old_pci + i) & 0xf;
		printf(FONT_RED "*** %04x: %-25s RESET -%d; sp %04x\n" FONT_DEFAULT,
				avr->trace_data->old[pci].pc, avr->trace_data->codeline ? avr->trace_data->codeline[avr->trace_data->old[pci].pc>>1]->symbol : "unknown", OLD_PC_SIZE-i, avr->trace_data->old[pci].sp);
	}

	printf("Stack Ptr %04x/%04x = %d \n", _avr_sp_get(avr), avr->ramend, avr->ramend - _avr_sp_get(avr));
	DUMP_STACK();

	avr_sadly_crashed(avr, 0);
}
コード例 #3
0
ファイル: sim_core.c プロジェクト: kevinf28/simavr
void crash(avr_t* avr)
{
	avr_sadly_crashed(avr, 0);
}