This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:digi:sound [2015/02/26 12:46] – raivo.sell | et:examples:digi:sound [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Heligeneraator ====== | ====== Heligeneraator ====== | ||
//Vajalikud teadmised: | //Vajalikud teadmised: | ||
[HW][[et: | [HW][[et: | ||
- | [AVR][[et: | + | [AVR][[et: |
[LIB][[et: | [LIB][[et: | ||
Line 19: | Line 19: | ||
Üldiselt on piesoelektrilised heligeneraatorid võrdluses elektromagnetilistega suurema helirõhu, väiksema voolutarbe ja kõrgema võimaliku helisagedusega. Kõige tugevama heli kõige väiksema voolutugevuse korral saab siis, kui heligeneraator töötab oma resonantssagedusel. Sellisel juhul on membraani amplituud kõige suurem. Elektromagnetiline heligeneraator ehk kõlar omab võrreldes piesoelektrilise heligeneraatoriga oluliselt paremat tonaalsust ja sobib lisaks lihtsate signaalhelide genereerimiseks ka muusika ja kõne edastamiseks. | Üldiselt on piesoelektrilised heligeneraatorid võrdluses elektromagnetilistega suurema helirõhu, väiksema voolutarbe ja kõrgema võimaliku helisagedusega. Kõige tugevama heli kõige väiksema voolutugevuse korral saab siis, kui heligeneraator töötab oma resonantssagedusel. Sellisel juhul on membraani amplituud kõige suurem. Elektromagnetiline heligeneraator ehk kõlar omab võrreldes piesoelektrilise heligeneraatoriga oluliselt paremat tonaalsust ja sobib lisaks lihtsate signaalhelide genereerimiseks ka muusika ja kõne edastamiseks. | ||
- | Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaali. Selleks on kõige mugavam rakendada digitaal-analoog muundurit (inglise keeles // | + | Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaali. Selleks on kõige mugavam rakendada digitaal-analoog muundurit (inglise keeles // |
- | ~~PB~~ | + | < |
===== Praktika ===== | ===== Praktika ===== | ||
Line 28: | Line 28: | ||
<code c> | <code c> | ||
- | // Valitud sageduse ja pikkusega helisignaali genereerimine. | + | // Valitud sageduse ja pikkusega helisignaali genereerimine |
void buzzer_sound (unsigned char freq, unsigned int length) | void buzzer_sound (unsigned char freq, unsigned int length) | ||
{ | { | ||
Line 67: | Line 67: | ||
if( CH1_Output == 1) | if( CH1_Output == 1) | ||
{ | { | ||
- | // Sea väljundpinge | + | // Väljundpinge määramine |
DAC_Channel_Write( &DACB, volume, CH1); | DAC_Channel_Write( &DACB, volume, CH1); | ||
CH1_Output = 0; | CH1_Output = 0; | ||
} | } | ||
+ | |||
else | else | ||
{ | { | ||
- | // Sea väljundpinge 0V | + | // Väljundpinge määramine 0 V |
DAC_Channel_Write( &DACB, 0, CH1); | DAC_Channel_Write( &DACB, 0, CH1); | ||
CH1_Output = 1; | CH1_Output = 1; | ||
Line 80: | Line 81: | ||
// Genereeritakse heli sagedusega freq (8 Hz - 500 kHz) ja pikkusega length (ms) | // Genereeritakse heli sagedusega freq (8 Hz - 500 kHz) ja pikkusega length (ms) | ||
- | // kui length = 0, siis jäädaksega | + | // kui length = 0, siis jäädaksegi |
void buzzer_sound (uint16_t freq, unsigned int length) | void buzzer_sound (uint16_t freq, unsigned int length) | ||
{ | { | ||
// DAC seadistamine | // DAC seadistamine | ||
- | // AVCC Pingereferentsiks | + | // AVCC on pingereferentsiks |
DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc; | DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc; | ||
- | // Kanali | + | // Kanali |
DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc; | DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc; | ||
// Kanal 1 ning DACB mooduli käivitamine | // Kanal 1 ning DACB mooduli käivitamine |