Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

Походу разобрался сам. Так работает (через преобразование типов):

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

         unsigned int in = 2601;
         float flt =  0.0f;
         flt = static_cast<float>(in)*0.01f;

результат = 26,01

И обратное преобразование:

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

         unsigned int in = 0;
         float flt = 26.02f;
         in = static_cast<int>(flt/0.01f);

результат = 2602
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
techlab
Родился
Сообщения: 17
Зарегистрирован: Сб дек 03, 2011 18:03:34
Откуда: Khark0xFF.UA
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение techlab »

что-то я совсем запутался с указателями, после асма тяжко писать на С, но затягивает...
подскажите, как организовать функцию вывода строки на дисплей имея функцию вывода байта?
Опыт прямо пропорционален количеству аппаратуры выведенной из строя...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

А про стандартные функции ввода/вывода не слышали?Есть scanf()/printf().
Почитайте про них
В поисках истины человек развивается.
Аватара пользователя
techlab
Родился
Сообщения: 17
Зарегистрирован: Сб дек 03, 2011 18:03:34
Откуда: Khark0xFF.UA
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение techlab »

vitalik_1984 писал(а):А про стандартные функции ввода/вывода не слышали?Есть scanf()/printf().
Почитайте про них

каким образом я могу применить их для микроконтроллера?
Опыт прямо пропорционален количеству аппаратуры выведенной из строя...
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Мастер Ломастер »

techlab писал(а):что-то я совсем запутался с указателями, после асма тяжко писать на С, но затягивает...
подскажите, как организовать функцию вывода строки на дисплей имея функцию вывода байта?

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

void put_char(char c); // это функция вывода символа

// а вот это функция, которую вы хотите - вывод строки
void put_str(char *str){
   while(*str) put_char(*str++);
}
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
techlab
Родился
Сообщения: 17
Зарегистрирован: Сб дек 03, 2011 18:03:34
Откуда: Khark0xFF.UA
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение techlab »

спасибо, именно это я и имел ввиду, просто с указателями запутался что-то.
Опыт прямо пропорционален количеству аппаратуры выведенной из строя...
alexey6522
Встал на лапы
Сообщения: 149
Зарегистрирован: Чт июл 28, 2011 18:12:28

Re: Вопросы по С/С++ (СИ)

Сообщение alexey6522 »

Может кто-нибудь помочь с прерываниями на меге128, вот кусок кода для приема информации для этого я использовал вектор USART0_RX_vect

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

ISR(USART0_RX_vect) //USART_RXC_vect, прием для Atmega128
{
   if (cnt == 0)
   {   
    RecendMas[cnt] = UDR0;
   cnt++;
   }
   if (cnt == bytes){ //Если все байты приняты установить cRx в 1
    cRx = 1;    
  }
}

Cуществует еще вектор передачи информации USART0_TX_vect как им пользоваться? Пробовал так, ничего не получилось

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

ISR(USART0_TX_vect)
{
UDR0 = str;
}
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

что такое str в вашем коде?
В поисках истины человек развивается.
alexey6522
Встал на лапы
Сообщения: 149
Зарегистрирован: Чт июл 28, 2011 18:12:28

Re: Вопросы по С/С++ (СИ)

Сообщение alexey6522 »

это просто переменная, содержащая строку. Я уже разобрался почему у меня не получалось, забыл поставить флаг TXCIE - разрешение прерываний при пустоте буфера передачи и установке TXC.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение AI_Disable »

alexey6522 писал(а):переменная, содержащая строку.

O_o Wut?
Babulesnik
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Вт мар 06, 2012 19:59:00

Re: Вопросы по С/С++ (СИ)

Сообщение Babulesnik »

Доброго времени суток.У меня остро возник вопрос.Мне нужно сохранять данные при выключенном питании МК.Это счетчик баланса заброшенных денег.Где лучше хранить,в flash или eeprom ? или есть другой вариант.Если в флеш,то использовать PROGMEM/pgm_read_ для записи/чтения ??? Подскажите пожалуйста как правильно решить даную проблему.

Заранее благодарен,Дмитрий.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

ПЕРЕМЕННАЯ СОДЕРЖАЩАЯ СТРОКУ
вы хотели сказать байт массива содержащего строку?

AI_Disable писал(а):O_o Wut?
Это что за слово может what?
В поисках истины человек развивается.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Вопросы по С/С++ (СИ)

Сообщение Jack_A »

Babulesnik писал(а):Где лучше хранить,в flash или eeprom ? или есть другой вариант.Если в флеш,то использовать PROGMEM/pgm_read_ для записи/чтения ??? Подскажите пожалуйста как правильно решить даную проблему.


Отлично, Сусанин, в болото их ! Какой МК хоть? AVR? PIC или вообще STM ?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

сохранять данные при выключенном питании МК
При выключенном МК данные нельзя никак сохранить - питания нет...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

Аlex писал(а):При выключенном МК данные нельзя никак сохранить
Шутники :)
Я тоже заметил ошибку,но зачем же так подтрунивать то?
Babulesnik писал(а):Мне нужно сохранять данные при выключенном питании МК.Это счетчик баланса заброшенных денег.Где лучше хранить,в flash или eeprom ?

Читаем из даташита:
During periods of low V_CC, the EEPROM data can be corrupted because the supply voltage is
too low
for the CPU and the EEPROM to operate properly.

Отсюда делаем вывод, что детектировать пропажу питания нужно раньше, чем напряжение упадет ниже,чем допустимо для надежной работы EEPROM
Там еще написано про BOD почитайте может найдете нужную информацию.
Babulesnik писал(а):Если в флеш,то использовать PROGMEM/pgm_read_ для записи/чтения ???

Тут есть ремарочка аттрибут PROGMEM действует только на вашем компьютере,но не на контроллере.
Процедур записи интерактивно в PROGMEM в библиотеке я не нашел.Если только сами напишете(теоретически это возможно если контроллер содержит области памяти доступных для записи при чтении.)
задействовав
Read-While-Write Self-Programming mechanism

но опять же я не уверен, что получится это сделать интерактивно, тем более при угасающем питании :dont_know:

Babulesnik писал(а):или есть другой вариант.

1.другой вариант есть просто тупо записывать каждый акт пополнения в EEPROM и все.про CRC не забывая(это же деньги, а не мухи в котлетах)
2.Можно поставить батарейку- тогда точно все запишете и отправите спать контроллер.Зачем нам работать без сети...
3.Можно также подключить к проекту флеш карту и записывать на нее по интерфейсу спи.Примеры есть в интернете.
4.Любая комбинация из выше приведенных/неприведенных примеров.
В поисках истины человек развивается.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

Я тоже заметил ошибку,но зачем же так подтрунивать то?
Какая же это ошибка ? :)
Мне нужно сохранять данные при выключенном питании МК
Чётко и внятно написано.
Может человек, действительно, хочет сохранять данные при выключеном питании МК :)

А вообще, подобные вопросы никак не относятся к Си. Ну никаким боком....
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

Тогда пусть кондер и диод в питании МК использует. Где то я уже выкладывал схему. Может позже выложу, просто не с компа сейчас сижу. Суть была в том, что надо запитать МК через диод и между МК и диодом соединить электролит на минус питания МК. До диода можно подключить линию внешнего прерывания через делитель на резисторах. Внешнее прерывание настроить на реакцию по спаду уровня на нем. В обработчике прерывания выводим все линии I\O в Z-состояние и производим запись в EEPROM. Только необходимо включить фьюзами BOD-схему МК и кондер побольше емкостью. Не очень надежно это решение, но у меня уже как год исправно работает.
:)
I am DX168B and this is my favourite forum on internet!
Babulesnik
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Вт мар 06, 2012 19:59:00

Re: Вопросы по С/С++ (СИ)

Сообщение Babulesnik »

При выключенном МК данные нельзя никак сохранить - питания нет...

Извиняюсь,некорректно выразился.Я имел ввиду,что-бы при отключении питания данные хранились в памяти.При поступлении денег,каждый раз баланс должен сохраняться в память.

Все ответившим спасибо,но я так и не понял где именно хранить(флеш/епром) и как это реализовать програмно.

ЗЫ МК мега8
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

Такие данные лучше хранить во внешних EEPROM. А во встроенной в мк EEPROM лучше хранить настройки девайса.
I am DX168B and this is my favourite forum on internet!
Babulesnik
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Вт мар 06, 2012 19:59:00

Re: Вопросы по С/С++ (СИ)

Сообщение Babulesnik »

DX168B писал(а):Такие данные лучше хранить во внешних EEPROM. А во встроенной в мк EEPROM лучше хранить настройки девайса.

Спасибо.А в флеш памяти можно хранить? Заранее извиняюсь за нубский вопрос.И если хранить в епроме,то можно пример кода С или подсказку,куда копать.По сути мне нужно хранить только одну переменную типа int.
Ответить

Вернуться в «Разные вопросы по МК»