Por qué el led está parpadeando en lugar de mantenerse en atmega8

2

Escribí un código de muestra muy simple en mi atmega8 a través de avrstudio. Aquí está:

#include <avr/io.h>

#ifndef F_CPU
#define F_CPU 1000000UL
#endif

int main(void)
{
    DDRC = 0xff;
    while (1)
    {
        PORTC = 0xff;
    }
    return (0);
}

Estoy esperando que todos los pines del PORTC den un alto voltaje (también conocido como 5v) para que el LED permanezca encendido (todo el tiempo), pero el resultado es que todos los pines del PORTC reciben una onda cuadrada de 160 Hz con el alto voltaje alrededor del 25%.

Paraelregistro,elbitdefusibleseestableciócomo:[Bajo:E1Alto:99]ysincristal.

Entonces,¿cuálseráelproblema?

EDITAR

LasalidadeavrdudeconlaquesuboelHEXalchip:

avrdude.exe:setSCKfrequencyto32000Hzavrdude.exe:warning:cannotsetsckperiod.pleasecheckforusbaspfirmwareupdate.avrdude.exe:AVRdeviceinitializedandreadytoacceptinstructionsReading|##################################################|100%0.01savrdude.exe:Devicesignature=0x1e9307avrdude.exe:NOTE:"flash" memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: set SCK frequency to 32000 Hz
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: reading input file "C:\Users\ximing\Documents\Atmel Studio.2\GccBoardProject1\GccBoardProject1\Debug\GccBoardProject1.hex"
avrdude.exe: writing flash (68 bytes):

Writing | ################################################## | 100% 0.10s

avrdude.exe: 68 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\ximing\Documents\Atmel Studio.2\GccBoardProject1\GccBoardProject1\Debug\GccBoardProject1.hex:
avrdude.exe: load data flash data from input file C:\Users\ximing\Documents\Atmel Studio.2\GccBoardProject1\GccBoardProject1\Debug\GccBoardProject1.hex:
avrdude.exe: input file C:\Users\ximing\Documents\Atmel Studio.2\GccBoardProject1\GccBoardProject1\Debug\GccBoardProject1.hex contains 68 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.07s

avrdude.exe: verifying ...
avrdude.exe: 68 bytes of flash verified

avrdude.exe: safemode: Fuses OK (H:FF, E:99, L:E1)

avrdude.exe done.  Thank you.
    
pregunta armnotstrong

1 respuesta

3

Como se confirmó en los comentarios, el AVR tenía un temporizador de vigilancia que necesita ser mascota o dormir. Sin esto, el perro guardián hará correctamente su trabajo y reiniciará el microcontrolador una vez que haya transcurrido el tiempo. Esto hace que el AVR establezca sus pines a su estado predeterminado, que suele ser el estado de entrada Z alto. Esto explica el encendido y apagado de los pines que OP vio.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas