Skocz do zawartości
qbas0600

Arduino as ISP programowanie AtTiny13 problem

Pomocna odpowiedź

Witam.

Pierwszy raz programuje procesor AVR przy pomocy Arduino. Wszystko ustawione zgodnie z TYM tematem. Kod niezwykle prosty jak budowa cepa, bo to włącznik modelarski. Jedynie sprawdza czas trwania impulsu i na tej podstawie ustawia stany na wyjściach. Mikrokontroler to Attiny13.

Pierwszy próg do którego oba wyjścia są wyłączone to 1100ms. Od tego progu wyjście "0" jest stanem wysokim a "1" jest wyłączone.

Kolejny to 1700ms. Po jego przekroczeniu następuje zmiana i "0" jest stanem niskim a wyjście "1" stanem wysokim. Maksymalny czas trwania impulsu to 2500ms( takie czasy z odbiornika modelarskiego sprawdziłem).

I tu koniec teorii. Podczas testów okazuję się, że czasy się rozjeżdżają. Pierwszy stopień wchodzi przy 980ms a drugi przy 1500 zamiast przy 1700ms. Niby się da to dostroić ale po co?

Podczas wgrywania "bootloadera" do attiny13 kwarc ustawiony na 1,2MHz tak samo jak podczas programowania.

Ktoś ma jakieś pomysły dlaczego tak się dzieje?

Opis kodu "ODBIORNIK TURNIGY" to czasy impulsu w ms jakie nadaje nadajnik przy różnych ustawieniach drążka sterującego.

/*******ODBIORNIK TURNIGY********************
//Wyłączony- 1985
//Pozycja środek- 1485
//Pozycja 2- 978
********************************************/

/*************PROGRAMOWANIE******************
ATtiny13A leg 1 (reset) -> Arduino 10
ATtiny13A leg 5 (PB0 MOSI)-> Arduino 11
ATtiny13A leg 6 (PB1 MISO) -> Arduino 12
ATtiny13A leg 7 (PB2 SCK) -> Arduino 13
ATtiny13A leg 8 -> 5v
ATtiny13A leg 4 -> Ground (GND)
********************************************/

//PB_2 -> ADC_1 noga 7
//PB_1 -> noga 6, tranzystor 1
//PB_0 -> noga 5, tranzystor 2

unsigned long liczba;
//int signal = 0;

void setup()
{
  pinMode(2 , INPUT);        //Wejscie sygnalu
  pinMode(1 , OUTPUT);       // wyjscie na tranzystor 1
  pinMode(0 , OUTPUT);       // wyjscie na tranzystor 2
}

void loop()
{
  
 liczba = pulseIn(2 , HIGH, 25000);
 
 if (liczba > 1100)
  {
     if (liczba > 1700)
      {
       digitalWrite(1 , HIGH);
       digitalWrite(0 , LOW);
      }
     else
      {
       digitalWrite(1 , LOW);
       digitalWrite(0 , HIGH);
      }
  }
 else
 {
  digitalWrite(1 , LOW);
  digitalWrite(0 , LOW);
 }
} 

 

ustawienia.jpg

Udostępnij ten post


Link to post
Share on other sites

Co ma błędny pomiar czasu przez ATtiny wspólnego z programowaniem przez jakiś konkretny programator?

14 godzin temu, qbas0600 napisał:

kwarc ustawiony na 1,2MHz

Wewnętrzny oscylator to nie kwarc i będzie pływać...

A pisanie na priv próśb typu "a zajrzyj do takiego tematu" jest nieco nie na miejscu.

Udostępnij ten post


Link to post
Share on other sites
16 minut temu, ethanak napisał:

Co ma błędny pomiar czasu przez ATtiny wspólnego z programowaniem przez jakiś konkretny programator?

A no to ma, że po przeglądnięciu internetów zauważyłem częstą powtarzalność problemu przy tym rodzaju programowania.

19 minut temu, ethanak napisał:

Wewnętrzny oscylator to nie kwarc i będzie pływać...

Fakt przejęzyczenie a co do pływania to błąd rośnie liniowo nie pływa.

21 minut temu, ethanak napisał:

A pisanie na priv próśb typu "a zajrzyj do takiego tematu" jest nieco nie na miejscu.

Przepraszam że uraziłem wielmożnego Pana. Uznałem że moja prośba o pomoc nie była zbyt śmiała. Jeśli jednak popełniłem błąd i było to nie na miejscu proszę o wybaczenie. Jednak wystarczyło, że tak kolokwialnie powiem olać sprawę i było by po problemie bo i tak post łaskawie napisany kompletnie nic nie wniósł merytorycznie do tematu. Mimo wszystko jeszcze raz proszę o przebaczenie.

Udostępnij ten post


Link to post
Share on other sites

Słuchaj, gościu:

Po pierwsze nie czytaj bajek na Internecie, rodzaj programatora nie ma wpływu na poprawność działania programu.

Po drugie błąd wcale nie rośnie liniowo, chyba że nie umiesz liczyć albo nie rozumiesz słowa "liniowo". W obu przypadkach wynosi ok. 11%.

Po trzecie takie przejęzyczenie jak napisanie "kwarc" zamiast "wewnętrzny oscylator" to to samo jakby powiedzieć żonie przy obiedzie "zmarnowałaś mi dziesięć lat życia ty szmato" zamiast "podaj mi sól kochanie". A wewnętrzny oscylator ma prawo mieć swoje zdanie na temat częstotliwości i robienie pomiarów czasu przy jego zastosowaniu to - mówiąc szczerze - niespecjalnie dobry pomysł.

Po czwarte pisanie tego typu ponagleń na priv jest sprzeczne z regulaminem forum, chamskie i niestety wymagało zgłoszenia.

Udostępnij ten post


Link to post
Share on other sites

@ethanak nie pozostało mi nic jak jeszcze raz ogromnie przeprosić za moje niestosowne zachowanie jednak dalej nie widzę w tym nic chamskiego. Nie sądziłem, że kogoś to może urazić w dodatku tak bardzo. A co regulaminu to faktycznie zapomniałem, że jest tam taki zapis. Niech pierwszy rzuci kamień ten co nigdy żadnego przepisu nie złamał. 

Odnośnie tego pierwszego to jak osoba bez odpowiedniej wiedzy ma odróżnić co jest bajką a co nie. Dlatego powstał ten temat. Czas rozwiać wątpliwości i bajki zastąpić faktami

Co do drugiego to czy tak bardzo ważne jest doszukiwanie się takich błędów? Rozumiem że tu wszystko działa "zerojedynkowo" i musi się zgadzać. Błąd rośnie równo, proporcionalnie do odczytanej wartości czy wartośc błedu nie tworzy linii?

Co do trzeciego to rozumiem swój błąd. Prawda jest taka, że nie pierwszy i nie ostatni w moim życiu. Muszę z tym jakoś żyć. Co do wykorzystania wewnętrznego oscylatora to rozumiem marność tego pomysłu. Coś trzeba będzie wykombinować aby dostroić jedno z drugim nie robiąc zbyt wielu zmian.

Swoją drogą ciekawy jest fakt, że kolega uważa drobne przewinienie za chamskie i nie na miejscu a podaje jako przykład czarny humor przez wielu uważany za chamski i nie na miejscu 😄

4 godziny temu, ethanak napisał:

 to to samo jakby powiedzieć żonie przy obiedzie "zmarnowałaś mi dziesięć lat życia ty szmato" zamiast "podaj mi sól kochanie".

 

Udostępnij ten post


Link to post
Share on other sites

Myślę, że temat jest z grubsza wyczerpany. Prewencyjnie zamykam 🙂 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
Gość
Ten temat został zamknięty.

×
×
  • Utwórz nowe...