Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
COMP(term);
HAL_PIN(wave0) = 0.0;
HAL_PIN(wave1) = 0.0;
HAL_PIN(wave2) = 0.0;
HAL_PIN(wave3) = 0.0;
HAL_PIN(wave4) = 0.0;
HAL_PIN(wave5) = 0.0;
HAL_PIN(wave6) = 0.0;
HAL_PIN(wave7) = 0.0;
HAL_PIN(send_step) = 1.0;
HAL_PIN(buf_use) = 0.0;
HAL_PIN(packet_size) = 0.0;
#define TERM_BUF_SIZE 24
MEM(float w0[TERM_BUF_SIZE]);
MEM(float w1[TERM_BUF_SIZE]);
MEM(float w2[TERM_BUF_SIZE]);
MEM(float w3[TERM_BUF_SIZE]);
MEM(float w4[TERM_BUF_SIZE]);
MEM(float w5[TERM_BUF_SIZE]);
MEM(float w6[TERM_BUF_SIZE]);
MEM(float w7[TERM_BUF_SIZE]);
MEM(unsigned int read_pos) = 0;
MEM(unsigned int write_pos) = 0;
MEM(unsigned int send_counter) = 0;
RT(
if(send_counter++ >= PIN(send_step) - 1){
w0[write_pos] = PIN(wave0);
w1[write_pos] = PIN(wave1);
w2[write_pos] = PIN(wave2);
w3[write_pos] = PIN(wave3);
w4[write_pos] = PIN(wave4);
w5[write_pos] = PIN(wave5);
w6[write_pos] = PIN(wave6);
w7[write_pos] = PIN(wave7);
write_pos++;
write_pos %= TERM_BUF_SIZE;
send_counter = 0;
}
);
NRT(
void bootloader(){
*((unsigned long *)0x2001C000) = 0xDEADBEEF;
NVIC_SystemReset();
}
void listhal(){
for(int i = 0; i < hal.hal_pin_count; i++){
printf_("%s <= %s = %f\n", hal.hal_pins[i]->name, hal.hal_pins[i]->source->name, hal.hal_pins[i]->source->source->value);
Wait(1);
}
}
void save(){
typedef union{
float f;
uint16_t byte[2];
}param_t;
param_t param;
for(int i = 0; i < hal.hal_pin_count; i++){
char name[7];
strncpy(name,hal.hal_pins[i]->name,5);
name[6] = '\0';
if(!strcmp(name, "conf0")){
param.f = hal.hal_pins[i]->source->source->value;
printf_("param:\n");
printf_("%i,%i\n",param.byte[0],param.byte[1]);
//address+=2;
//printf_("%s <= %s = %f\n", hal.hal_pins[i]->name, hal.hal_pins[i]->source->name, hal.hal_pins[i]->source->source->value);
Wait(1);
}
}
}
void cmd(char * s){
if(!strcmp(s, "bootloader")){
bootloader();
}
else if(!strcmp(s, "list")){
listhal();
}
else if(!strcmp(s, "?")){
listhal();
}
else if(!strcmp(s, "save")){
save();
}
else{
printf_("not found: %s\n",s);
}
}
unsigned int wp = write_pos;
unsigned int bc = 0;
struct packet p;
union{
float wave[8 * 7];
unsigned char buf[8 * 4 * 7];
}data;
int i = 0;
p.start = 255;
p.type = 2;
p.buf = data.buf;
while(read_pos != wp && i < 7){
bc++;
data.wave[i * 8 + 0] = w0[read_pos];
data.wave[i * 8 + 1] = w1[read_pos];
data.wave[i * 8 + 2] = w2[read_pos];
data.wave[i * 8 + 3] = w3[read_pos];
data.wave[i * 8 + 4] = w4[read_pos];
data.wave[i * 8 + 5] = w5[read_pos];
data.wave[i * 8 + 6] = w6[read_pos];
data.wave[i * 8 + 7] = w7[read_pos];
i++;
read_pos++;
read_pos %= TERM_BUF_SIZE;
}
p.size = i * 32;
buff_packet(&p);
UB_VCP_DataTx(p.start);
UB_VCP_DataTx(p.type);
UB_VCP_DataTx(p.size);
UB_VCP_DataTx(p.key);
UB_USB_CDC_SendData((char*)p.buf, p.size);
PIN(packet_size) = i;
PIN(buf_use) = bc;
if(UB_USB_CDC_GetStatus()==USB_CDC_CONNECTED && systime >= 1000){
char source[APP_TX_BUF_SIZE];
char sink[APP_TX_BUF_SIZE];
int i = -1;
char rx_buf[APP_TX_BUF_SIZE];
if(UB_USB_CDC_ReceiveString(rx_buf)==RX_READY){
i = sscanf_(rx_buf, "%N = %N",sink ,source);
}
if(i == 2){ // read hal pin
if(is_hal_pin(sink)){
printf_("%s <= %s = %f\n", sink, find_hal_pin(sink)->source->name, get_hal_pin(sink));
}else{
cmd(rx_buf);
}
}
else if(i == 5){// link hal pin
if(is_hal_pin(source) && is_hal_pin(sink)){
link_hal_pins(source, sink);
printf_("OK %s <= %s = %f\n", sink, source, get_hal_pin(sink));
}
else if(is_hal_pin(sink)){// set hal pin
set_hal_pin(sink, read_float(source));
printf_("OK %s = %f\n", sink, get_hal_pin(sink));
}
else{// hal pin not found
printf_("not found: %s\n", sink);
}
}
}
);
ENDCOMP;
aa7d527fbThis file is pinned to the selected release. Download the original to open it in your design tool.