ATmega16 sama się resetuje (źr)

Aug 05, 2005 0 Replies

Czesc!



Mam problem. Chce napisac programik do sterowania trzema lampkami (ledami) przy pomocy ATmega16 z uzyciem PWM. Zaczynam programowanie tego uP. Cos napisalem i (nie wiedziec czemu) petla glowna programu wykonuje sie raz i atmega sie samoczynnie resetuje. Dlaczego? Ponizej zalaczam zrodlo. Kompiluje przy pomocy AVR-GCC. Poki co program nie robi nic specjalnego, ale dlaczego sie nie zapetla? Po odpaleniu slychac z buzzerka (PIND7) pik, pik, pik,....



Pozdrawiam


------------------ SOURCE ---------------



// LEDS PWM



// CRYSTAL : 11'059'200 Hz



#include "avr/io.h" #define byte unsigned char



byte led1_time; byte pwm_counter;



void delay ( unsigned int x ) { int z = 0; unsigned char zz = 0; unsigned char zzz = 0; for ( z = 0 ; z < x ; z++ ) for ( zz = 0 ; zz < 255 ; zz++ ) for ( zzz = 0 ; zzz < 10 ; zzz++ ) asm ( "NOP" ); }



void beep () { PORTD &= ~ ( 1 << 7 ); // PIND7 goes LOW (beep ON) delay ( 5 ); // delay PORTD |= ( 1 << 7 ); // PIND7 goes HIGH (beep OFF) }



int main () { // Timer0 setup // PWM DDRA = 0xFF; // On PORT A there are LEDs



DDRD |= ( 1 << 7 ); // PIND7 as output (LED)



beep ();



led1_time = 80;



pwm_counter = 0; GIMSK &= ~ ( 1 << 7 ); // gasze na wszelki wypadek flage I (przerwania)



loop: {



pwm_counter++; if ( pwm_counter >= led1_time ) PORTA |= ( 1 << 0 ); } goto loop; }


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required