diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index a8abf0a7a..802c77558 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -613,10 +613,12 @@ void switch_off(void) { if (g_dbglevel > 3) { Dbprintf("switch_off"); } + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); if (downloaded_bitstream == FPGA_BITSTREAM_HF || downloaded_bitstream == FPGA_BITSTREAM_HF_15) { FpgaDisableSscDma(); } + set_tracing(false); LEDsoff(); } diff --git a/armsrc/hfops.c b/armsrc/hfops.c index 591e80fda..cdc9aab8e 100644 --- a/armsrc/hfops.c +++ b/armsrc/hfops.c @@ -122,7 +122,7 @@ static uint32_t EncodeFinish(uint8_t *data) { return encode_indx; } -static uint32_t HfEncodeTkm(uint8_t *uid, uint8_t modulation, uint8_t *data) { +static uint32_t HfEncodeTkm(const uint8_t *uid, uint8_t modulation, uint8_t *data) { uint32_t len = 0; if (modulation == 0) { // TK-13 @@ -220,21 +220,23 @@ int HfWriteTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout) { FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SIMULATOR | FPGA_HF_SIMULATOR_MODULATE_212K); FpgaSetupSsc(FPGA_MAJOR_MODE_HF_SIMULATOR); - int vHf = 0; // in mV bool button_pressed = false; bool exit_loop = false; bool field_on = false; + while (exit_loop == false) { button_pressed = BUTTON_PRESS(); - if (button_pressed || data_available()) + if (button_pressed || data_available()) { break; + } WDT_HIT(); - vHf = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; + // in mV + int vHf = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; if (vHf > MF_MINFIELDV) { - if (!field_on) { + if (field_on == false) { LED_A_ON(); SpinDelay(50); } @@ -248,10 +250,10 @@ int HfWriteTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout) { } SpinDelay(3); + for (int i = 0; i < elen;) { if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) { - AT91C_BASE_SSC->SSC_THR = data[i]; - i++; + AT91C_BASE_SSC->SSC_THR = data[i++]; } } }