farry

scope-test.ino

Jul 12th, 2019
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. char intext[11];     // max 10 chars + null
  2. int anabuf[801];     // analog buffer
  3. int anatest;         // analog test values
  4. int siz = 0;         // size of input string
  5. char v;
  6. int j = 0;
  7. extern int __heap_start;
  8.  
  9. int freeRam () {
  10.   // call with:  Serial.println(freeRam());
  11.   extern int __heap_start, *__brkval;
  12.   int v;
  13.   return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
  14. }
  15.  
  16. void setup(){
  17.   Serial.begin(500000);                         // Serial port 500000 baud
  18.   Serial.setTimeout(100);                       // Timeout 100ms
  19.   pinMode(3, OUTPUT);
  20.   // pin 3 modes 0x1-0x7 =~ 31250, 3906, 976, 488, 244, 122, 30.5
  21.   TCCR2B = (TCCR2B & 0xF8) | 0x05;              // 244Hz
  22.   analogWrite(3,127);
  23.   // ADC conv in 13 ticks , prescale: 4:1MHz 5:500kHz 6:250kHz 7:125kHz
  24.   ADCSRA = (ADCSRA & 0xF8) | 0x04;              // ADC prescale
  25. }
  26.  
  27. void loop(){
  28.   siz = Serial.readBytesUntil('\n',intext,10);  // get input string
  29.   if (siz == 0) return;                         // if timeout, loop again
  30.   if (intext[0] == 'a') {
  31.     v = (intext[1] - '0');
  32.     ADCSRA = (ADCSRA & 0xF8) | (v & 0x07);
  33.     Serial.print((int) v);
  34.   }
  35.   else if (intext[0] == 's') {
  36.     v = (intext[1] - '0');
  37.     TCCR2B = (TCCR2B & 0xF8) | ( v & 0x07);
  38.     Serial.print((int) v);
  39.   }
  40.   else if (intext[0] == 'r') {
  41.     Serial.println(freeRam());
  42.   }
  43.   else if (intext[0] == 'w') {
  44.     for (j=0; j<800; j++) {
  45.       anatest = analogRead(A3);
  46.       if (anatest < 200) break;
  47.     }
  48.     for (j=0; j<800; j++) {
  49.       anatest = analogRead(A3);
  50.       if (anatest > 250) break;
  51.     }
  52.     for (j=0; j<800; j++) {
  53.       anabuf[j] = analogRead(A3);
  54.     }
  55.     for (j=0; j<800; j++) {
  56.       Serial.print(anabuf[j],DEC);
  57.       Serial.print(',');
  58.     }
  59.   }
  60.   Serial.print('\n');
  61. }
Advertisement
Add Comment
Please, Sign In to add comment