Recientemente, mi microcontrolador no ejecuta ningún programa, estoy probando el siguiente código:
#include <mega32.h>
#include <delay.h>
#define xtal 16000000
void main(void)
{
DDRA=0xFF;
DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
while (1)
{
PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
delay_ms(500);
PORTA=0xFF;
PORTB=0xFF;
PORTC=0xFF;
PORTD=0xFF;
delay_ms(500);
}
}
He probado cuatro controladores diferentes, tanto mega32a como mega16a. El código es compilado por CodeVisionAVR Evaluation y programado por Atmel Studio 6.1 (también he probado PROGISP). El programador es una programación original MK2 e ISP.
Fusebits:
- bajo: 0xEF
- Alto: 0xC9
Reloj de cristal interno y externo probado. LED con 220 \ $ \ Omega \ $ resistencia conectada a un pin.
Otro código de prueba:
Cuando programo el siguiente código:
#include <mega32.h>
#include <delay.h>
void main(void)
{
DDRA=0xFF;
DDRB=0xFF;
while (1)
{
PORTA=0x00;
PORTB=0x00;
delay_ms(500);
PORTA=0xFF;
PORTB=0xFF;
delay_ms(500);
}
}
Todos los LED están apagados, y cuando programo el siguiente código:
#include <mega32.h>
#include <delay.h>
void main(void)
{
DDRA=0xFF;
DDRB=0xFF;
while (1)
{
PORTA=0xFF;
PORTB=0xFF;
delay_ms(500);
PORTA=0x00;
PORTB=0x00;
delay_ms(500);
}
}
Todos los LED están encendidos. ¿Cuál es el problema? Otra prueba:
#include <mega32.h>
#include <delay.h>
#define xtal 16000000
void main(void)
{
DDRA=0xFF;
DDRB=0x01;
while (1)
{
PORTA=0x00;
PORTB=0x02;
delay_ms(500);
PORTA=0xFF;
PORTB=0x00;
delay_ms(500);
}
}
El segundo pin del puerto B está en condiciones de poca luz y PORTB=0x00;
después de delay_ms(500);
No importa si es: 0x00;
o 0xFF;