Hola compañeros. A ver si me podéis echar una mano.
Recientemente me he puesto de nuevo con los microcontroladores, de momento con programas super sencillos rollo "Hola mundo"
Para la programación estoy usando MPLAB, con el compilador de CCS y programación en C.
De momento, lo poco que había hecho siempre ha sido con un PIC16F84A, pero para comenzar con proyectos mega sencillos he hecho una prueba con un PIC10F200 y aquí es donde aparece mi problema.
El típico programa de encender un led parpadeando no ha habido problemas.
Pero ahora he hecho un programa que simula una vela electrónica, generando una especie de PWM mediante un numero aleatorio.
Lo curiosos es que el programa como podréis ver, es muy simple y solo consta de 2 variables de 16 bits (también lo he probado con 8 bits) una para el pulso alto y la otra para el tiempo de pulso bajo, y poca cosa más.
Pero cuando compilo me dice que no hay suficiente RAM para las variables (Not enought RAM for all variables).
Ya sé que el PIC usado es el más pequeño de todos, pero dudo mucho que no sea capaz de funcionar con un programa tan sencillo como este.
El mismo programa en un PIC16F84A funciona sin problemas.
Como he dicho soy muy novato por lo que seguramente el código se podrá mejorar.
¿Me podéis indicar el motivo de ese error?
Quedo a la espera de vuestra ayuda. Muchas gracias.
El código de mi programa es el siguiente:
Recientemente me he puesto de nuevo con los microcontroladores, de momento con programas super sencillos rollo "Hola mundo"
Para la programación estoy usando MPLAB, con el compilador de CCS y programación en C.
De momento, lo poco que había hecho siempre ha sido con un PIC16F84A, pero para comenzar con proyectos mega sencillos he hecho una prueba con un PIC10F200 y aquí es donde aparece mi problema.
El típico programa de encender un led parpadeando no ha habido problemas.
Pero ahora he hecho un programa que simula una vela electrónica, generando una especie de PWM mediante un numero aleatorio.
Lo curiosos es que el programa como podréis ver, es muy simple y solo consta de 2 variables de 16 bits (también lo he probado con 8 bits) una para el pulso alto y la otra para el tiempo de pulso bajo, y poca cosa más.
Pero cuando compilo me dice que no hay suficiente RAM para las variables (Not enought RAM for all variables).
Ya sé que el PIC usado es el más pequeño de todos, pero dudo mucho que no sea capaz de funcionar con un programa tan sencillo como este.
El mismo programa en un PIC16F84A funciona sin problemas.
Como he dicho soy muy novato por lo que seguramente el código se podrá mejorar.
¿Me podéis indicar el motivo de ese error?
Quedo a la espera de vuestra ayuda. Muchas gracias.
El código de mi programa es el siguiente:
PHP:
#include <10f200.h>
#include <stdlib.h>
#include <time.h>
#use delay(clock = 4000000)
#fuses NOWDT
#locate aux=0x001
#zero_ram
void main()
{
set_tris_b (0b111111110);
int16 high_pulse, low_pulse;
srand(get_timer0());
while(1)
{
high_pulse = rand()%(1111)+425;
low_pulse = 1536-high_pulse;
for (high_pulse; high_pulse>0; high_pulse--)
{
output_high(PIN_B0);
}
for (low_pulse; low_pulse>0; low_pulse--)
{
output_low(PIN_B0);
}
}
}
Última edición por un moderador: