Witam,
mam taki problem, że Atmega8 oblicza mi źle wynik. Sprawdzałem w innym kompilatorze C na PC i wynik jest poprawny natomiast na Atmedze są jakieś problemy. Nie wiem czy wynika to z błędu dzielenia czy niewłaściwego typu danych. Oto kod:
Wartość pobierana z ADC jest poprawna, problem prawdopodobnie gdzieś przy dzieleniu. Trochę czasu nad tym spędziłem i jakoś nie znalazłem rozwiązania, a problem pewnie jest prosty ..
Proszę poprawić nazwę tematu!
Robak
mam taki problem, że Atmega8 oblicza mi źle wynik. Sprawdzałem w innym kompilatorze C na PC i wynik jest poprawny natomiast na Atmedze są jakieś problemy. Nie wiem czy wynika to z błędu dzielenia czy niewłaściwego typu danych. Oto kod:
int pomiar = 0;
int current = 866;
int opor = 0;
int temp = 0;
int a = 0;
int b = 0;
int znaki[10] = { 0x81, 0xB7, 0xC2, 0x92, 0xB4, 0x98, 0x88, 0xB3, 0x80, 0x90};
// zainicjowanie rejestrow i przetwornika
init();
while (1)
{
ADCSRA |= _BV(ADSC); // Rozpoczęcie przetwarzania
while(bit_is_set(ADCSRA,ADSC)){}; // Oczekiwanie na zakończenie przetwarzania
// Zapisanie starszych 8 bitów wyniku konwersji do zmiennej "pomiar"
pomiar = ADCH;
pomiar += 6;
pomiar *= 10000;
opor = pomiar / current;
temp = opor / 8;
temp -= 100;
a = temp % 10;
b = (temp - a) / 10;
PORT_OUT1 = znaki[a];
PORT_OUT2 = znaki[b];
}
Wartość pobierana z ADC jest poprawna, problem prawdopodobnie gdzieś przy dzieleniu. Trochę czasu nad tym spędziłem i jakoś nie znalazłem rozwiązania, a problem pewnie jest prosty ..
Proszę poprawić nazwę tematu!
Robak
