Witam,
Po wgłebieniu się w tajniki datasheet'a chciałem wygenerować PWM'a i sterowania jego wypełnieniem za pomocą przycisków PD0 i PD1.
Wydaje mi się ze wszystko dobrze napisałem zgodnie z tym co jest w datasheet ale ten kod nie działa i juz nie mam pomysłu co by tu jeszcze dopisać ewentualnie usunąć.
Prosiłbym o jakieś sugestie do kodu.
/* Przyciski sterujace szerokoscia impulsu przylaczone miedzy PD0 i mase oraz PD1 i mase */
#define F_CPU 8000000L
#include <avr/io.h>
int main(void)
{
int p = 0;
DDRD =0x00;
PORTD=0x03;
DDRB |=_BV(3);//pin OC0 połaczony z diodą
TCNT0 =500;
OCR0=0;
TCCR0 |=(1<<WGM00)|(1<<COM01)|(1<<CS02)|(1<<CS01)|(1<<CS00);//PWM korekcja fazy,preskaler 1024
for (;;)
{
if(bit_is_clear(PIND, 0))
{
p+=10;
if(p > 500)
p=500;
OCR0=p;
loop_until_bit_is_set(PIND, 0); /* Czeka az przycisk zostanie zwolniony */
}
if(bit_is_clear(PIND, 1))
{
p-=10;
if(p < 0)
p=0;
OCR0=p;
loop_until_bit_is_set(PIND, 1);
}
}
}Po wgłebieniu się w tajniki datasheet'a chciałem wygenerować PWM'a i sterowania jego wypełnieniem za pomocą przycisków PD0 i PD1.
Wydaje mi się ze wszystko dobrze napisałem zgodnie z tym co jest w datasheet ale ten kod nie działa i juz nie mam pomysłu co by tu jeszcze dopisać ewentualnie usunąć.
Prosiłbym o jakieś sugestie do kodu.