roboforum.ru

Технический форум по робототехнике.

Уарт - передатчик

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Уарт - передатчик

Сообщение к561ЛА7 » 20 янв 2018, 21:33

вот бы сделать такой передатчик... :) Считываешь данные с резисторов и передаешь их на экран компьютера... но я очень давно не брался за програмирование, и все подзабыл ... Короче без вашей помощи никак ) в общем, пацаны, хочется мне сделать этот передатчик и хоть немного почувствовать себя высокоранговым самцом ) но пока немогу понять, как задать массив их 512 переменных, например а, и как потом к нему обащаться чтобы посылать его на уарт... и как обращаться к переменным этого масссива, тоесть как записывать туда данные например в позиции , например а3, а4, а5, а6 этого массива и как считать эти позиции например.. Подскажите, плиз...
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение Aseris » 20 янв 2018, 22:10

Эт типа стеб и потролить?

Код: Выделить всёРазвернуть
 value = arrray[index];
Uart_send(value);


не?

Добавлено спустя 2 минуты 33 секунды:
А вобще нужна конкретика что есть и где и что подключаем

Добавлено спустя 1 минуту 54 секунды:
Не оно? Переносной UART терминал

Добавлено спустя 2 минуты 41 секунду:
AVR. Работа с UART

Дальше гугль в помощь
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Уарт - передатчик

Сообщение к561ЛА7 » 20 янв 2018, 23:33

Да уж какой там стеб...
Есть плата ардуино на АТмега 2560, компилятор Содвижн Авр

тоесть

value = a[512]; // назначаем массив из 512 переменных
Uart_send(value); // и посылаем его на уарт?

а теперь можно допустим с АЦП считывать и писать в а1, а2, а3 ? или array это команда?

я нашел во такую запись
char a[512]; // определяем массив а из 512 переменных (строка)
тогда наверно чтобы послать на уарт нужно будет писать
Uart_send(а);
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение Aseris » 20 янв 2018, 23:49

Uart_send(а[0]);
..
Uart_send(а[511]);

Либо в цикле, либо только нужный индекс. посути работа с масивом на с.

С даным набором не работал, так что прямо код не подскажу, может есьть готовое API дл
я работы с UART. Смотри второй пример, код поидее должен для АВР быть подобный.

Если хотим послать число чтоб прочитать на терминале то нужно его перевести в текст.

Проблем с инициализацией уарта нет? чтото посылается/принимается?
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Уарт - передатчик

Сообщение к561ЛА7 » 21 янв 2018, 00:04

мне нуюно сразу послать все 512 чисел одним пакетом, по протоколу ДМХ 512, это то же что уарт, только перед началом нужно синхроимпульс сформировать.. тоесть послать сразу весь массив.. или строку...
инициализировать пока не пробывал, думаю как обьявить этот массив чтобы можно было в него числа писать , тоесть в определенные места пакета фрейма
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение Aseris » 21 янв 2018, 00:47

C DMX не знаком,
но посылка масива:

Код: Выделить всёРазвернуть
unsigned int index;
char a[512];

/*заполнение масива*/
...
/*Послать синхроимпульс*/
...
/*послать даные*/
for (index=0;index<sizeof(a); index++)
{
Uart_send(а[index]);
}
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Уарт - передатчик

Сообщение к561ЛА7 » 21 янв 2018, 23:26

Спасибо.
но почему то компилятор кодвидн авр пишет "undefinet simbol Uart_send
И я пытаюсь заполнить массив числами, пишу
a1 = 11;
но компилятор пишет что переменная a1 тоже не определена... тоесть ка заполнять конкретные ячейки массива - непонятно... и как читать из конкретных ячеек массива..

о, блин.. написал

a[1] = 11;

и компилятор не ругнулся !!!! Счас попробую )

да, а ты не знаешь как на дисплейчик 1602 выводить числа из массива ? :bad:
пишу

lcd_gotoxy(4,0);
lcd_putsf(a[1]);

и не работает ( пишет параметр 1 не совместим с типом flash (
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение Romikgy » 22 янв 2018, 11:44

lcd_putchar .... или что то аналогичное
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Уарт - передатчик

Сообщение Aseris » 22 янв 2018, 14:23

А може почитать для начала чтото вроде "c для чайников", чтоб єлементарные вещи не спрашивать?
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Уарт - передатчик

Сообщение RootAdmin » 22 янв 2018, 14:42

Я так понял - что нужно
1. Присвоить элементам массива значения.
2. Отправить их в UART?

Написать пример (правда под руками только ардуино IDE).
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Уарт - передатчик

Сообщение к561ЛА7 » 22 янв 2018, 23:53

Aseris писал(а):А може почитать для начала чтото вроде "c для чайников", чтоб єлементарные вещи не спрашивать?


полдня не работало и вдруг заработало )

[code
sprintf(string, "%4d", b3); это выводим переменую
lcd_puts(string);

sprintf(string, "%4d", a[1]); а это элемент массива
lcd_puts(string);]
[/code]

Добавлено спустя 4 минуты 43 секунды:
RootAdmin писал(а):Я так понял - что нужно
1. Присвоить элементам массива значения.
2. Отправить их в UART?

Написать пример (правда под руками только ардуино IDE).


ну да, присвоить и отправить...
похоже что присвоить очень просто..
вот так

a[1] = 2;

а вот на запись
for (index=0;index<sizeof(a); index++)
{
Uart_send(a[index]);
}
компилятор ругается, что андефинит симбол Uart_send (
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение к561ЛА7 » 23 янв 2018, 09:59

вчера все работало..

Код: Выделить всёРазвернуть
    sprintf(string, "%4d", b);
    lcd_puts(string);

    sprintf(string, "%4d", b1);
    lcd_puts(string);   

    sprintf(string, "%4d", b2);
    lcd_puts(string);

    sprintf(string, "%4d", b3);
    lcd_puts(string);

  sprintf(string, "%4d",a[0]);
    lcd_puts(string);


    sprintf(string, "%4d", a[1]);
    lcd_puts(string);


    sprintf(string, "%4d", a[2]);
    lcd_puts(string);

    sprintf(string, "%4d", a[3]);
    lcd_puts(string);





поменял
sprintf(string, "%4d", a[1]);
lcd_puts(string);
на
sprintf(string, "%4d", a[1+1]);
lcd_puts(string);
и перестало выводить вторую строчку... на ЛСД..
вернул обратно - все равно не выводит..
если загнать в первую строчку, тоесть только 4 записи - выводит нормально..

че за "офигеть", может знает кто..

сам дисплейчик работает нормально, если писать в него просто символы...
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: Уарт - передатчик

Сообщение Romikgy » 23 янв 2018, 12:30

что есть string ?
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Уарт - передатчик

Сообщение к561ЛА7 » 23 янв 2018, 23:44

Romikgy писал(а):что есть string ?


функция

void sprintf(char flash, char flash *fmtstr [,arg1, arg2, ...])
она форматирует строку и записывает ее в массив. после этого ее можно вывести на экран.

unsigned char temp = 123;
unsigned char string[20];
sprintf(string, "temp = %05d\n", temp);
lcd_puts(string);


Что означает эта абра-кадабра. Первая строка создает переменную и присваевает ей
значение. Тут все понятно, а вот что делает вторая. Все по порядку. Сначала выводится
запись temp = , затем 00123. Почему выводится 00123. А потому что у нас есть условие
%05d\n которое говорит:

1) % - будем форматировать значения первого аргумента
2) 0 - будем выводить n знаков, пустые забьем нулями
3) 5 - выводим 5 знаков, если число меньше 5 знаков, то заполнить пустышки
нулями. Об этом говорит пункт 2. Число будет выровнено по правому краю.
4) d - выводим число в десятичном формате.
5) \n - Заставит после вывода символа перейти на другую строку.


взято отсюда http://www.avrki.ru/articles/content/lcdsegment/
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4