Перейти к содержанию
    

Нужна помощ с UART ATmega16

Пример срихтован из какого-то старого исходника для avr gcc, так что где-то могут быть опечатки, а может вообще не заработает под CV :biggrin:

 

#include ... // Я хз какие хидеры надо подключать в CV, 

#define F_CPU 16000000UL
#define BAUD 38400 // Скорость COM порта

void uart_init(unsigned short ubrr)
{
    UBRRH = (unsigned char)(ubrr >> 8);
    UBRRL = (unsigned char)ubrr;
    UCSRB = (1 << RXEN)|(1 << TXEN);    
    UCSRC = (1 << URSEL)|(1 << UCSZ1)|(1 << UCSZ0);
}


uart_send(unsigned char b)
{
    while ( !(UCSRA & (1 << UDRE)) );
    UDR = b;
}

unsigned char uart_rcvr(void)
{
    while ( !(UCSRA & (1<<RXC)) );
    return UDR;
}


int main(void)
{
    unsigned char b;

    uart_init(F_CPU/16/BAUD - 1);

    for (;;)
    {
        b = uart_rcvr(); // Блокируемся и ждем символа
        uart_send(b); // Блокируемся и ждем пока символ отправится
    }

    return 0;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

одним словом код странный проще самому изобразить ... напиши плиз как ты реализуеш отправку какогонебуд сообщения по uart, а лучше какуюниебуд инфу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну во первых, о каком сообщении идет речь? RS232 - байт-ориентированный интерфейс. Вы можите послать байт, можите послать последовательность (независимых байтов), можите сами порезат это на пакеты и слать "сообщения". Главное что нужно иметь - это функция посылки/ приема одного байта. У меня это uart_recv/uart_send. Дальше, если хотим послать буфер, то в простейшем случае делаем так:

 

void uart_write(void *vbuffer, size_t size)
{
    register unsigned char *buffer = (unsigned char*)buffer;
    
    while (size--)
    {
        uart_send(*buffer);
        buffer++;
    }
}

int
main (void)
{
    ...
    char message[] = "Hello, world\n";
    
    uart_write(message, sizeof(message)); // message отводится на стадии компиляции, 
                                                             // поэтому sizeof здесь допустимо использовать.
    ... 
}

 

В Си есть такая замечательная функция как printf - незаменимая вещь при отладке. Разберитесь, как ее использовать с вашим компилятором. Заодно, покурите доки на то, что вообще такое RS232 и как он работает. В общем, RTFM...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые тут возник такой момент что я подумал а вдруг avr123 пиздеж и провакация и сделал все в лучших традициях этой статьи

http://www.pcports.ru/articles/avr6.php

и что вы думает все заработало ... но вот суть вопроса . в программе Terminal v1.9b все работает как и обещали а вот в программе LookRS232 & COMVS нефига не работает тоесть не эха не сообщения ... чем это может быть вызвано ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...чем это может быть вызвано ?

Это скорее всего связано с игнорированием Вами официальной документации, а также с поиском готовых решений вместо создания своих! К тому же, пример http://www.pcports.ru/articles/avr6.php сделан по меньшей мере безграмототно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том что я глубоко убежден что многие вещи нельзя преодалеть с прышка а следовательно если действовать по шагова то надо разобратся с железом и проверить его роботоспособность другова варианта кроме как использования чужова кода я не вижу !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...другова варианта кроме как использования чужова кода я не вижу !

Другой вариант - читать даташиты, Application Notes.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том что...

Модератор:

Дело в том, что на форуме принят русский язык общения. Не сочтите за труд придерживаться хоть сколь-нибудь близких к литературному русскому норм правописания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

НАсчет официальной документации .. я буду вам благодарен если поделитесь такой . енглиш знаю только азы поэтому дш на енгле читать затруднительно .

 

Модератор . Я учту ваши замечания .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во-первых, http://atmel.com/dyn/resources/prod_documents/doc2466.pdf

Во-вторых, здес много полезного http://atmel.com/dyn/products/app_notes.asp?family_id=607

В-третьих, я лично не встречал хороших переводов даташитов. Да и не нужно это, доки пишутся простым техническим языком - достаточно элементарных знаний языка и электронного словаря под рукой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...