Operácie

Akordy s procesorom AVR: Rozdiel medzi revíziami

Z SensorWiki

(Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2024 - '''Meno Priezvisko''' == Zadanie == Sem príde text zadania, ak bolo len voľne formulované, rozpíšte ho podrobnejši…“)
 
(15 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
Záverečný projekt predmetu MIPS / LS2024 - '''Meno Priezvisko'''
+
Záverečný projekt predmetu MIPS / LS2024 - '''Kristián Pauliny'''
  
  
 
== Zadanie ==
 
== Zadanie ==
  
Sem príde text zadania, ak bolo len voľne formulované, rozpíšte ho podrobnejšie
+
Naprogramujte nejakú pesničku aj s akordmi (využite skutočnosť, že procesor má až tri nezávislé časovače).
  
 
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]
 
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]
Riadok 18: Riadok 18:
  
 
Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...
 
Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...
 +
 +
Zapojenie, vypracovanie je inšpirované cvičením 5 – Generovanie tónov, kde sme dostali funkčný program, v ktorom stačilo len “naprogramovať melódiu“.
 +
 +
Hranie tónov cez AVR je založené na vstavaných perifériách – počítadlá v stave CTC (Clear Timer on Compare Match). Budem používať všetky 3 nezávislé počítadlá (T0, T1, T2) – konkrétne ich výstupy OC0A, OC1A, OC2A (Output Compare Register) na riadenie výšky tónov. Nastavenie počítadiel vysvetlím konkrétne ako pre počítadle T0 – po pochopení jedného sa proces dá zopakovať aj pri ostatných.
 +
 +
Počítadlo T0 je 8-bitové. Cez registre TCCR0A a TCCR0B (Timer/Counter control register) možno nastaviť jeho preddeličku, PWM mód a hlavne režim generovania priebehu. Do TCCR0A a TCCR0B ide číslo ktorým nastavujeme počítadlo (8-miestny kód v binárnej sústave alebo to isté číslo prepočítané do inej sústavy). Viem, že potrebujem pre počítadlo nastaviť:
 +
 +
- Toggle OC0A on compare match – oživiť register OC0A
 +
- Normal port operation, OC0B disconnected – register OC0B nechať vypnutý
 +
- CTC – režim počítadla Clear Timer on Compare Match
 +
- Preddelička 256 – ako “rýchlo“ má počítať
 +
 +
 +
V tabuľkách DataSheetu dohľadám ako treba nastaviť podregistre COM0A1, COM0A0, COM0B1, COM0B0, WGM02, WGM01, WGM00, CS02, CS01, CS00 a zadám ich dokopy do registrov TCCR0A a TCCR0B podľa rozloženia: (obrázok)
 +
 +
[[Obrázok:TCCR0_registre_na_nastavenie_pocitadla_T0.jpg|700px|center|Forma rozpoloženia podregistrov v registroch TCCR0A a TCCR0B.]]
 +
  
 
[[Súbor:ledRGB.jpg|400px|thumb|center|RGB LED.]]
 
[[Súbor:ledRGB.jpg|400px|thumb|center|RGB LED.]]
 +
  
 
Nezabudnite doplniť schému zapojenia!
 
Nezabudnite doplniť schému zapojenia!

Verzia zo dňa a času 15:34, 5. máj 2024

Záverečný projekt predmetu MIPS / LS2024 - Kristián Pauliny


Zadanie

Naprogramujte nejakú pesničku aj s akordmi (využite skutočnosť, že procesor má až tri nezávislé časovače).

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...

Zapojenie, vypracovanie je inšpirované cvičením 5 – Generovanie tónov, kde sme dostali funkčný program, v ktorom stačilo len “naprogramovať melódiu“.

Hranie tónov cez AVR je založené na vstavaných perifériách – počítadlá v stave CTC (Clear Timer on Compare Match). Budem používať všetky 3 nezávislé počítadlá (T0, T1, T2) – konkrétne ich výstupy OC0A, OC1A, OC2A (Output Compare Register) na riadenie výšky tónov. Nastavenie počítadiel vysvetlím konkrétne ako pre počítadle T0 – po pochopení jedného sa proces dá zopakovať aj pri ostatných.

Počítadlo T0 je 8-bitové. Cez registre TCCR0A a TCCR0B (Timer/Counter control register) možno nastaviť jeho preddeličku, PWM mód a hlavne režim generovania priebehu. Do TCCR0A a TCCR0B ide číslo ktorým nastavujeme počítadlo (8-miestny kód v binárnej sústave alebo to isté číslo prepočítané do inej sústavy). Viem, že potrebujem pre počítadlo nastaviť:

- Toggle OC0A on compare match – oživiť register OC0A - Normal port operation, OC0B disconnected – register OC0B nechať vypnutý - CTC – režim počítadla Clear Timer on Compare Match - Preddelička 256 – ako “rýchlo“ má počítať


V tabuľkách DataSheetu dohľadám ako treba nastaviť podregistre COM0A1, COM0A0, COM0B1, COM0B0, WGM02, WGM01, WGM00, CS02, CS01, CS00 a zadám ich dokopy do registrov TCCR0A a TCCR0B podľa rozloženia: (obrázok)

Forma rozpoloženia podregistrov v registroch TCCR0A a TCCR0B.


RGB LED.


Nezabudnite doplniť schému zapojenia!

Schéma zapojenia LCD displeja.


Algoritmus a program

Algoritmus programu je....


#include <avr/io.h>

int main(void)
{
  unsigned int measuredValue;

  while (1)
  {
    /*  relax  */  
  }

  return(0);
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip


Overenie

Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.

Aplikácia.

Video:

Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.