• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Usypianie attiny2313
#9
Tak w ogóle to wybrałeś sobie procek dla zapaleńców, dla adeptów jest atmega328 w Arduino. I do tego znajdziesz wszystko w Internecie. Żeby programować takie nietypowe procki trzeba sobie doinstalować definicje płytek zrobione przez innych zapaleńców lub napisać samemu, skompilować bootloder (jeśli potrzebny).
Chcesz poznać dobrze AVR to poznaj dokładnie 1 procek, reszta jest podobna, wg mnie do tego lepiej wybrać 328 niż jego starszych kolegów attiny2313, atmega8, atmega32, itp.
Najprościej byłoby znaleźć jakieś technikum elektroniczne lub funclub przy jakieś podstawówce/gimbazie i im to podarować w prezencie, niech się męczą. I kupić sobie Atmega328 - cena podobna, ale możliwości i ilość bibliotek, które NA PEWNO zadziałają bez porównania większa, bo były już testowane przez tysiące/miliony (nawet jeśli nie są super optymalne) i bije je na głowę.
Jak już masz wgrane definicje attiny2313 (np. przez link: http://drazzy.com/package_drazzy.com_index.json ).
Ja ich nie miałem, bo takie procki prościej jest programować w Eclipse lub Atnel Studio. I tak zastosowanie Arduinowych bibliotek na 2kb flash nie ma sensu.
Wgrałem definicje, wczytałem przykładowy program do usypiania dla attiny13, wywaliło błędy, otworzyłem PDF attiny2313, porównałem nazwy rejestrów, okazało się, że różnią się jedną literką, poprawiłem, skompilowałem. I nie sprawdzę czy działa, bo nie mam takiego procka. Można kupić w cenie porównywalnej z płytką PRO MINI z atmegą 328. Także nie będę sprawdzał.
Akurat w tych definicjach płytki nie ma wyboru czy chcesz mieć bootloader. Po prostu go nie ma. Łatwo to sprawdzić - kompilujesz, na koniec jest komunikat, że szkic zajmuje 94b z dostępnych 2048, to znaczy, że nic nie jest zarezerwowane dla bootloadera. Jak skompilujesz jakiś program dla attiny25 to wyskoczy przykładowo, że program zajmuje 345b z 1536, dla UNO 456 z 32256. Brakujące 512 jest po prostu zarezerwowane dla bootloadera i jest odejmowane w tym komunikacie.
W każdym bądź razie tak wygląda program usypiający procka z wybudzaniem WDT:
Kod:
#include <avr/interrupt.h>
#include <avr/sleep.h>


ISR(WDT_vect) {
  // W przerwaniu pieska zmieniamy stan pinu led
  PORTB ^= 1<<PB2;
}

int main(void) {
  // Ustawienie B2 na wyjcie
   DDRB = 1<<DDB2;

  // Ustawienie czasu spania - preskaler WDT
 // WDTCR |= (1<<WDP3); // (1<<WDP2) | (1<<WDP0); //attiny13
 WDTCSR |= (1<<WDP3); // (1<<WDP2) | (1<<WDP0); //attiny2313

  // Wlaczenie przerwania od WDT
//  WDTCR |= (1<<WDTIE);//attiny13
WDTCSR |= (1<<WDIE); //attiny2313
  sei(); //Globalne wlaczenie przerwan

  // Ustawienie trybu spania
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);

  while(1){
     sleep_mode();   // Idzie spac i czeka na przerwanie
  }
}
Led podłączony do PB2 będzie migać zgodnie z ustawieniem WDT.
Jak wgrasz to sobie sprawdzasz zużycie prądu, oczywiście gdy led nie świeci. Jak za duże to jest parę ogólnych zasad optymalizacji dotyczących ustawienia portów, wyłączenie BOD, analoga, itp. Wszystko z wynikami jest opisane w podanym linku.
Chcesz inny czas usypiania to ustawiasz sobie jakąś zmienną w przerwaniu, a usypianie wrzucasz do jakiś funkcji i zapętlasz to aż zmienna w przerwaniu osiągnie wymaganą wartość, np. dla 5min można ustawić WDT na 4s i powtórzyć cykl 75 razy. A jak nie zależy na dokładności to na 8s i 38 cykli.

Tak wygląda IDE po dodaniu definicji i możliwe do ustawienia opcje fuse (ustawia się je wypalając bootloader):
   
Dla porównania opcja z możliwością wyboru bootloadera dla attiny25.
   
Fuse oczywiście można ustawiać nawet z palca wklepując w linii poleceń do AVRDUDE. Z Atmel Studio oczywiście nic nie ustawisz nie mając programatora z nim współpracującego, nie wiem czy w ogóle jest dzisiaj opcja uruchomić USBASP. Jak ktoś ma dużo czasu to jak go nakręcisz to może wrzuci jakiś swój profesjonalny tutorial lub może nawet kawałek niebiańskiego kodu ze swojej fabryki fantasy gdzie tyrają elfy. Ja w ogóle już nie mam tego IDE, bo aktualny nie działa w win7. Kalkulator MK jest narzędziem ułatwiającym życie, jak i tak już go kupiłeś to niech się zwraca. Jest też darmowy AVR LAB++, świetna alternatywa i można wgrywać przez bootloader arduino.
Kod zajmuje niecałe 100b. Dla attiny25 jest biblioteka do usypiania tinysnore, polecenie takie jak delay(), podajesz snore(5000) i procek śpi 5s. Ale zajmuje od razu 700b.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
Usypianie attiny2313 - przez Moro - 07-09-2018, 21:03
RE: Usypianie attiny2313 - przez kaczakat - 07-09-2018, 21:25
RE: Usypianie attiny2313 - przez Moro - 07-09-2018, 23:15
RE: Usypianie attiny2313 - przez es2 - 07-09-2018, 23:55
RE: Usypianie attiny2313 - przez Moro - 08-09-2018, 00:16
RE: Usypianie attiny2313 - przez es2 - 08-09-2018, 08:06
RE: Usypianie attiny2313 - przez kaczakat - 08-09-2018, 00:40
RE: Usypianie attiny2313 - przez Moro - 08-09-2018, 14:19
RE: Usypianie attiny2313 - przez kaczakat - 08-09-2018, 21:52

Skocz do:


Przeglądający: 1 gości