- analogRead(Parametr) - Co ten parametr znamená ? Pin procesoru ? Kanál AD převodníku ?
- analogWrite(Parametr1, Hodnota) - Stejná otázka jako 1)
- pinMode(Paratmetr1, Hodnota) - Stejná otázka jako 1)
ad 1) analogRead(3)
- Pokud je to na pouzdru pin 3, tak je to na AD převodníku kanál 2, IO pin B4 (brána B, bit 4).
- Pokud je to na AD převodníku kanál 3, tak je to na pouzdru pin 2, IO pin B3 (brána B, bit 3).
ad 2) analogWrite(0, hodnota)
- žádný AVR procesor nemá analogový výstup. Analog se tvoří pomocí PWM. Jenže HW PWM má ATtiny13 jenom 2 - a to OC0A a OC0B - tedy oba jsou 0.
ad 3) pinMode(0, hodnota)
- Co je ten první parametr zač ? Pouzdro nemá pin 0, takže to vypadává ze hry.
Moje rada je :
-
Vezmi si datasheet a postupuj podle datasheetu - nastavení pinů, nastavení periferií, nastavení časovačů atd.
-
Zapomeň na Arduino - to je prostě hroznej paskvil. Použij ho maximálně jako programovací prostředí, pomocí kterého program nejenom přeložíš, ale dostaneš ho i do procesoru. Mnohem lepší by ale bylo použít Atmel Studio. Jednak tam máš i simulátor (s chybama, ale je tam) a výsledný .hex pak pomocí Arduino prostředí nahraješ do procesoru. Používám AVR Studio 4.19 (primárně pro assembler) a Atmel Studio 7 (pro assembler i pro Cčko). Oba mají své výhody i nevýhody, ale osobně jsem si pro Cčko na AS7 celkem rychle zvyknul.
Zkus porovnat následující zápisy :
-
Pin 0 brány B na výstup :
Arduino : pinMode(0, OUTPUT);
Cčko : DDRB |= (1<<PB0);
Assembler : sbi DDRB, PB0 -
Pin 3 brány B na vstup :
Arduino : pinMode(3, INPUT);
Cčko : DDRB &= ~(1<<PB0);
Assembler : cbi DDRB, PB3
Pokud chceš, můžeme tady zkusit dát dohromady Cčkovskou verzi řízení jasu LEDky podle hodnoty z potenciometru. Program bude obsahovat vlastně jenom 4 části :
- Nastavení IO pinů - ta bude nejjednodušší.
- Nastavení timeru pro PWM výstup - pro začátek použijeme HW PWM. Je to trošku jednodušší, než ho generovat softwarově.
- Nastavení AD převodníku pro cyklické čtení hodnoty z pinu.
- Hlavní smyčku, kde budeme hodnotu z AD převodníku přehazovat do PWMka - pro začátek to uděláme v hlavní smyčce, pak bychom to mohli přehodit do přerušení od časovače a v hlavní smyčce se o to nebudeš muset vůbec starat.