shibosoftwaredev/f1c100s-linux-nema17-stepper-controller

A four-layer NEMA 17 motor-controller PCB combining an Allwinner F1C100S Linux computer, USB‑PD/buck power system, W5500 Ethernet, STM32 real-time motion control, DRV8825 stepper driver, protection/temperature/current telemetry, USB interfaces, and local LED/buzzer diagnostics.

Version
0.4.56
License
unset
Stars
0

firmware/stm32/test_limit.c

#include "limit.h"
#include <assert.h>
#include <stdio.h>

int main(void) {
  for(unsigned v=2700;v<=3600;v++) {
    uint16_t previous=0;
    for(unsigned ma=0;ma<=CURRENT_LIMIT_MAX_MA;ma++) {
      uint16_t code=limit_code((uint16_t)ma,(uint16_t)v);
      assert(code>=previous && code<=4095);
      assert(limit_nominal_ma(code,(uint16_t)v)<=ma);
      previous=code;
    }
  }
  for(unsigned code=0;code<=4095;code++) {
    uint8_t b[3]={0x80,(uint8_t)(code>>4),(uint8_t)(code<<4)};
    assert(limit_readback_ok(b,(uint16_t)code));
    b[0]=0;assert(!limit_readback_ok(b,(uint16_t)code));
    b[0]=0x82;assert(!limit_readback_ok(b,(uint16_t)code));
    b[0]=0x80;assert(!limit_readback_ok(b,(uint16_t)((code+1)&4095)));
  }
  assert(limit_code(397,3300)==0 && limit_code(200,0)==0);
  puts("PASS: all 397 setpoints across 901 VDDA values; 4096 DAC readbacks, mismatch/busy/power-down rejection");
}