Atmega8 Передача Звука

18-06-2014, 13:23 От: admin Посмотрели: 870
Добрый день!

есть два микроконтроллера atmega8, микрофон, усилитель, передатчик, приемник (на фото). Подключаю микрофон через усилитель к ацп атмеги, с ацп на передачу через UART к передатчику (тот который на фото). Принимаю на приемник (опять же на тот, что на фото), с приемника на UART атмеги и дальше на ШИМ...

Код передатчика


#include

#include

#define ADC_VREF_TYPE 0xE0
#define TX PORTC.2
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void USART_transmit(unsigned char data);
{while (!(UCSRA & (1>>5))){
UDR=data;}
void main(void)
{
unsigned char kanal=0x00;
te5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x02;
TCCR1A=0xC3;
TCCR1B=0x11;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;

while (1)
{
read_adc(kanal);
USART_transmit(ADCH);
}

}
}



Код приемника<p>



#include <mega8.h>
#include <stdio.h>
unsigned char USART_receiver(void)
{ while (!(UCSRA & (1<<RXC)));
return UDR;}
void main(void)
{
PORTB=0x00;
DDRB=0x02;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Ph. correct PWM top=OCR1A
// OC1A output: Inverted
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xC3;
TCCR1B=0x11;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

while (1)
{
USART_receiver();
OCR1A=UDR;
}
}



Подскажите пожалуйста, почему не работает эта связка? в чем ошибка? В теории должно работать? Спасибо большое за любой совет и подсказки... Не пинайте сильно если что...

Прикрепленные миниатюры





  • IMG_20140617_165428.jpg





Раздел: Начинающим

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Atmega8 Передача Звука все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031