軟體示波器
主旨:軟體示波器 arduino uno + CVI
日期:2020/1/4
說明:
- 以前,用 CVI 寫圖控程式,示波器。8051 C / MPC82G516 寫監控板的RF接收訊號,與電腦端 CVI 通訊。
- 2020年,要改用Arduino uno 來取代 8051,昨晚改寫,今早已測試完成。
- arduino ide 有內建的 波形圖 功能, 但它只有500點。我的軟體示波器是8000點, 我用arduino 內建 plotter 調試波形時, 極其不易, 弄了半天, 調不出參數值。8000/13=615 , 500點呈現不出1個搖控器訊號周期波。
- 本以為用內建plotter 即可成事, 不好用, 只好用自己之前寫的, 兩端都修改。
- Arduino uno 原碼
void Prt_03D(int c)
{
if(c< 10 ) Serial.print("00");
else if(c< 100) Serial.print("0");
Serial.print(c);
}
void wave_v105()
{
#ifdef NUM_MAX
#undef NUM_MAX
#endif
#define NUM_MAX 1000
static uc buf[NUM_MAX];
int i,j,len;
int gPos=8000;
if((len=Serial.available())< 4) return;
delay(100);
len=Serial.available();
Serial.readBytes(buf, len);
Serial.print("buf[");
Serial.write(buf,len);
Serial.print("] len=");
Serial.println(len);
if(memcmp(buf,">NOR",4)==0){
Serial.print(">nor\r");
Serial.print("gPos=");
Serial.print(gPos);
Serial.print("\r");
uc c;
digitalWrite(LED_BUILTIN, 1);
for(j=0;j
c=0; for(i=0;i< 8;i++){ c<<=1; c|=digitalRead(PIN_NW);
// delay(10);
delayMicroseconds(50);
}
buf[j]=c;
}
digitalWrite(LED_BUILTIN, 0);
for(i=0;i< NUM_MAX;i++){ Prt_03D(i); Serial.print(" "); Prt_03D(buf[i]); Serial.print("\r");}
Serial.print("\r");
}
digitalWrite(LED_BUILTIN, 1);
}
E:\sloeber-workspace\ArduinoWave

留言