Tag: atmel

Atmel / Arduino:ISR(TIMER0_OVF_vect)将无法编译(__vector_16中的“首次定义”)

我正在研究一种PWM调制器来“模拟”汽车发动机点火换向。 然后,我将用它驱动另一个微控制器,它处理从原始信号(发动机换向器)到干净输出电压的转换,通过RPM计数器的电流计。 这个项目也是我学习如何更好地控制微控制器的借口。 好吧,我写了一个小程序,使用timer0(8位),我需要触发两个中断服务程序(ISR): TIMER0_OVF_vect:溢出中断 TIMER0_COMPA_vect:比较时触发 我有以下function: void configureTimer0(parameters) { cli(); // Some maths TCCR0A = (1<<WGM01) | (1<<WGM00); // I tried to use the "Fast PWM" waveform generation mode TCCR0B &= 0b00110000; // 5th and 4th bits are reserved. Every other bits is set to 0. TCNT0 = 0; // Initialize counter value to […]

编译时asm中不可能的约束

在我的Atmel ASF项目中,我正在尝试构建以下内联asm代码。 但是我在编译时遇到了不可能的限制。 编译器指向此行__asm__ __volatile__ ,我错过了什么? #define OUTPORT PORTD #define OUTBIT 3 // PD.3 uint8_t rport ,rbits; uint8_t *buf = message; asm volatile( “in __tmp_reg__, __SREG__ \n\t” // 1 Save SREG for later “cli \n\t” // 1 Clear interrupts “in %[rport], %[port] \n\t” // 1 Move PORTB adress to rport : //Outputs [rport] “=&r” (rport) […]

C未定义的参考

我有以下代码: main.c中 #include “checksum.h” void main() { char *Buf =”GPGGA204502.005106.9813N11402.2921W1090.91065.02M-16.27M”; checksum(Buf); } checksum.c #include #include checksum(char *Buff) { int i; unsigned char XOR; unsigned long iLen = strlen(Buff); printf(“Calculating checksum…\n”); for (XOR = 0, i = 0; i < iLen; i++) XOR ^= (unsigned char)Buff[i]; printf("%X \n",XOR); } checksum.h #ifndef CHECKSUM_H_INCLUDED #define CHECKSUM_H_INCLUDED void checksum(char […]

Atmel C Pin Manipulation宏

所以我已经在Atmel C编程了一段时间,我已经习惯了所有的C位操作,所以现在我想隐藏它。 我想隐藏位操作不仅是为了使我的代码更具可读性,而且还使我们的硬件更改或创建新硬件时更容易维护和修改。 所以我问你Atmel C基本引脚操作的最佳宏是什么。 我正在寻找的function是: 将引脚设置为输入或输出 将输出引脚设置为高电平或低电平 读取输入引脚的值 所以我找到了一些我可以使用的宏,但没有一个真正适合我的账单。 链接: http://www.piconomic.co.za/fwlib/group___a_v_r___p_i_o.html (仍需要为每个引脚保留多个定义) http://www.starlino.com/port_macro.html (不编译,AVR Studio 6.2) 在C中更改全局变量 (最好的一个,在“/ * LCD DEFINES * /”下的问题顶部附近) 我真正想要的是这样的: #define LED1 PA1 #define BUTTON1 PB0 set_output(LED1); output_high(LED1); delay_ms(100); output_low(LED1); set_input(BUTTON1); uint8_t tmpVal = get_input(BUTTON1); if( tmpVal == 1 ) { // assuming button IS pressed here } else { […]

((Port *)0x41004400UL)在这里是什么意思?

我正在开发一种基于32位ARM的微控制器的开发板(即电路板是Atmel SAM D21J18A)。 我还处于学习阶段,我还有很多工作要做,但我真的很喜欢嵌入式系统。 我有一些C背景。但是,这显然是不够的。 我正在查看Atmel的一个示例项目的代码,我并没有真正得到它的一些部分。 这是其中之一: #define PORT ((Port *)0x41004400UL) /**< \brief (PORT) APB Base Address */ 端口定义为: typedef struct { PortGroup Group[2]; /**< \brief Offset: 0x00 PortGroup groups [GROUPS] */ } Port; 和PortGroup定义为: typedef struct { __IO PORT_DIR_Type DIR; /**< \brief Offset: 0x00 (R/W 32) Data Direction */ __IO PORT_DIRCLR_Type DIRCLR; /**< \brief […]