Buenos días! Estoy teniendo un problema con la función __delay_ms. Cada que intento ingresar 1000 como valor, me dice que el argumento e...

Marcel Nahir Samur

Marcel Nahir Samur

Pregunta
studenthace 4 años

Buenos días!

Estoy teniendo un problema con la función __delay_ms. Cada que intento ingresar 1000 como valor, me dice que el argumento es muy grande:

main.c:20: error: (1355) inline delay argument too large

Por lo cual he debido crear una función con un bucle for para palear este problema:

#include <xc.h> #include <pic18.h> #include "pic18f4550Configs.h" #define _XTAL_FREQ 8000000 void delayMs ( int x) // Parche para problema con __delay_ms { for ( int i = 0 ; i < x ; i++) { __delay_ms(10); } } void main(void) { TRISB0 = 0; // TRIS se usa para definir si un pin va a ser entrada o salida (0 output / 1 input) while (1) { LATB0 = 1; delayMs(100); LATB0 = 0; delayMs(100); } return; }

¿Alguien ha tenido un problema similar? ¿Como pudieron solucionarlo?

Gracias!

2 respuestas
para escribir tu comentario
    Marcel Nahir Samur

    Marcel Nahir Samur

    studenthace 4 años

    Gracias Omar! La primer solución es que se e¿me había ocurido, la segunda la probaré!

    Gracias por la ayuda

    Omar Daniel Centeno

    Omar Daniel Centeno

    studenthace 4 años

    ¡Hola!

    Al parecer no se admiten valores grandes para el delay(). Una solución a esto es utilizar ciclos

    for
    para alcanzar el valor deseado, puedes intentar lo siguiente:

    for (int i=0; i<=10; i++) __delay_ms(100);

    Otra forma de solucionarlo es la siguiente:

    #define delay_us(x) { unsigned char us; \ us = (x)/(12000000/FOSC)|1; \ while(--us != 0) continue; } void delay_ms(unsigned int ms) { unsigned char i; do { i = 4; do { delay_us(250); } while(--i); } while(--ms);
Curso de Programación de Microcontroladores Pic con C

Curso de Programación de Microcontroladores Pic con C

Programa microcontroladores PIC con C para proyectos de hardware. Aprende a elegir microcontroladores, usar datasheets, configurar pines y conectar sensores. Ideal para quienes buscan avanzar en desarrollo técnico de electrónicos.

Curso de Programación de Microcontroladores Pic con C
Curso de Programación de Microcontroladores Pic con C

Curso de Programación de Microcontroladores Pic con C

Programa microcontroladores PIC con C para proyectos de hardware. Aprende a elegir microcontroladores, usar datasheets, configurar pines y conectar sensores. Ideal para quienes buscan avanzar en desarrollo técnico de electrónicos.