- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用下面的测试代码,我尝试使用 中的
观察 I/O 查看数据寄存器从未设置,即使我正在设置它。是我的代码或模拟器有问题还是什么?simulator
通过 xmega128a3u
的 USART
发送数据Atmel Studio.
#include <avr/io.h>
#include <avr/interrupt.h>
#define bscale 0
#define bsel 0x0003 //250kbps
#define packetFormat (USART_SBMODE_bm | USART_CHSIZE_8BIT_gc | USART_PMODE_DISABLED_gc)
uint8_t n;
int main(void)
{
//ALLOW PORTB AND PORTF TO BE WRITTEN TO! TURNS OFF JTAG
CCP = 0xD8; //Allow Protected IO changing
MCU_MCUCR = 0x1;
//CRYSTAL SETUP
OSC_XOSCCTRL = OSC_FRQRANGE_12TO16_gc | OSC_XOSCSEL_XTAL_16KCLK_gc; // 16Mhz Crystal
OSC_CTRL |= OSC_XOSCEN_bm;
while(!(OSC_STATUS & OSC_XOSCRDY_bm)); //Wait for crystal to stabilize.
CCP = CCP_IOREG_gc;
CLK_CTRL = CLK_SCLKSEL_XOSC_gc;
//END CRYSTAL SETUP
cli();
//Enable Interrupts
USARTF0.CTRLA = USART_TXCINTLVL_LO_gc | USART_DREINTLVL_LO_gc;
//Enable transmitter
USARTF0.CTRLB = USART_TXEN_bm;
PMIC.CTRL |= PMIC_LOLVLEX_bm;
//Set baud
USARTF0.BAUDCTRLB = bscale;
USARTF0.BAUDCTRLA = bsel;
//Set packet format
USARTF0.CTRLC = packetFormat;
sei();
while (1)
{
if(n < 255) {
USARTF0.DATA = n;
} else {
n = 0;
}
}
}
ISR(USARTF0_TXC_vect) {
n++;
}
ISR(USARTF0_DRE_vect) {
n++;
}
最佳答案
是否更新了其他寄存器,只是没有更新 DATA?如果没有,请确保您已启用 USART 的时钟。许多微 Controller 还使用一个数据寄存器进行读写。因此,在写入后尝试读取 DATA 寄存器(即,调试 View 正在读取)不会返回任何内容,除非已接收到数据。因此,即使在硬件上执行,您也可能会看到相同的行为。
也就是说,根据我的经验,Atmel Studio 中的模拟器不太擅长模拟中断或外设操作。
编辑以包含来自以下评论的信息:由于您无法读回刚刚写入 DATA 寄存器的内容,因此在写入数据后立即检查 STATUS 寄存器中的 DREIF 标志将确认数据是否正在传输。
关于c++ - AVR XMEGA USART 仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441772/
我在通过 USART 接收数据时遇到了一些麻烦。我真正想要实现的是,我可以通过 USART 接收没有特定长度(只有最大可能长度)的命令。所以我使用中断例程来检查接收到的每个字符,但不知何故我仍然无法实
我有一个问题,我必须用 USART 按下我电脑上的键来控制 ATMEGA 1280 的 PWM。我可以使用 ASCII 键和控制 PWM 来控制它。问题是他们要求使用箭头键,现在问题是箭头键没有 AS
我目前正在开展一个项目,我们必须使用 AVR ATMEGA328 微 Controller (特别是 USART 外设)来控制 8 个 LED。我们必须向微 Controller 发送命令,以不同的速
我正在使用具有 16kb 闪存和 1kb Sram 的 AVR Controller atmega16。我已将数据存储在静态数组中,即 static char raw_data[15361]; 并尝试
我试图在同一个全局数组上发送 2 个不同的字符串,并通过 UART 传输 DMA,作为我的终端日志。然而,发生的情况是它发送了第一个字符串,无论我尝试什么(重新初始化整个 DMA 和 UART),它都
我有一个使用 tx 中断传输数据的 USART 类。现在我想创建一个使用 DMA 传输数据的变体。你想要什么: 使用继承来创建两个 USART 子类,例如ISRUSART 和 DMAUSART? 或
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在为 ARM Cortex M3 编程。我有在 USART 端口上运行的标准输出功能。我应该如何在我的 Windows 7 计算机上监控我的开发板通过 USART 发送的数据?我应该使用标准的“U
我正在尝试将 HC-05 与我的 STM32F3 DISCOVERY 结合使用,但我无法让 USART 正常工作。 无论我手动从 HC-05 读取数据还是使用中断,它都不起作用。 我尝试在 ardui
在 STM32F2 上使用两个以 115200 波特运行的 USART,一个用于与 radio 模块通信,一个用于从 PC 进行串行通信。时钟速度为 120MHz。 当同时从两个 USART 接收数据
我正在为内置 PIC18F25K80 的板编写一些库。现在我正在尝试对 UART 库进行编程,并且我已经尝试了所有方法,但在发送字符串时我无法使其工作。 我正在使用 XC8 编译器,并且库中有以下代码
我的 USART 正在从“黑匣子”接收一个字符串,该字符串包含两个 double 值和几个十六进制值。该字符串放置在我的缓冲区 rbuf.buf 中,总大小为 32 个字符。通常我会收到 19 个字符
使用下面的测试代码,我尝试使用 中的 simulator 通过 xmega128a3u 的 USART 发送数据Atmel Studio. 观察 I/O 查看数据寄存器从未设置,即使我正在设置它。是我
您好,我目前正在研究 USART 通信,试图从任何 GPIO 引脚传输和接收数据。 我成功地以任何波特率传输数据,但在接收时卡住了。 我一次能收到一个角色。引脚设置为使用 RX 引脚的外部下降沿中断。
我正在尝试使用 USART 通信接收和发送数据,我使用的是 atmega16。我在 PC 中创建了一个程序来将字符串发送到 micro,如果字符串匹配,micro 将激活 adc 并将 adc 数据发
我在尝试读取完整的字符串时遇到了一些问题和奇怪的行为。我正在使用配备 atxmega32a4u 的自制演示板,基本上我想做的是通过串行通信设置一个参数(输出电压设定点),而 MCU 做他的事情(控制降
这是我在 stm8l 中使用 usart 的代码。我面临的主要问题是,无论我为 USART_DR 寄存器分配什么值,它始终采用值 0xff 而不会随着我增加 char 变量而改变。只有 USART_S
我正在研究一个名为 TSL2301 的线扫描 ccd 传感器。我想通过 stm32f103 的 USART 读取像素,但我总是只能收到 0xFF,有人使用这个传感器来帮助我吗?我使用了 STM32f1
我使用带有 AVR Studio 5 的 EVK1105 开发板作为我的 AVR 项目的开发 IDE。我在其中使用 FreeRTOS。我在这个板上有 3 个 USART 端口。一个外部模块通过 USA
我是在 Atmel studio 环境中开发嵌入式系统的新手,我使用 Atxmega128a1 和 32MHz 系统时钟。我试图在每次定时器中断溢出(0.05s)时通过RS232模块向PC发送一些字符
我是一名优秀的程序员,十分优秀!