Operácie

CADRS Cvičenie 10: Rozdiel medzi revíziami

Z SensorWiki

(Časovač T1)
Riadok 1: Riadok 1:
 
[[Obrázok:MexleBanner.png|center]]
 
[[Obrázok:MexleBanner.png|center]]
  
== 16-bitové počítadlo a časovač T1 s prerušením ==
+
== Generovanie PWM pomocou 16-bitového počítadla a časovača T1 ==
  
 
Literatúra:
 
Literatúra:
Riadok 14: Riadok 14:
  
 
Máte k dispozícii vývojovú dosku '''MiniMEXLE''' ([http://virtuallab.kar.elf.stuba.sk/robowiki/index.php?title=Mexle popis],[[Médiá:MiniMexleSchematic.jpg|schéma zapojenia]]) a s procesorom ATmega88 ([http://ap.urpi.fei.stuba.sk/mmp/ATmega88.pdf datasheet]) a prípadne aj testovací program [[Médiá:MexleTest2.hex|mexletest2.hex]].
 
Máte k dispozícii vývojovú dosku '''MiniMEXLE''' ([http://virtuallab.kar.elf.stuba.sk/robowiki/index.php?title=Mexle popis],[[Médiá:MiniMexleSchematic.jpg|schéma zapojenia]]) a s procesorom ATmega88 ([http://ap.urpi.fei.stuba.sk/mmp/ATmega88.pdf datasheet]) a prípadne aj testovací program [[Médiá:MexleTest2.hex|mexletest2.hex]].
 
  
 
V tejto úlohe sa predpokladá znalosť funkcie časovača T1 z prednášky (datasheet, str. 87 -- 115).  
 
V tejto úlohe sa predpokladá znalosť funkcie časovača T1 z prednášky (datasheet, str. 87 -- 115).  
 
Procesor je nakonfigurovaný na prácu s externým kryštálovým oscilátorom 18,432 MHz (fuses).
 
Procesor je nakonfigurovaný na prácu s externým kryštálovým oscilátorom 18,432 MHz (fuses).
Demonštračný program je tuto: [[Médiá:MexleTest9.hex|mexletest9.hex]]
+
Demonštračný program je tuto: [[Médiá:MexleTest2.hex|mexletest2.hex]]
  
 
=== Časovač T1 ===
 
=== Časovač T1 ===
Riadok 30: Riadok 29:
 
# Vyskúšajte na svojej doske.
 
# Vyskúšajte na svojej doske.
  
=== Prerušenia v AVR-GCC ===
+
=== T1: režim PWM ===
 +
 
 +
V režime PWM (Pulse Width Modulation) môžeme použiť T1 ako 8,9 alebo  10-bitový,
 +
voľnobežný PWM generátor. Timer/Counter 1 funguje ako počítadlo, ktoré ráta najprv
 +
smerom nahor od 0x0000 až po vybraný TOP (8bit -> 0x00FF, 9bit -> 0x01FF, 10bit -> 0x03FF),
 +
tam sa otočí a počíta zasa smerom nadol až po 0x0000 a toto sa opakuje stále dokola.
 +
 
 +
Keď sa hodnota počítadla zhoduje s obsahom porovnávacívch registrov (OCR1A, OCR1B), zmení sa
 +
aj hodnota na výstupných pinoch OCA1 a OCB1 nasledovne:
 +
 
 +
COM1X1 COM1X0  Čo urobí s OCX1
 +
  0      0        nič
 +
  0      1        nič
 +
  1      0      smerom nahor: 0 pri zhode
 +
                smerom nadol: 1 pri zhode
 +
  1      1      smerom nahor: 1 pri zhode
 +
                smerom nadol: 0 pri zhode
 +
 
  
PWM mode:
 
When the PWM (PulseWidthModulation) mode is selected the Timer/Counter 1 can
 
be used as an 8,9 or 10bit, free running PWM. Timer/Counter 1 acts as an
 
up/down counter that is counting up from 0x0000 to the selected top (8bit ->
 
0x00FF, 9bit -> 0x01FF, 10bit -> 0x03FF), where it turns and counts down to
 
0x0000 and repeats this cycle endlessly. When the counter value matches the
 
content of the compare register (OCR1A, OCR1B) it has an effect on the output
 
pins OCA1 and OCB1 as follows:
 
COM1X1 COM1X0 Effect on OCX1
 
0 0 no
 
0 1 no
 
1 0 cleared on compare match, up-counting,
 
set on compare match, down-counting
 
1 1 cleared on compare match, down-counting,
 
set on compare match, up-counting
 
 
These bits are set in the register TCCR1A:
 
These bits are set in the register TCCR1A:
 
(COM1A1 -> bit7, COM1A0 -> bit6, COM1B1 -> bit5, COM1B0 -> bit4)
 
(COM1A1 -> bit7, COM1A0 -> bit6, COM1B1 -> bit5, COM1B0 -> bit4)

Verzia zo dňa a času 11:10, 24. november 2008

MexleBanner.png

Generovanie PWM pomocou 16-bitového počítadla a časovača T1

Literatúra:


Rekapitulácia

Máte k dispozícii vývojovú dosku MiniMEXLE (popis,schéma zapojenia) a s procesorom ATmega88 (datasheet) a prípadne aj testovací program mexletest2.hex.

V tejto úlohe sa predpokladá znalosť funkcie časovača T1 z prednášky (datasheet, str. 87 -- 115). Procesor je nakonfigurovaný na prácu s externým kryštálovým oscilátorom 18,432 MHz (fuses). Demonštračný program je tuto: mexletest2.hex

Časovač T1

Pozri AVR ExampleT1generatorPWM.c


Úlohy

  1. Program doplňte podľa pokynov asistenta a odsimulujte.
    Pozn.: Treba vypnúť optimalizáciu! (Project/Project options Pozri obr.)
  2. Doplňte chýbajúce časti programu tak, aby LED blikala s frekvenciou 1 s.
  3. Vyskúšajte na svojej doske.

T1: režim PWM

V režime PWM (Pulse Width Modulation) môžeme použiť T1 ako 8,9 alebo 10-bitový, voľnobežný PWM generátor. Timer/Counter 1 funguje ako počítadlo, ktoré ráta najprv smerom nahor od 0x0000 až po vybraný TOP (8bit -> 0x00FF, 9bit -> 0x01FF, 10bit -> 0x03FF), tam sa otočí a počíta zasa smerom nadol až po 0x0000 a toto sa opakuje stále dokola.

Keď sa hodnota počítadla zhoduje s obsahom porovnávacívch registrov (OCR1A, OCR1B), zmení sa aj hodnota na výstupných pinoch OCA1 a OCB1 nasledovne:

COM1X1 COM1X0   Čo urobí s OCX1
  0      0        nič
  0      1        nič
  1      0      smerom nahor: 0 pri zhode
                smerom nadol: 1 pri zhode
  1      1      smerom nahor: 1 pri zhode
                smerom nadol: 0 pri zhode


These bits are set in the register TCCR1A: (COM1A1 -> bit7, COM1A0 -> bit6, COM1B1 -> bit5, COM1B0 -> bit4) The right PWM mode is selected bits PWM10 (bit0 of TCCR1A) and PWM11 (bit1 of TCCR1A) as follows: PWM11 PWM10 Description 0 0 PWM mode disabled 0 1 8bit PWM 1 0 9bit PWM 1 1 10bit PWM Example:


Úloha

  1. Doplňte program o vyhodnocovanie pretečenia časovača v prerušení.
    Pozri AVR ExampleT1int.c


Návrat na zoznam cvičení...