Wpis z mikrobloga

Od jakiegoś czasu próbuję zaprogramować Attiny13A przez arduino no i nie wszystko działa należycie. Głównie mowa tu o odczycie analogowym. Do fizycznego pinu nr 3 (ADC2) podłączony jest potencjometr. Odczytuję wartość z tego pinu, przeliczam ją i przekazuję do fizycznego pinu nr 6 (PWM1) i otrzymuję tam wartość maksymalną, bez względu na pozycję potencjometru. Próbowałem przekazywać do innych pinów i to samo. Dodam tylko, że odczyt z pinu nr 2 (ADC3) działa poprawnie. PWM sam w sobie także w porządku.
Może jest coś ważnego o czym nie wiem, także fajnie by było gdyby ktoś mnie uświadomił.
#elektronika #arduino #attiny #avr
  • 28
  • Odpowiedz
@stranger13: A jak masz nastawione fusebity w Attiny13A? Przypominam, że wewnętrzny oscylator rc chodzi tam na częstotliwości 4,8MHz, 9,6MHz plus ma dzielnik przez 8 i opcje oscylatora wathdoga gdzieś około 128kHz. Którą wybrałeś? Jak nastawiłeś dzielnik częstotliwości dla ADC?
  • Odpowiedz
@Analityk: szczerze mówiąc nie mam pojęcia. Program wgrywam przez Arduino IDE. Jeśli w tym rzecz, to może powinienem wgrać hexa bezpośrednio przez avrdude z odpowiednimi fusebitami? Zaraz to spróbuję.
  • Odpowiedz
@stranger13: Z arduinoIDE nijak fusebitów nie zmienisz. Musisz z linii poleceń poprosić avrdude (czyli soft, którego też arduinoIDE używa do programowania) by zmienił.
Przykładowo, gdy używasz arduino jako programatora ISP:

avrdude -pattiny13 -carduino -PCOM3 -b19200 -B8 -e -u -U lfuse:w:0xBF:m -U hfuse:w:0xC9:m -U flash:w:testowy.ino.standard.hex:i
(oczywiście fusebity 0xbf i 0xc9 to bzdura jakaś dla twojego przypadku, tak samo jak nr portu COM3 czy nazwa pliku .hex)
  • Odpowiedz
@hrumque: przed chwilką właśnie sobie ogarnąłem avrdude i wgrałem kontrolny program; u mnie to wyglądało tak:
avrdude -c stk500v1 -p t13 -Pcom11 -b19200 -U flash:w:test.hex
a fusebity ustawię później, bo teraz nie mam czasu. Kiedyś to robiłem tylko, że na attiny2313 jak się nie mylę. Dam znać jeśli przetwornik ADC zadziała poprawnie.
P.S. fusebity raz ustawione pozostają niezmienne, dobrze to rozumiem?
  • Odpowiedz
P.S. fusebity raz ustawione pozostają niezmienne, dobrze to rozumiem?

@stranger13: tak
Fusebity są o tyle istotne, że inicjalizacja przetwornika ADC to też ustawienie jego timingów pomiarów - które ustawia się inaczej dla innych zegarów procka. ArduinoIDE jest durne i zakłada że wszystko jest Arduino-zgodnym czymś, chodzącym z zewnętrznym kwarcem 16MHz. O ile dodać programowanie innych procków (jak np attiny) jest łatwo, i można go nakarmić danymi że F_CPU jest ileśtam (dzięki
  • Odpowiedz
@hrumque: pinu reset nie będę w ogóle ruszał. Tak jak wspominałem potrzebne mi są 3 linie - dwie pracujące jako wejście i jedna jako wyjście.
Powoli dociera do mnie, że czas najwyższy przerobić Francuza albo coś w temacie, bo na arduino daleko nie zajadę.
  • Odpowiedz
@ad5242: @stranger13: z całym szacunkiem do MkAvrCalculatora - to jest on tylko i wyłącznie graficzną nakładką na avrdude, i np takie programowanie przez Arduino jako IDE nie działa w nim, bo źle wysyła parametry (usiłuje zaprogramować AVR w Arduino, zamiast AVR docelowy podłączony do Arduino).
Zgłosiłem im to... (w końcu zapłaciłem im za ten program, dostaje aktualizacje, to też zgłaszam jego błędy) i dostałem informację "arduino się nie zajmuje, nie
  • Odpowiedz
@hrumque: Faktycznie nie próbowałem go wykorzystywać do arduino bo zawsze lecę na gołych atmegach w C i wychodzę z założenia, że programowanie atmegi w Arduino IDE to trochę utrudnianie sobie życia z racji ograniczonych funkcji. Pod względem czystej atmegi bez problemu wszystko mi działa jak powinno i jest wygodniejsze niż zwykłe usbasp i goły avrdude.
Zgadzam się jednak, że podejście "arduino się nie zajmuje" jest trochę krzywdzące bo jakby nie patrzeć
  • Odpowiedz
"arduino się nie zajmuje" jest trochę krzywdzące bo jakby nie patrzeć to dalej to samo tylko z ułatwieniami


@ad5242: tylko że tutaj nie chodziło o arduino jako arduinoIDE, tylko o użycie arduino jako programatora ISP, zamiast usbASP czy innych wynalazków programujących. W dodatku w MkAvrCalc jest taka opcja do wybrania w okienku "programator", tyle że nie działa (tak jak powinno, bo programuje AVR wbudowany w Arduino, a nie ten docelowy). A
  • Odpowiedz
@hrumque: W takim wypadku zawsze możesz dopisać ręcznie wymagany parametr co nie zmienia faktu, że dodanie tego do MkAvrCalculatora nie powinno zająć dużo czasu a znacznie ułatwiłoby życie a w końcu do tego miała być ta nakładka na avrdude
  • Odpowiedz