Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: ATmega16 C softa

timok16 [31.01.2006 07:24:25]

#

moikka,
Onko kellään tietoa, että tukeeko AVRgcc-kääntäjä ko. prossan interrupt handler käskyjä? Mun koodissa ei näytä toimivan? Onko siis mulla väärin jotain tossa koodissa?

#include <avr/io.h>
#include <viive.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
//timer keskeytysohjelma
SIGNAL(SIG_OWERFLOW0)
{
  static int tick = 0;  //arvo säilyy kutsukertojen välillä
  tick++;    //tick = tick + 1

  if (tick >= (16000*0,0625)) //  sekunnin välein led 1--0
  {
    PORTB = PORTB ^ 0x01;  //EXOR, käännetään LSB-LED eli B.0
    tick = 0;
  }
  TCNT0 = 0x06;  //Timer/Counter0 uudelleen asetus
}
//Timer0 rekisterien asetukset
void Timer0_init(void);  //esittely
void Timer0_init(void)   //määrittely
{
 TCCR0 = 0x03;    //Timer/Counter0 conrol register
                  //CLK suoraan ajastimelle/timerille
 TCNT0 = 0x06;    //Timer/Counter0 alkuasetus
 //laskee 6 --> 256 = 250 step, sitten owerflow-keskeytyspyyntö

 //OCR0 = 0xFF;
 TIMSK = 0x03;    //TOE0
 //Timer/Counter0 ylivuotokeskeytys sallittu

 SREG = 0x80;     //Status Register
 //Global interrupt Enable, 1 = eneble, 0 = disable
}

int main(void)
{
    DDRB = 0xFF;     //B out
   PORTB = 0x00;
   Timer0_init();   //initalisointifunktion kutsu

    while(1)
  {
    ;
  }
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta