void avr_reset (avr_t * avr) { AVR_LOG (avr, LOG_TRACE, "%s reset\n", avr->mmcu); avr->state = cpu_Running; for (int i = 0x20; i <= MAX_IOs; i++) avr->data[i] = 0; _avr_sp_set (avr, avr->ramend); avr->pc = 0; for (int i = 0; i < 8; i++) avr->sreg[i] = 0; avr_interrupt_reset (avr); avr_cycle_timer_reset (avr); if (avr->reset) avr->reset (avr); avr_io_t *port = avr->io_port; while (port) { if (port->reset) port->reset (port); port = port->next; } }
void avr_reset(avr_t * avr) { AVR_LOG(avr, LOG_TRACE, "%s reset\n", avr->mmcu); memset(avr->data, 0x0, avr->ramend + 1); _avr_sp_set(avr, avr->ramend); avr->pc = 0; for (int i = 0; i < 8; i++) avr->sreg[i] = 0; avr_interrupt_reset(avr); avr_cycle_timer_reset(avr); if (avr->reset) avr->reset(avr); avr_io_t * port = avr->io_port; while (port) { if (port->reset) port->reset(port); port = port->next; } }
void avr_reset(avr_t * avr) { int noof_ios = MAX_IOs > avr->ramend ? avr->ramend : avr->ramend; AVR_LOG(avr, LOG_TRACE, "%s reset\n", avr->mmcu); avr->state = cpu_Running; for(int i = 0x20; i < noof_ios; i++) avr->data[i] = 0; _avr_sp_set(avr, avr->ramend); avr->pc = avr->reset_pc; // Likely to be zero for (int i = 0; i < 8; i++) avr->sreg[i] = 0; avr_interrupt_reset(avr); avr_cycle_timer_reset(avr); if (avr->reset) avr->reset(avr); avr_io_t * port = avr->io_port; while (port) { if (port->reset) port->reset(port); port = port->next; } }