Przeszukaj forum
Pokazywanie wyników dla tagów 'Arduino as ISP'.
Znaleziono 1 wynik
-
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); } }
- 5 odpowiedzi
-
- Arduino as ISP
- Attiny13
- (i 1 więcej)