Witam,
mam prośbę o drobną wg mnie pomoc. Czy mógłby ktoś dokładniej opisać podany przeze mnie kod programu? Lub go tak opisać 'łopatologicznie' dla gościa, który z programowania jest zielony? Jest to program sterujący jasnością diody. Będę bardzo wdzięczny za pomoc. Załączam kod programu:
#include <avr/io.h>
#include <util/delay.h>
#define LED PB3
#define WE_POT 0x01
#define POT PC1
void main(void)
{
DDRB = (1<<LED); //ustawienie jako wyjscie portu do sterowania jasnoscia
PORTB = ~((1<<LED)); //ustawienie pull up pozostalych wejsc portu B
PORTC= ~((1<<POT)); //ustawienie pull up pozostalych wejsc portu C oprocz wejscia ADC z potencjometru
PORTD = 0xFF; //ustawienie pull up pozostalych wejsc portu D
//Inicjalizacja ADC
ADCSRA = (1<<ADEN) //włączenie ADC
|(1<<ADPS0) //ADPS2:0: ustawienie preskalera na 8 (125kHz)
|(1<<ADPS1); //wyrównanie wyniku konwersji do lewej
ADMUX = (1<<REFS0)
|(1<<ADLAR) //VCC jako napięcie referencyjne z kondensatorem na nozce AREF
| WE_POT; //Wybor kanalu poczatkowego (PC1) ADC1
TCCR2 = (1<<WGM20) //ustawienie timera 2 w tryb fast pwm z preskalerem /8 | fPWM = 1000000/256*8
|(1<<COM21)
|(1<<CS21)
|(1<<WGM21);
for(;;)
{
ADCSRA |= (1<<ADSC); //ADSC: Uruchomienie pojedynczej konwersji
while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji
OCR2 = ADCH; //przepisanie wyniku konwersji do rejestru timera 2 (fast PWM)
}
}