Preguntas con etiqueta 'c'

4
respuestas

___ tipo qstnhdr ___ 'bit' para la programación del microcontrolador AVR ______ qstntxt ___

He escrito un código para el microcontrolador 8051, donde utilicé el tipo de bit, algo como esto:

%pre%

Ahora estoy portando esto al controlador AVR ATmega16. Encontré que no hay soporte para
 tipo de bit en AVR.

El manual de usuario de

AVR-lib C dice:

  

Tipos de datos: char es de 8 bits, int es de 16 bits, largo es de 32 bits, largo   largo es de 64 bits, flotante y doble de 32 bits (este es el único   formato de punto flotante admitido), los punteros son 16 bits (función   los punteros son direcciones de palabras, para permitir direccionar hasta 128K programas   espacio de memoria). Hay una opción -mint8 (ver Opciones para la C   compilador avr-gcc) para hacer int 8 bits, pero eso no es compatible con   avr-libc y viola los estándares C (int debe ser de al menos 16 bits). Eso   puede ser eliminado en una versión futura.

Entonces, ¿qué debo hacer ahora?

    
______ answer80616 ___

Puedes usar una estructura como esta:

%pre%

Y para acceder a un bit a la vez solo tienes que

%pre%     
______ answer80632 ___

Como PeterJ ya mencionó en su comentario, sugeriría usar %code% .

Es necesario incluir la biblioteca stdbool.

%pre%

Como ya se señaló, en AVRGCC, %code% es de 8 bits y solo una abstracción de %code% . Si no puedes vivir con eso y necesitas guardar cada bit o tener toneladas de banderas globales de "sí / no" (lo que podría indicar una mala práctica de codificación), puedes considerar lo que Naeriel publicó en su respuesta.

Sin embargo, el uso de bool y la denominación de variable adecuada (usando el prefijo "es") produce un código mucho más limpio. Por ejemplo usar

%pre%

en lugar de "done_flag". De esa manera es más obvio para alguien que no conoce el código lo que exactamente indica el estado.

    
______ answer80615 ___

Utilice unsigned char en su lugar. Sin embargo, esto usará un byte completo en lugar de un poco.

    
______ answer151021 ___

Puedes usar algo como esto:

%code%

Ejemplo de uso:

%code%

establece PB4 como pin de salida.

Fuente: enlace

    
___

He escrito un código para el microcontrolador 8051, donde utilicé el tipo de bit, algo como esto: static bit done_flag = 0; /* bit variable */ bit testfunc ( /* bit function */ bit flag1, /* bit arguments */...
1
respuesta

El LED parpadea incluso cuando no presiono el botón

He escrito un programa en Keil que parpadea un LED a través de la Interrupción GPIO Externa. Aquí es cómo lo he configurado en STM32CubeMX: Al principio, habilité y configuré el RCC como se puede ver y configuré PA0 para interrupción externa...
1
respuesta

¿Qué modo SPI usar?

Estoy conectando una 23LC1024 SPI Serial SRAM con un PIC18, usando el compilador C18 y las funciones integradas de <spi.h> como se describe en Bibliotecas de compiladores , sección 2.8:    OpenSPI1 : inicialice el módulo SSP...
2
respuestas

Definir devoluciones de llamada para interrupciones

Estoy trabajando con un STM32 y estoy un poco confundido acerca de las interrupciones, específicamente las Interrupciones de Vector Anidado (NVI). Según entiendo, hay un vector NVI (llamado NVIC) donde cada interrupción tiene una prioridad (a...
3
respuestas

STM32: la interrupción del temporizador funciona de inmediato

Este es el código para el temporizador en mi proyecto en STM32F429: //timer initialization void timerInit() { uwPrescalerValue2 = (uint32_t) ((SystemCoreClock / 2) / 100000) - 1; RS485Timer.Instance = TIM5; RS485Timer.Init.Period = 674...
2
respuestas

Implementando los comandos de control para una MCU sobre una serie

Estoy buscando integrar una interfaz de comandos en un proyecto que estoy haciendo que acepte comandos en serie desde una PC. La idea es que el dispositivo haga su trabajo pero recibe un comando y lo ejecuta. Esto es diferente a la mayoría de...
3
respuestas

El programa MSP430 solo funciona durante el modo de depuración

Estoy intentando recuperar los valores del ADC en mi MSP430F5529 y enviarlos a mi computadora a través de USB, pero estoy empezando poco a poco. Todo lo que tengo ahora mismo es algo que recupera el valor de ADC y lo almacena en ADCResults, si e...
2
respuestas

Caja de herramientas de MATLAB equivalente para el sistema integrado

Tenemos que desarrollar un software de control para ejecutar en un sistema integrado. El prototipo está hecho en Matlab (usando una caja de herramientas de red neuronal), y queremos trasladar el software a C o C ++. ¿Sabes qué bibliotecas o soft...
2
respuestas

Detectando desbordamiento con C18

Estoy implementando una calculadora en un microcontrolador que se controla a través del puerto serie. Por ejemplo, enviaría 1234*5678= y respondería con 7006652\r\n . He escrito el código para esto usando el compilador C18. Cuand...
3
respuestas

Bucle extraño producido por el compilador PIC de MicroChip

Estamos usando la versión Lite del compilador MicroChip PIC, por lo que quizás esa sea la razón, pero este simple cambio de un bit está generando un bucle donde no es necesario. Dado que el recuento de turnos es 1 (una constante), esperaría que...