 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
_buggy_ Neznanec

Pridružen-a: Tor 21 Avg 2007 8:27 Prispevkov: 4 Aktiv.: 0.02 Kraj: Nova Gorica
|
Objavljeno: Pet Jun 13, 2008 11:40 pm Naslov sporočila: prekinitve in osveževanje registrov |
|
|
Zakaj koda spodaj ne povečuje registra OCR1A.
Rad bi, da se mu veča duty cycle do vrednosti ICR1 potem pa spet skoči na 1000.
uP = atmega8515
Koda: |
#include<avr/io.h>
#include <avr/interrupt.h>
int8_t a = 1;
void init()
{
DDRD = _BV(PD5) | _BV(PD7);
DDRC = _BV(PC0);
DDRE = _BV(PE2);
TCCR1A = 0x0;
TCCR1B = 0x0;
TIMSK = 0x0;
//mode 14,
TCCR1A = (1<<WGM11) | (1<<COM1A1) | (1<<COM1B1) ;
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10)| (1<<CS11);
TIMSK = (1<<TOIE1) | (1<<TICIE1) | (1<<OCIE1A);
ICR1 = 10000;
OCR1A = 3000;
}
int main()
{
init();
sei();
for(;;)
{
};
return 0;
}
SIGNAL (SIG_OUTPUT_COMPARE1A)
{
}
SIGNAL (SIG_OVERFLOW1)
{
OCR1A += 1000;
if (OCR1A == ICR1)
{
OCR1A =1000;
}
} |
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|