Помогите настроить UART на ATMega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

Доброго времени суток всем!
Есть тут у меня проблемка, потребовалось наладить обмен данными между МК и ПК. Вот состяпал такую програмку, но она не работает. Точнее работает, но как-то не так. для теста вывожу в порт символ с кодом 0x52, а на компе в терминале отображается каша, последовательно выводятся символы + ]. Вот привожу код программы, подскажите пожалуйста, кде я допустил ошибку.
(вначале думал, что мк работает на внутреннем генераторе, потом выставил фьюзами все как надо, от кварца на 4МГц, частотомером мерил)

Не могу понять, почему не работает.


компилятор - CodeVisionAVR

Код: Выделить всё

#include <mega8>

// Standard Input/Output functions
#include <stdio>
#include <delay>
// Declare your global variables here
                   

void uart_putc(char data) {
    while (!(UCSRA & 0x20)); // Wait untill USART data register is empty
    // Transmit data
    UDR = data;
}

void main(void)
{

PORTB=0x00;
DDRB=0x00;


PORTC=0x00;
DDRC=0x00;

   PORTD |= 0x03; // RXD è TXD ïîäòÿãèâàþòñÿ â +U
   DDRD &= ~0x01; // RXD âõîä
   DDRD |= 0x02;  

TCCR0=0x00;
TCNT0=0x00;


TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;


ACSR=0x80;
SFIOR=0x00;

while (1)
      {
      // Place your code here
      uart_putc (0x52);
      delay_ms(200);
      };
}
Опыт не пропьешь!
Реклама
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

И еще вопрос: ввиду отсутствия max 232, соединил мк и com порт просто напрямую. Думаю все же такая хрень происходит из-за несогласованных уровней.
Опыт не пропьешь!
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

в CVAVR есть функция

putchar (0x52); или putchar ('символ');

и наоборот

temp = getchar();
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

sansan88 писал(а):И еще вопрос: ввиду отсутствия max 232, соединил мк и com порт просто напрямую. Думаю все же такая хрень происходит из-за несогласованных уровней.
КАК НАПРЯМУЮ?! На ком-порте уровни от -12 до +12 вольт меняются (иногда от -6 до +6) - такие уровни нельзя подавать на входы МК напрямую! И логическая 1 по СОМ-порту передается уровнем -12В, а логический 0 - +12В.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

sansan88 писал(а):ввиду отсутствия max 232, соединил мк и com порт просто напрямую.
тогда нужен программный UART с инвертированием уровней

или инвертор сделать на транзисторе кт3102 по схеме с общим эмитером и два резистора по 1 ком. один от базы на TXD а другой от коллектора на +5 вольт. сигнал с коллектора подавать на КОМ-порт. Обычно работает.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

Все, проблема решена. Действительно, чет я забыл о согласовании уровней. Спаял схемку на дискретных компонентах и ... заработало! выводит и принимает данные! (Сто лет уже обычным com портом не пользовался, обычно телефоны прошиваю, так ето дело челез Prolific USB2COM, так не о каком согласовании думать не приходится, просто зацепил и все! а тут оказывается вот какие заморочки)

Всем спасибо за участие, тема закрыта.
Опыт не пропьешь!
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

sansan88 писал(а):челез Prolific USB2COM
Ты можешь конкретную модель шнурка назвать ?
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

Понятия не имею какая модель. Был шнурок от сонериков старых, я его еще на T230 покупал. Щас разобрал и сделал из него универсальный програматор для сотовых, а по сути просто виртуальный ком порт с набором кабелей под различные модели (siemens, Samsung, китайские пародии).

Ты на название микрухи используемой посмоти, должно быть PL-2303.
Опыт не пропьешь!
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Да не пишут ни фига почти все.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

Можешь тогда проверить по другому. Поставь дрова для Prolific'a и посмоти, подцепят они преобразователь или нет. Хотя я точно не знаю, но должно сработать.

Да, посмоти пожалуйста здесь, мож че подскажешь http://www.radiokot.ru/forum/viewtopic. ... highlight=
Опыт не пропьешь!
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

sansan88 писал(а):Поставь дрова для Prolific'a и посмоти, подцепят они преобразователь или нет. Хотя я точно не знаю, но должно сработать.
Ну это очевидно. Но шнур то купить в начале придется, а потом бегать менять.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб май 12, 2007 09:04:03

Сообщение sansan88 »

Они по моему щас все на пролификах. так что менять ничего не придется. Для верности бери шнур на соненрики T230, T630, они одинаковые вплане разъема и начинки. ТАм точно стоит такая микруха, только скорость 115 кб/с (у меня больше не работет и не выставляется), маловато однако но для прошивки пойдет, а тебе собственно для чего он нужен?
Опыт не пропьешь!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»