2 ацп в uart

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18649
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: 2 ацп в uart

Сообщение ARV »

Minasmorgul писал(а):куда конкретней уж?!
в терминале должно быть 1023;104 где 1023 - значение первого ацп, 104 - значение второго ацп
хорошо, я вам поясню, как надо было вам ответить, цитирую с точностью до символа то, что я хотел получить от вас:
1023;104
понятно? все остальное, что вы написали - лишнее.

а теперь по сути вашего вопроса:
формат %x вам НЕ ПОДХОДИТ - я удивлялся этому еще ранее, читали? и ранее же рекомендовал ДРУГОЙ формат. Чтобы получить в терминале именно тот текст, что вы хотите, вам надо использовать такую конструкцию

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

printf("%d;%d\r\n", readADC(0), readADC(1));
если этот вариант вам не поможет и вы не увидите "корректных" чисел, смотрите в вашу функцию readADC - проблема будет внутри нее.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: 2 ацп в uart

Сообщение mas123 »

Minasmorgul писал(а):send_Uart_str(printf("%x ; %x \r\n", readADC(0), readADC(1)));
все также тишина на выходе uart
Разумеется, так и должно быть.
С функцией send_Uart_str() я даже удивлен, почему устройство не выпало в исключение...

Ну откуда такая упёртость, что printf() возвращает указатель на строку?!!!
В хеадерах что указано про тип возвращаемого значения?
Minasmorgul писал(а):Вы читать умеете? Это вообще не я писал!
Мдя, тут я лоханулся, извиняюсь.
Реклама
Minasmorgul
Родился
Сообщения: 17
Зарегистрирован: Сб фев 07, 2015 20:21:27

Re: 2 ацп в uart

Сообщение Minasmorgul »

Собственно возвращаюсь к тому с чего начали. Каким образом можно вывести строку в uart вида 1023;1021 где 1023 - значение одного ацп, 1021 - значение второго ацп.
Значение ацп по отдельности могу получать а вот объединить в строку не получается
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: 2 ацп в uart

Сообщение mas123 »

Повторю ещё раз:
- выделить буфер необходимого размера.
- сформировать строку в буфере. Можно использовать sprintf(), можно что-то своё быстрое и шустрое.
- передать содержимое буфера. Можно функцией "передачи строки", можно побайтовой передачей в цикле .

Размер буфера вычисляется исходя из максимально возможного размера "текста" (не забываем про завершающий '/0').
Описание стандартной функции sprintf() есть в документации.
Вывод содержимого строки или цикл - не должны вызвать затруднения. Есть готовая функция, как минимум.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: 2 ацп в uart

Сообщение Mishany »

Minasmorgul, терминал в какой кодировке должен принимать? ASCII? напоминает глобальную проблему с выводом переменной на HD44780
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18649
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: 2 ацп в uart

Сообщение ARV »

Minasmorgul писал(а):Собственно возвращаюсь к тому с чего начали. Каким образом можно вывести строку в uart вида 1023;1021 где 1023 - значение одного ацп, 1021 - значение второго ацп.
Значение ацп по отдельности могу получать а вот объединить в строку не получается
сколько можно?
ARV писал(а):

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

printf("%d;%d\r\n", readADC(0), readADC(1));
если этот вариант вам не поможет и вы не увидите "корректных" чисел, смотрите в вашу функцию readADC - проблема будет внутри нее.
вместо вызова функции readADC можно подставить переменные, хранящие соответствующие значения
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: 2 ацп в uart

Сообщение mas123 »

ARV писал(а):если этот вариант вам не поможет и вы не увидите "корректных" чисел, смотрите в вашу функцию readADC - проблема будет внутри нее.
А разве printf() обязательно выводит данные через UART? Тем более, в данном примере кода.

В исходном коде (с "%X") должен был бы быть вывод строк, хоть и с HEX-значениями.
А передаются лишь "символы FF", в неизвестном количестве (подозреваю, что один символ на "строку").
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18649
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: 2 ацп в uart

Сообщение ARV »

мне показалось, что топикстартер пользуется CVAVR, а там printf выводит в USART с легкостью, если я не ошибаюсь.
но при любом раскладе реализовать соответствующую возможность элементарно и для WinAVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Minasmorgul
Родился
Сообщения: 17
Зарегистрирован: Сб фев 07, 2015 20:21:27

Re: 2 ацп в uart

Сообщение Minasmorgul »

вместо вызова функции readADC можно подставить переменные, хранящие соответствующие значения
А чем не устраивает обыкновенный загон readADC функции в printf ? Теже яйца только в профиль.
ARV писал(а):мне показалось, что топикстартер пользуется CVAVR, а там printf выводит в USART с легкостью, если я не ошибаюсь.
но при любом раскладе реализовать соответствующую возможность элементарно и для WinAVR
вам действительно показалось. пользуюсь atmelstudio 6.1
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: 2 ацп в uart

Сообщение mas123 »

Minasmorgul писал(а):пользуюсь atmelstudio 6.1
В таком случае хотелось бы услышать ответ на поставленный выше вопрос: А разве printf() обязательно выводит данные через UART?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18649
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: 2 ацп в uart

Сообщение ARV »

Если у вас Atmel Studio, то ранее я вам давал ссылку, где рассказано, как направить вывод printf в USART, а еще ранее я приводил пример нужного вам формата для вывода пары чисел, разделенных точкой с запятой. Теперь дело за вами.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: 2 ацп в uart

Сообщение COKPOWEHEU »

Почитайте, наконец, документацию на одну несчастную функцию sprintf. Конечно, она отъедает кучу памяти и скорости, но что-то более изящное ТС пока не потянет. Эта функция формирует строку по аналогии с printf'ом, но выводит ее не на stdout, а в переданный ей буфер. Потом эту строку можно любым способом вывести на UART. Не знаю уже как более понятно объяснить - разве что код написать за ТСа.
Ответить

Вернуться в «AVR»