Добрый день!
есть два микроконтроллера atmega8, микрофон, усилитель, передатчик, приемник (на фото). Подключаю микрофон через усилитель к ацп атмеги, с ацп на передачу через UART к передатчику (тот который на фото). Принимаю на приемник (опять же на тот, что на фото), с приемника на UART атмеги и дальше на ШИМ...
Код передатчика
Код приемника<p>
Подскажите пожалуйста, почему не работает эта связка? в чем ошибка? В теории должно работать? Спасибо большое за любой совет и подсказки... Не пинайте сильно если что...
Раздел: Начинающим
есть два микроконтроллера 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;
}
}
Подскажите пожалуйста, почему не работает эта связка? в чем ошибка? В теории должно работать? Спасибо большое за любой совет и подсказки... Не пинайте сильно если что...
Раздел: Начинающим