首页 文章
  • 5 votes
     answers
     views

    直接数字合成中的线性插值

    我正在研究C中的微控制器DDS项目,并且在确定如何计算线性插值以平滑输出值方面遇到了一些麻烦 . 现在的计划使用24位累加器的前8位作为8位输出值数组的索引 . 我需要提出一个函数,它将占用累加器的中间和低位字节,并在数组中的"previous"和"next"值之间生成一个值 . 这对于快速硬件来说足够简单,但由于我使用的是微控制器,我真的需要避免做任何浮点...
  • 0 votes
     answers
     views

    Avr汇编编程:堆栈上的原子分配

    我正在查看小型C程序的 avr-gcc 程序集生成代码 . 以下应该在堆栈上分配一个100字节的本地数组 . extern void foo(char [], int); void bar() { char t[100]; foo(t,100); } 当然它通过从堆栈指针中减去100来实现 . 据我所知,由于avr是8位机器,更改16位堆栈指针需要2个步骤(更改SPH和SPL) . 此...
  • 5 votes
     answers
     views

    将偏移量添加到预分频硬件定时器时,如何避免这种逐个错误?

    我正在写一个微控制器中断,需要为其中一个硬件定时器添加一个偏移量 . 但是,由于定时器预分频器的工作方式,根据相对于预分频器时钟的中断执行时序,原始方法可能会引入逐个错误 . 我在ATmega328P(= arduino)上使用定时器1 . 我使用/ 8预分频器在正常模式下进行设置,并使用定时器捕获中断来触发此操作;中断的目标是在触发输入捕获的事件之后将定时器设置为完全溢出 period 个周期...
  • 2 votes
     answers
     views

    USB音频混淆 - 可能的数据速率是多少?

    我是USB开发的新手,我对数据速率是多么现实感到困惑 . 我正在尝试开发一个连接在AVR32处理器上的外部声卡,它支持USB全速(12 Mb / s) . 我将使用USB音频类1将音频数据发送到PC . 我需要将24位,48kHz,2个通道作为输入发送到计算机,还需要从计算机发送24位,48kHz,1通道输出 . 双向流媒体 . 这给我一个数据速率:24位* 48kHz * 3通道= 3,5 Mb...
  • 0 votes
     answers
     views

    ATmega2560 ADC通道

    我一直在使用ATmega128,我现在看一下ATmega2560 . 我已经在128中尝试过ADC . 当我在2560年尝试它时,我没有问题,除非我改变它 . 我在codevision中编写了这段代码 . 当仅使用单个通道时,它工作正常但在更换通道时存在不稳定的行为 . 问题是什么 ? 这里的代码 void ADC_init(void) { PINF=0; PORTF=0; ...
  • 3 votes
     answers
     views

    AVR ATMega328P ADC通道选择问题

    我现在正在修改一个ATMega328P,想要通过ADC读取引脚的模拟值,然后将值输出到4个LED . 真的很简单 #define F_CPU 20000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define BRIGHTNESS_PIN 2 #de...
  • 22 votes
     answers
     views

    USB编程

    我想编写一个微控制器(AVR)来通过USB控制一些LED . 这只是对如何构建和编程USB设备感兴趣 . 有些AVR微控制器支持USB协议,或者我自己可以在另一个微控制器中实现USB协议,但我想知道在计算机上使用什么来编写自己的驱动程序 . 我的系统编程水平:总菜鸟(因此问题) 那么,为了更好地了解USB技术以及如何编写自己的驱动程序以及其他内容,您的人们会建议哪些文献? P.S . :我知道: ...
  • 0 votes
     answers
     views

    一旦触发,看门狗就会连续重置AVR Atmega 1281

    我正在使用经过改进的Arduino板:Gizduino X和板载Atmega 1281 MCU芯片 . 使用Arduino IDE编程器将应用程序上传到MCU . 我试图使用Atmega 1281的看门狗定时器复位功能并使用库“wdt.h” . 问题是在看门狗复位后,微型电路似乎连续循环复位 . 我知道数据表的规格,必须在setup()之前禁用看门狗,因为它在复位后自动启用,因此我的代码中包含的内...
  • 6 votes
     answers
     views

    初始化变量并同时指定存储地址:是否可能?

    在 codevision 处理器的 codevision 编译器中,可以指定全局变量的存储地址,例如 int a @0x100; // will place the variable at the address 0x100 in RAM 当然,根据标准C,变量可以在声明时初始化 int a=42; 但是,我没有发现任何可能同时做到这两点 . int a @0x100 = 42 或 int...
  • 0 votes
     answers
     views

    (libusb)关于连续等时USB流的混淆

    我使用的是支持高速USB的32位AVR微控制器(AT32UC3A3256) . 我想定期从我的PC向设备传输数据(不承认数据),所以就像USB音频接口一样,除了我要发送的数据不是音频 . 这样的接口在这里描述:http://www.edn.com/design/consumer/4376143/Fundamentals-of-USB-Audio . 我对USB isochronous 传输感到有...
  • 1 votes
     answers
     views

    Arduino / AVR:中断串行/ I2C通信是否安全

    我想在Atmega328上做一些中断驱动的信号处理,它可能没有足够的SRAM(2K)来存储整个运行的数据 . 这意味着我必须在仍然收集数据的同时将部分缓冲区写入外部存储器 . 我的问题是,在仍然触发中断的同时进行串行写入或I2C通信(例如SD卡)是否安全 . 我认为串行通信本身是中断驱动的,所以这可能成为一个问题 . 这是真的? I2C怎么样?如果两者都可能导致问题,那么在仍然收集数据时刷新缓冲区...
  • 2 votes
     answers
     views

    禁用Arduino Mega 2560上TX引脚的中断

    我将开始告诉Arduino对函数serialEvent的引用没有很好的记录 . https://www.arduino.cc/en/Reference/SerialEvent 由于缺乏信息,我误解了这个功能是如何工作的 . 由于我有Arduino Mega 2560,它带有4个串行输入/输出,并且它们有自己的serialEventX功能(其中X = {'',1,2,3}) . 我已成功与ESP8...
  • 0 votes
     answers
     views

    如何在Arduino中获取全局变量的flash地址

    我的Arduino(例如ATmega328P)中有一个静态全局变量,与任何其他静态非PROGMEM存储一样,它在启动后自动加载到SRAM . 我将其设置为默认值,该值由 setup() 中EEPROM的存储值替换 . 我想提供将变量重置为其原始默认值的功能,而无需在我的代码中再次定义该值 .是否有可能在Arduino中获取静态全局变量的闪存地址,例如通过 pgm_read_byte() 将其原始数...

热门问题