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");
}