Witam !!!
Założę nowy temat z tego względu, że problem jest już trochę inny, niż ten poruszany w " ustawienie rejestrow w timerze 1"
Chciałbym sterować wartością OCR1A poprzez zmianę wartości ADC,
Jednak program działa tylko wtedy kiedy wpiszę twardo wartość np. OCR1A =1440. Gdy chcę sterować poprzez ADC, wydaję mi się że uC pobiera zawsze (niezależnie od ustawienia potencjometru) wartość 1023 i później nie można jej już zmienić, a przecież chciałbym ją sterować. Działam na kwarcu 14,745 MHz i takim oto ustawieniu fuse bitów:
low 7F
high 48
Czym może być spowodowana takie coś ? Dodam że mam też podobny program, gdzie także mam takie samo sterowanie ADC(w przerwaniu) i tam wszystko działa ale tam nie działam na zew. kwarcu lecz na wew zegarze. Więc może to przez te fuse bity? Serdecznie proszę o pomoc...
Proszę poprawić temat, tak aby był zgodny z regulaminem.
Robak
Założę nowy temat z tego względu, że problem jest już trochę inny, niż ten poruszany w " ustawienie rejestrow w timerze 1"
ISR(TIMER1_COMPA_vect) // przerwanie dla porownania
{
PORTC ^= 0x01; // zapalic/zgasic diode
OCR1A=1440;
//OCR1A=14745000/(512*(0.0185*ADC + 0.9814));
}
int main(void) {
DDRC |= 0x01;
// INICJALIZACJA PRZETWORNIKA
ADMUX = (1<<REFS0);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE);
// INICJALIZACJA LICZNIKA 1
TCNT1 = 0x0000; // wartosc poczatkowa
TCCR1A = 0x0000; // OC1A/OC1B odlaczone
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS12);
TIMSK |=(1<<OCIE1A); // i porownania licznika T1
sei(); // zezwolenie na przerwania
while(1){}
return(0);
}
Chciałbym sterować wartością OCR1A poprzez zmianę wartości ADC,
OCR1A=14745000/(512*(0.0185*ADC + 0.9814));
Jednak program działa tylko wtedy kiedy wpiszę twardo wartość np. OCR1A =1440. Gdy chcę sterować poprzez ADC, wydaję mi się że uC pobiera zawsze (niezależnie od ustawienia potencjometru) wartość 1023 i później nie można jej już zmienić, a przecież chciałbym ją sterować. Działam na kwarcu 14,745 MHz i takim oto ustawieniu fuse bitów:
low 7F
high 48
Czym może być spowodowana takie coś ? Dodam że mam też podobny program, gdzie także mam takie samo sterowanie ADC(w przerwaniu) i tam wszystko działa ale tam nie działam na zew. kwarcu lecz na wew zegarze. Więc może to przez te fuse bity? Serdecznie proszę o pomoc...
Proszę poprawić temat, tak aby był zgodny z regulaminem.
Robak
