static void buspirate_powerup(struct programmer_t *pgm) { if (pgm->flag & BP_FLAG_IN_BINMODE) { /* Powerup in BinMode is handled in SPI init */ return; } else { if (buspirate_expect(pgm, "W\n", "Power supplies ON", 1)) { if (pgm->flag & BP_FLAG_XPARM_CPUFREQ) { char buf[25]; int ok = 0; snprintf(buf, sizeof(buf), "%d\n", PDATA(pgm)->cpufreq); if (buspirate_expect(pgm, "g\n", "Frequency in KHz", 1)) { if (buspirate_expect(pgm, buf, "Duty cycle in %", 1)) { if (buspirate_expect(pgm, "50\n", "PWM active", 1)) { ok = 1; } } } if(!ok) { fprintf(stderr, "%s: warning: did not get a response to start PWM command.\n", progname); } } return; } } fprintf(stderr, "%s: warning: did not get a response to PowerUp command.\n", progname); fprintf(stderr, "%s: warning: Trying to continue anyway...\n", progname); }
static int buspirate_program_enable(struct programmer_t *pgm, AVRPART * p) { unsigned char cmd[4]; unsigned char res[4]; if (pgm->flag & BP_FLAG_IN_BINMODE) { /* Clear configured reset pin(s): CS and/or AUX and/or AUX2 */ PDATA(pgm)->current_peripherals_config &= ~PDATA(pgm)->reset; buspirate_expect_bin_byte(pgm, PDATA(pgm)->current_peripherals_config, 0x01); } else buspirate_expect(pgm, "{\n", "CS ENABLED", 1); if (p->op[AVR_OP_PGM_ENABLE] == NULL) { fprintf(stderr, "program enable instruction not defined for part \"%s\"\n", p->desc); return -1; } memset(cmd, 0, sizeof(cmd)); avr_set_bits(p->op[AVR_OP_PGM_ENABLE], cmd); pgm->cmd(pgm, cmd, res); if (res[2] != cmd[1]) return -2; return 0; }
static void buspirate_disable(struct programmer_t *pgm) { if (pgm->flag & BP_FLAG_IN_BINMODE) { serial_recv_timeout = 100; buspirate_reset_from_binmode(pgm); } else buspirate_expect(pgm, "#\n", "RESET", 1); }
static void buspirate_powerdown(struct programmer_t *pgm) { if (pgm->flag & BP_FLAG_IN_BINMODE) { /* 0b0100wxyz - Configure peripherals w=power, x=pull-ups, y=AUX, z=CS * we want everything off -- 0b01000000 = 0x40 */ if (buspirate_expect_bin_byte(pgm, 0x40, 0x01)) return; } else { if (pgm->flag & BP_FLAG_XPARM_CPUFREQ) { if (!buspirate_expect(pgm, "g\n", "PWM disabled", 1)) { fprintf(stderr, "%s: warning: did not get a response to stop PWM command.\n", progname); } } if (buspirate_expect(pgm, "w\n", "Power supplies OFF", 1)) return; } fprintf(stderr, "%s: warning: did not get a response to PowerDown command.\n", progname); }
static void buspirate_powerup(struct programmer_t *pgm) { if (pgm->flag & BP_FLAG_IN_BINMODE) { /* Powerup in BinMode is handled in SPI init */ return; } else if (buspirate_expect(pgm, "W\n", "POWER SUPPLIES ON", 1)) return; fprintf(stderr, "%s: warning: did not get a response to PowerUp command.\n", progname); fprintf(stderr, "%s: warning: Trying to continue anyway...\n", progname); }
static void buspirate_powerdown(struct programmer_t *pgm) { if (pgm->flag & BP_FLAG_IN_BINMODE) { /* 0b0100wxyz - Configure peripherals w=power, x=pull-ups, y=AUX, z=CS * we want everything off -- 0b01000000 = 0x40 */ if (buspirate_expect_bin_byte(pgm, 0x40, 0x01)) return; } else if (buspirate_expect(pgm, "w\n", "POWER SUPPLIES OFF", 1)) return; fprintf(stderr, "%s: warning: did not get a response to PowerDown command.\n", progname); }