美文网首页我爱编程
新版简易示波器出炉了(2015-08-15 20:44:08)

新版简易示波器出炉了(2015-08-15 20:44:08)

作者: 沧海一声笑的DIY宇宙 | 来源:发表于2018-02-22 20:35 被阅读0次
    界面

    惯例先上图。

    增加了分频功能和频率触发捕获功能。

    以前一直以为示波器是不断的捕获数据显示,但是想不通的是如果信号频率极高的话,画面会移动动的飞快。

    后来才明白,原来示波器只是捕获一定时间段的数据并进行计算,而不是不停的读数据。

    这次终于把AVR单片机的ADC分频功能实现了,这样就能指定特定频率的分频了。就是界面上的X4,X8等按钮的功能。

    不过奇怪的是2分频和128分频好像有问题,2分频无法获得正确的数据,而128分频的时间计算很不正确。

    这里贴出ADC配置函数,使用的是ADC5脚:(代码中的pin不是脚的代号而是频率)

    void AdcInit(int pin)

    {

      ADCSRA = 0;

      ADMUX = 0;

      ADMUX = _BV(MUX0) | _BV(MUX2) | _BV(REFS0);

      switch(pin)

      {

        case 0: // 4

          ADCSRA = _BV(ADPS1);

          break;

        case 1: // 8

          ADCSRA = _BV(ADPS0) | _BV(ADPS1);

          break;

        case 2: // 16

          ADCSRA = _BV(ADPS2);

          break;

        case 3: // 32

          ADCSRA = _BV(ADPS2) | _BV(ADPS0);

          break;

        case 4: // 64

          ADCSRA = _BV(ADPS2) | _BV(ADPS1);

          break;

        case 5: // 128

          ADCSRA = _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0);

          break;

      }

      ADCSRA |= _BV(ADEN);

    }

    开始我没有配置REFS0,导致不能正确的读数,另外数据是用阻塞的方式获得,没有使用ADC中断。现在简易示波器能用了,就差搞个信号发生器来试试了。

    相关文章

      网友评论

        本文标题:新版简易示波器出炉了(2015-08-15 20:44:08)

        本文链接:https://www.haomeiwen.com/subject/jkhzzxtx.html