|
Атмел коддвизион вывод на жк экран, Вывод переменных типа floаt |
|
|
|
Oct 5 2009, 06:55
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Andrew_k5 @ Oct 4 2009, 13:58)  Спасибо, получилось. Включил в codevision. Также пришлось подключить mаth.h что съело 15 кб кода. Нет, это не mаth.h съело 15 кб кода, т.к. это всего-лишь заголовочный файл. А съели прилинкованные функции, необходимые для printf("%f",....). Если хотите уменьшить размер кода, используйте предложенные мной ранее функции (dtostrf или ftoa).
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 12 2009, 13:43
|
Группа: Участник
Сообщений: 12
Регистрация: 6-07-09
Пользователь №: 50 949

|
demiurg_spb Вы писали: Если хотите уменьшить размер кода, используйте предложенные мной ранее функции (dtostrf или ftoa).
А немогли бы обьяснить поподробнее как их использовать?
Я в программе вольтметра , для форматирования вывода на LCD использую sprintf , так тоже хотелось бы сократить размер кода. Пробовал itoa но ничего не вышло. Спасибо.
|
|
|
|
|
Dec 12 2009, 20:25
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-05-07
Из: Болгария
Пользователь №: 27 577

|
Цитата(KCA @ Dec 12 2009, 15:43)  А немогли бы обьяснить поподробнее как их использовать? Здесь оптимизированая Ftoa, с примерами изпользования.
|
|
|
|
|
Dec 12 2009, 20:30
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(KCA @ Dec 12 2009, 16:43)  А немогли бы обьяснить поподробнее как их использовать? Цитирую сам себя с небольшими правками: Вероятно включена поддержка типа float для printf,sprintf... функций. Найдите как её отключить. Тогда не будет линковаться ничего лишнего. Я ответил на вопрос? Если нет, то сформулируйте Ваш вопрос конкретнее (чего хотите, что делали, какие результаты).
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 13 2009, 09:22
|
Группа: Участник
Сообщений: 12
Регистрация: 6-07-09
Пользователь №: 50 949

|
-JonnS- demiurg_spbСпасибо что не прошли мимо! Я только только начинаю осваивать программирование микроконтроллеров. Выбрал Мега 16, КОДЕВИЖН. Вольтметр я писал не сам, а с помощью Евгения ( http://eugenemcu.ru/ ), да собственно почти весь код написал он! Злоупотреблять его терпением нехотелось бы, поэтому обратился сюда. Для преобразования результата измерения и отображения на индикаторе ( WH1602 (HD44780)) я выбрал функцию sprintf, как наиболее универсальную и мощную, а так же потому что нашел в инете статью с подробным описанием ее применения (см. вложение). Вольтметр работает. Размер кода получился 15,5% от памяти программ. Но! На разных форумах встречаются высказывания отом что размер кода можно существенно сократить если применить itoa, вот только толкового обьяснения я не смог найти. Во вложении есть фрагмент статьи по применению sprintf и картинка настроек моего компилятора. Вот, примерно такое же, обьяснение, вкратце конечно, я и хотел бы увидеть. Если это не очень сложно, то пожалуйста подскажите как сделать преобразование результата измерения (оно в ADCW) из двоичного в десятичное с помощью itoa. И еще. Огромная проблема с английским языком!!! Поэтому пожалуйста не отсылайте на англоязычные публикации. Начинать изучать язык, для меня уже несколько позновато. Заранее Спасибо.
Сообщение отредактировал KCA - Dec 13 2009, 09:47
|
|
|
|
|
Dec 13 2009, 16:20
|
Группа: Участник
Сообщений: 12
Регистрация: 6-07-09
Пользователь №: 50 949

|
demiurg_spbА Вы думаете что я все это не читал!? Читал, изучал, однако ничего не получалось. Может в настройках компилятора что то не так? Я ж не просто так картинку вложил, гляньте в нее, может я там чего то не отметил или наоборот отметил не то что нужно? А что до этого - так или иначе, изучайте хотябы технический английский так я стараюсь. Но в 53, да и после 22,8 лет в шахте тупееш оч. сильно. Увы!
|
|
|
|
|
Dec 13 2009, 18:52
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Согласно документации cvavr, функция itoa преобразует число в строку, и определена так: Код void itoa(int n, char *str) Показывайте код, посмотрим как вы пытались её использовать. Укажем ошибки, если есть.
|
|
|
|
|
Dec 14 2009, 08:48
|
Группа: Участник
Сообщений: 12
Регистрация: 6-07-09
Пользователь №: 50 949

|
Здравствуйте! Вот кусочек кода (чтобы не загромождать) CODE #include <mega16.h> #include <lcd.h> #include <stdio.h> #include <stdlib.h> . . . unsigned char lcd_buffer[33]; // Буфер LCD-дисплея unsigned int AdcCode; // Для хранения и обработки результата измерения.
void main(void) { . . . while (1) { . . . AdcCode=(AdcCode)*(5.0/1024); AdcCode=(AdcCode>>2); // Убрать два младших разряда из результата.
lcd_clear(); // Очистить экран. lcd_gotoxy(0,0); itoa(AdcCode,lcd_buffer,10); lcd_puts(lcd_buffer); } }
Компилятор указывает на ошибку в строке itoa(AdcCode,lcd_buffer,10);Error: VOLT,1a1.c(80): too many arguments in function call Ошибка: VOLT, 1a1.c (80): слишком много аргументов в вызове функции
Сообщение отредактировал Omen_13 - Dec 16 2009, 04:02
Причина редактирования: Оформление программы
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|