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

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

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

Сообщение 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 ??
Аватара пользователя
Redrik Shuhart
Друг Кота
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

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

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

Сообщение ARV »

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

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

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

Сообщение 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 в документации к компилятору или в книге по си (например от создателей С - Кернигана и Ричи)
Аватара пользователя
Twen
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Чт апр 09, 2009 00:25:26

Сообщение Twen »

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

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

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

Сообщение Twen »

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

Сообщение Twen »

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

Сообщение ARV »

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

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

Сообщение Twen »

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

Сообщение Twen »

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

Сообщение Twen »

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

Сообщение Twen »

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

Сообщение kalobyte »

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

Сообщение Danko »

Twen писал(а):А где можно скачать документацию на Code Visio ?

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

Сообщение smac »

ARV писал(а):судя по всему там должно быть temp%10, но нолик куда-то потерялся :)

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

Сообщение Synergetik »

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

Эту задачу спецификатор %u выполняет самостоятельно без лишних отбрасываний.
izmmisha
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Redrik Shuhart писал(а):я тож хочу спросить КАК ЗАПУСТИТЬ ПРЕРЫВАНИЯ НА PA0 ?

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

Сообщение ARV »

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

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

Сообщение izmmisha »

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


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

sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); 

Если тут temp не целое, то %i выведет совершенно не то что хотелось.
Я конечно не знаю какой у вас компилятор, но GCC просто выдает предупреждение, что тип не соответствует, возможно другой какой-нибудь компилятор может сделать приведение типа, но это работа программиста.
Закрыто

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