logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Porty w rytm muzyki, sterowanie diodami

Tomu$L 03 Cze 2009 08:52 1596 4
REKLAMA
  • #1 6609706
    Tomu$L
    Poziom 11  
    Witam

    Natknąłem sie na dość istotny problem. Potrzebuję sterować 2 portami w rytm muzyki. Powiedzmy że do PORTA i PORTB mam podpięte diody i chce żeby one mi mrugały w rytmie muzyki. Chciałbym to zrobić na Atmega32 ale niestety na zajęciach nie robiliśmy nic z przetwornikiem A/C w tym procesorze.

    Chętnych proszę o pomoc :)
  • REKLAMA
  • #2 6609850
    Zaquadnik
    Poziom 27  
    Najlepiej podłącz mikrofon z analogowym filtrem dolnoprzepustowym, żeby wyłapywał perkusję (tzw. stopkę, najniższe brzmienie - nie wiem jak się to fachowo nazywa) i wtedy próbkuj ADC i wyłapuj skoki amplitudy.
    Tu masz kod obsługi ADC w ATmega16 (ATmega32 ma tak samo):
    
    #include <avr\io.h>
    #include <avr\signal.h>
    
    void ADC_init(unsigned char mux, unsigned char sra)
    {
    	ADMUX = mux;
    	ADCSRA = sra;
    }
    
    //--------------------
    
    void ADC_start_conv()
    {
    	ADCSRA |= (1<<ADSC);
    }
    
    //--------------------
    
    void ADC_free_run_on()
    {
    	SFIOR &= ~(1<<ADTS2 | 1<<ADTS1 | 1<<ADTS0);
    	ADCSRA |= (1<<ADATE);
    }
    
    //---------------------
    
    void ADC_free_run_off()
    {
    	ADCSRA &= ~(1<<ADATE);
    }
    
    //---------------------
    
    void ADC_interrupt_enable()
    {
    	ADCSRA |= (1<<ADIE);
    }
    
    //---------------------
    
    void ADC_interrupt_disable()
    {
    	ADCSRA &= ~(1<<ADIE);
    }
    
    //---------------------
    
    void ADC_input_select(unsigned char admux)
    {
    		ADMUX &= 0xE0;
    		ADMUX |= (admux & 0x1F);
    }
    


    A więcej informacji znajdziesz w nocie katalogowej ATmega32, rozdział "Analog To Digital Converter".
  • REKLAMA
  • #3 6610256
    Tomu$L
    Poziom 11  
    Da sie to zrobić w asemblerze??
  • REKLAMA
  • #4 6610304
    Zaquadnik
    Poziom 27  
    Jasne. Ale po co ? :> Generalnie całość polega odpowiednim ustawieniu bitów w rejestrach ADC i obsłużeniu przerwań. Poczytaj dokumentację, wtedy nie będziesz pytał o tak elementarne rzeczy. Zwłaszcza, że w dokumentacji są krótkie przykłady zarówno w C jak i w asemblerze.
  • #5 6681747
    Tomu$L
    Poziom 11  
    Mam jeszcze zasadnicze pytanie ;p
    Czy tak zrobiona płytka pozwoli na obsługę przetwornika??

    Porty w rytm muzyki, sterowanie diodami
REKLAMA