Программирование AVR на C. Мелкие вопросы

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Здравствуйте, тут у меня возникли некоторые вопрсы и я создал тему, может у кого-то тоже еще возникнут, пускай пишут сюда.

1.Я слышал что не лицензионный Code Visio транслирует код не больше 2КБ. Правда ли это?

2. Хотел спросить по поводу фенкции sprintf.
Есть такое выражение: sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1);
где
char lcd_buffer[33];
int temp;
как бы записываем у lcd_buffer значение Temp, а "t=%i.%u\xdfC" - что за набор, а потом еще temp%1 ??
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Сообщение Redrik Shuhart »

я тож хочу спросить КАК ЗАПУСТИТЬ ПРЕРЫВАНИЯ НА PA0 ?
Мотание тороидов- вышивание по мужски.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Twen, никогда не хотелось вам книжку по Си почитать?
Redrik Shuhart, никогда не хотелось вам даташит почитать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Twen писал(а):Здравствуйте, тут у меня возникли некоторые вопрсы
2. Хотел спросить по поводу фенкции sprintf.
Есть такое выражение: sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1);
где
char lcd_buffer[33];
int temp;
как бы записываем у lcd_buffer значение Temp, а "t=%i.%u\xdfC" - что за набор, а потом еще temp%1 ??
Это значит что мы записываем в lcd_buffer строку символов, состоящую из "t=<целое значение температуры>.<дробное значение температуры><0xDF>С", например если температура 23,6 градусов цельсия, то в буфере будет "t=23.6<знак градус>С". А вообще смотрите описание функции sprintf в документации к компилятору или в книге по си (например от создателей С - Кернигана и Ричи)
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Ну почему же, я читал по С книгу...на С я знаю есть функция printf -
функция вывода, у кавычках пишется строка символов для вывода (" ") , %i- вместо подставляется выводимое число целого типа.
А вот не пойму %u\xdfC и вот это temp%1 зачем?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Сообщение Redrik Shuhart »

Redrik Shuhart, никогда не хотелось вам даташит почитать?
у мя 7 за английский в атестате стоит :Р типо его знаю
Мотание тороидов- вышивание по мужски.
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Я смотрел у файле STDIO.H написано :
void sprintf(char *str, char flash *fmtstr,...);
Но по этому разобраться сложно...нужно полюбе документацию на Code Visio скачать
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

А где можно скачать документацию на Code Visio ?
Последний раз редактировалось Twen Сб сен 26, 2009 21:33:07, всего редактировалось 1 раз.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Twen писал(а):smac: спасибо я понял, а temp%1 зачем?
А где можно скачать документацию на Code Visio ?
судя по всему там должно быть temp%10, но нолик куда-то потерялся :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Да,да я это и имел введу.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Смотрите, если я объявляю
int temp;
а потом вызываю функцию
temp=ds18b20_temperature(&rom_code[0]);
и если датчик настроен на 12 битовый режим , то у temp cохраняется целое значние температуры.Тоесть если датчик показует 12.34 градуса, то у temp будет 12 ?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Наверное нужно
float temp
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

Просто у меня проблема у выводе десятых...
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

int tmp = 1234;
float temp = tmp/100; 12,34
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Twen писал(а):А где можно скачать документацию на Code Visio ?
У гугла попроси найти вот эту фразу "CodeVisionAVR Пособие для начинающих" - если прям таки хочется про CodeVision на русском почитать.
Читаешь по английски ищи вот это "CodeVisionAVR user manual"
Контактная информация:
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

ARV писал(а):судя по всему там должно быть temp%10, но нолик куда-то потерялся :)
Вопрос в том как представлено temp. Если она представлена целым числом равным температура*10, то нужно выводить сначала temp/10, а потом отделенные точкой temp%10, если же она представлена дробным числом, то в примере по-идее все правильно, т. к. приведение к целому при выводе должно отбросить дробную часть, которая возмется при temp%1. По-моему так.
Встал на лапы
Аватара пользователя
Сообщения: 117
Зарегистрирован: Чт фев 28, 2008 23:54:35
Откуда: Воскресенск, МО

Сообщение Synergetik »

smac писал(а):приведение к целому при выводе должно отбросить дробную часть, которая возмется при temp%1. По-моему так.
Эту задачу спецификатор %u выполняет самостоятельно без лишних отбрасываний.
Контактная информация:
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Redrik Shuhart писал(а):я тож хочу спросить КАК ЗАПУСТИТЬ ПРЕРЫВАНИЯ НА PA0 ?
Надо бы знать какой контроллер чтобы ответить на данный вопрос. Для tiny2313 (и тех у которых прерывание PCINT одно) обсуждалось тут
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

smac писал(а):Вопрос в том как представлено temp. Если она представлена целым числом равным температура*10, то нужно выводить сначала temp/10, а потом отделенные точкой temp%10, если же она представлена дробным числом, то в примере по-идее все правильно, т. к. приведение к целому при выводе должно отбросить дробную часть, которая возмется при temp%1. По-моему так.
если temp представлена дробным числом, то вообще непонятно, к чему изврат: можно использовать спецификатор %f и выводить сразу и целую и дробную части.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

smac писал(а):Вопрос в том как представлено temp.
...
если же она представлена дробным числом, то в примере по-идее все правильно, т. к. приведение к целому при выводе должно отбросить дробную часть, которая возмется при temp%1. По-моему так.

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

sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); 
Если тут temp не целое, то %i выведет совершенно не то что хотелось.
Я конечно не знаю какой у вас компилятор, но GCC просто выдает предупреждение, что тип не соответствует, возможно другой какой-нибудь компилятор может сделать приведение типа, но это работа программиста.
Закрыто

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