Witam speców.
Chciałem sterować diodą RGB za pomocą Atmegi8.
Część programu ściągnąłem z jakiejś strony a część napisałem sam.
Jednak moje umiejętności C++ nie pozwalają mi napisać do końca tego programu, ponieważ nie wiem jak sterować 3-cią nóżką diody.
Chyba trzeba wykorzystać OCR2 ale nie wiem jak to napisać w C++.
Proszę o pomoc.
Oto mój program :
[code]
Chciałem sterować diodą RGB za pomocą Atmegi8.
Część programu ściągnąłem z jakiejś strony a część napisałem sam.
Jednak moje umiejętności C++ nie pozwalają mi napisać do końca tego programu, ponieważ nie wiem jak sterować 3-cią nóżką diody.
Chyba trzeba wykorzystać OCR2 ale nie wiem jak to napisać w C++.
Proszę o pomoc.
Oto mój program :
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
#define F_CPU 1000000L
volatile uint16_t pwmA;
volatile uint16_t pwmB;
void A(void);
void A1(void);
void B(void);
void B1(void);
int a,b;
void PWM_Init (void)
{
TCCR1B|=(1<<WGM12)|(1<<CS10);
TCCR1A|=(1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
TIMSK |= (1 << TOIE1);
sei();
OCR1A = 0;
OCR1B = 0;
}
SIGNAL (SIG_OVERFLOW1)
{
OCR1A=pwmA;
OCR1B=pwmB;
}
void main(void)
{
DDRB=0xff;
DDRC=0X00;
PORTC=0Xff;
PWM_Init();
pwmA=a;
pwmB=b;
while(1)
{
if(!(PINC & 0X01)) A();
if(!(PINC & 0X02)) A1();
if(!(PINC & 0X04)) B();
if(!(PINC & 0X08)) B1();
}
}
void A(void)
{
_delay_ms(5);
a=a+5;
if(a<=255) main();
else if (a>255) a=255;
}
void A1(void)
{
_delay_ms(5);
a=a-5;
if(a>=0) main();
else if (a<0) a=0;
}
void B(void)
{
_delay_ms(5);
b=b+5;
if(b<=255) main();
else if (b>255) b=255;
}
void B1(void)
{
_delay_ms(5);
b=b-5;
if(b>=0) main();
else if (b<0) b=0;
}