Pull-up rezistor vs GND

  1. analogRead(Parametr) - Co ten parametr znamená ? Pin procesoru ? Kanál AD převodníku ?
  2. analogWrite(Parametr1, Hodnota) - Stejná otázka jako 1)
  3. 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 :

  1. Vezmi si datasheet a postupuj podle datasheetu - nastavení pinů, nastavení periferií, nastavení časovačů atd.

  2. 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 :

  1. Pin 0 brány B na výstup :
    Arduino : pinMode(0, OUTPUT);
    Cčko : DDRB |= (1<<PB0);
    Assembler : sbi DDRB, PB0

  2. 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 :

  1. Nastavení IO pinů - ta bude nejjednodušší.
  2. Nastavení timeru pro PWM výstup - pro začátek použijeme HW PWM. Je to trošku jednodušší, než ho generovat softwarově.
  3. Nastavení AD převodníku pro cyklické čtení hodnoty z pinu.
  4. 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.