コード例 #1
0
ファイル: sim_avr.c プロジェクト: FabriceSalvaire/simavr
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;
    }
}
コード例 #2
0
ファイル: sim_avr.c プロジェクト: GregoryLand/simavr
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;
	}
}
コード例 #3
0
ファイル: sim_avr.c プロジェクト: scel-hawaii/control-tower
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;
	}
}