Mam kawałek prostego kodziku. Gdy sei jest zakomentowane, diody mrugają (na porcie D), gdy włącze przerwania, na porcie D jest cały czas 0. Wygląda jak by proc sie zawieszał. Zapewne problem jest błachy i oczywisty, ale patrze w to już 2 dzień i nie moge znaleźć.
Może ktoś powiedzieć co jest nie tak ?
Procek - jak w temacie - mega8.
Może ktoś powiedzieć co jest nie tak ?
#define __AVR_ATmega8__
#include "avr/io.h"
#include <avr/interrupt.h>
#include <avr/signal.h>
#define FOSC 8000000// Clock Speed
#define B0 1
#define B1 2
#define B2 4
#define B3 8
#define B4 16
#define B5 32
#define B6 64
#define B7 128
SIGNAL(SIG_ADC)
{
PORTD = B2;
}
void init_adc()
{
ADMUX = 0 | ( 1 << REFS1 ) | ( 1 << REFS0 ) | ( 1 << ADLAR ); // chanel 0 active, Internal 2.56 Uref, right justified data.
ADCSRA = 0 | ( 1 << ADEN ) | /*( 1 << ADIF ) | */ ( 1 << ADIE ) |( 1 << ADFR ) | ( 1 << ADSC ) // adc enable, adc int flag, adc int enable,free run,start
| ( 1 << ADPS2 ) | ( 1 << ADPS1 ); // adc prescaler 64 (125Khz / 8Mhz clock)
// sei();
}
int main ( void )
{
long i = 0;
DDRD = 255;
PORTD = 0;
init_adc();
while ( 1 )
{
for ( i = 0; i < 94000; i++ )
{}
PORTD = 0xAA;
for ( i = 0; i < 94000; i++ )
{}
PORTD = 0x55;
}
return 0;
}Procek - jak w temacie - mega8.