Estoy teniendo el problema más peculiar. Cuando cambia el tamaño de una matriz global, altera la frecuencia de reloj del ATmega164a. Esto está en Linux. Cuando se compila en Windows, este problema no se produce (independientemente de si el archi...
Necesito poder almacenar y referirme a matrices de datos constantes que deben colocarse después del límite de 64k en el atmega1280. ¿Cómo creo la estructura de datos correcta y luego accedo a ella para el siguiente ejemplo:
const uint16_t PROG...
Un proyecto en el que estoy trabajando implica una rutina de servicio de interrupción de ciclo preciso. Esta rutina está escrita en el ensamblaje de AVR donde acabo de escribir:
.org oc1aadr
rjmp INTRP
(para configurar el IVT)
Y funcionó pe...
He reducido un problema en mi código que crea 260 bytes adicionales de uso de RAM estática:
BYTE Height = 150;
BYTE sampleLevel(BYTE ADCchan,BYTE averages)
{
float samp;
//int samp;
BYTE level;
samp = avgSampleADC(ADCchan,ave...
Context
Estoy trabajando en un proyecto de controlador de motor de CC sin escobillas.
Y me gustaría verificar que los tiempos de interrupción tengan sentido en la simulación antes de descargar mi código en el tablero.
Challenge
Para eso,...
Esto es para los más experimentados que están por ahí.
Actualmente estoy involucrado con un proyecto AVR grande (usando ATMega328) y se está confundiendo con respecto a las interrupciones.
El proyecto involucra interrupciones de las siguie...
En el conjunto de instrucciones 8bit-avr, la instrucción LDI se define como LDI Rd, K;
Por ejemplo, LDI R16, $ 10; y se tarda 1 ciclos en completarse.
En el mismo documento leí que podemos cambiar el bit específico del registro Rd de esta...
He portado un programa del entorno arduino a un build de makefile usando winavr, que, a su vez, se basa en avr-gcc (al igual que arduino).
Sin embargo, mi programa comenzó a fallar, y después de una investigación descubrí que me estaba quedan...
Lo que estoy tratando de hacer es configurar el pin PC0 del PUERTO C como salida para encender un LED.
El código que estoy usando para eso es:
//SET PORT C
//PC0 = RELAY STATUS LED - O/P
//PC1 = RELAY CTL LINE - O/P
//PC2 = PUSH BUTTON - I/P
/...
Parece que estoy obteniendo caracteres aleatorios en mi salida de USART con un ATMEGA8
uart.c
#define FOSC 8000000
#define BAUD_RATE 9600
#define UBRR_VALUE (uint16_t)(FOSC/16/BAUD_RATE-1)
#include "uart.h"
volatile u8buf UART_RCV_BUFFER;...