Основы программирования на языке Си: практический курс

 
1 2 3 4 5 6 7
+
-
edit
 

HolyBoy

аксакал

Mishka> \n — это n с escape символом. Поскольку ты хочешь не интерпретации, а визабилити, то бэкслэш надо заэскейпить. :F Поэтому и пишут \\.

Я это уже закоммитил. Рома сказал — баг. :P
 
+
-
edit
 

Mishka

модератор
★★★

HolyBoy> Я это уже закоммитил. Рома сказал — баг. :P
Ага. Что считать багом. Форум написан на PHP, PHP написан на С/С++ — догадайся как он работает со строками. :P
 3.0.33.0.3
EE Татарин #15.10.2008 00:54  @Сергей-4030#14.10.2008 22:05
+
-
edit
 

Татарин

координатор
★★★★☆
Non-conformist>> Дело в том, что каких-то прикладных, практических задач я перед собой не ставлю. Мне пока не надо программировать МК, пока я просто хочу худо-бедно изучить нормальный язык, потому как не знаю никакого. Не только не знаю в смысле "плохо знаю", а вообще не имею о языках программирования ровно никакого представления -ни вообще, ни в смысле сравнительной грамматики.
Сергей-4030> В таком случае ваш выбор первого языка мягко говоря неоптимален. Этот язык, во-первых, достаточно устаревший - вы не найдете свежих учебников по нему. Во-вторых, он плох как язык (запутан, провоцирует плоховыявляемые ошибки, плохо читается, не предоставляет удобных инструментов). Я бы посоветовал вам Java и/или .Net. Море материалов, современные среды разработки и т.п. и т.д.
Не путайте человека.

Для ЕГО применений, С - наилучший выбор. Я слабо себе представляю программирование какого-нить ADuC7012 на С#, а вот С для этого - очень подходит. Это именно что очень практический язык для таких применений, равно как C# и/или Ява сейчас на практике доминируют при программировании под веб.
"Запутаности и провокации" С - именно оттого, что С наиболее близок к железу из приличных языков (создавался вообще как надстройка над макроассемблером). И это его свойство очень удобно (и даже в чём-то незаменимо) для программирования МК.
Человеку после Явы потом ещё долго нужно объяснять, что такое указатель, почему память надо выделять и освобождать, как физически представлены данные в памяти, как передаются параметры, что такое аппаратный стек или регистровая переменная. Наконец, в Яве нельзя просто написать asm и погнать в родном для целевой платформы коде, а для программирования МК это стоит всех явских стандартных библиотек, включая ещё не написаные.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.33.0.3
Это сообщение редактировалось 15.10.2008 в 00:59
US Сергей-4030 #15.10.2008 04:45  @Татарин#15.10.2008 00:54
+
-
edit
 

Сергей-4030

исключающий третье
★★
админ. бан
Татарин> Не путайте человека.
Татарин> Для ЕГО применений, С - наилучший выбор. Я слабо себе представляю программирование какого-нить ADuC7012 на С#, а вот С для этого - очень подходит. Это именно что очень практический язык для таких применений, равно как C# и/или Ява сейчас на практике доминируют при программировании под веб.

Человек явно сказал, что прикладных задач перед собой не ставит.
 7.07.0
+
-
edit
 

HolyBoy

аксакал

Mishka> Ага. Что считать багом. Форум написан на PHP, PHP написан на С/С++ — догадайся как он работает со строками. :P

Тег code должен отображать все «как есть», что мы наблюдаем для обычного, нетегованного текста. А не отображает. Значит, для данного контекста — это баг. И даже не спорь! :F

ЗЫ Ох, любишь ты, Мишка, поспорить. :)
 
UA Non-conformist #15.10.2008 09:54  @Сергей-4030#15.10.2008 04:45
+
-
edit
 

Non-conformist

аксакал

Насчет постановки практических задач - Сергей меня немного не так понял. Фразу "практическая задача" в том предложении следует читать как, например, "программирование АТмега_8, балансирующего перевернутым маятником". Конкретная, узкоспециальная задача ПИД-регулирования. Так вот, ТАКИХ задач на сегодняшний день я перед собой не ставлю, это было бы несколько опрометчиво, но тем не менее имею их в виду, в отдаленной перспективе. Т.е. сам язык в конечном итоге нужен именно для МК... А может наоборот, МК нужен для языка как дополнительный стимул к изучению - не знаю, как это объяснить, да и нужно ли. В конце концов, заявлена тема - некая книжка, и я пробую по ней начать изучать предмет. Пусть выбор неоптимален, но он уже сделан. :)
Skype: a_schabanow  

pokos

аксакал

Mishka> Ага. Что считать багом. ...
Согласен с тобой, Мишаня. Это не баг, а фича.
 6.06.0
UA Non-conformist #15.10.2008 13:38  @Татарин#14.10.2008 11:37
+
-
edit
 

Non-conformist

аксакал

Татарин> Через него печатаются специальные символы, такие как \n - перевод строки, \r - возврат строки, \t - табуляция, \" - кавычки (внутри закавыченых строк ты можешь захотеть использовать кавычку как символ, ну вот в этом случае пишешь её через слэш, чтоб компилятор мог понять, что это ещё не конец твоей строки).

А почему тогда знак равенства компилятор понимает именно как картинку, а не как символ присваивания значения? В строке "принтф" он идет безо всяких слэшей... Или там кавычки справа от него мешают компилятору так его истолковать?
Skype: a_schabanow  
RU HolyBoy #15.10.2008 14:10  @Non-conformist#15.10.2008 13:38
+
-
edit
 

HolyBoy

аксакал

Non-conformist> А почему тогда знак равенства компилятор понимает именно как картинку, а не как символ присваивания значения? В строке "принтф" он идет безо всяких слэшей... Или там кавычки справа от него мешают компилятору так его истолковать?

Помнишь, говорили о том, зачем нужны типы данных? Так вот, то, что находится внутри парных двойных кавычек — массив. В частности, символов, т.е. строка. И элементы этого массива обрабатываются именно как обычные символы, а не операторы.
Но существует соглашение, согласно которому, для присваивания символьной переменной спецсимволов типа табуляции, перевода строки и тд (попробуй с клавиатуры эти символы набрать, и чтобы никакой неоднозначности не было на экране) используются спецобозначения \t, \n и тд. Когда компилятор парсит программу, то эти обозначения заменяются на соответствующие коды из ASCII, которые и присваиваются переменной.
 
+
-
edit
 

Mishka

модератор
★★★

Ага, и внутри кавычек пробелы важны, т.к. они рассматриваются как обычные символы, а не разделители.
 3.0.33.0.3
UA Non-conformist #16.10.2008 09:09
+
-
edit
 

Non-conformist

аксакал

Библиотека стандартных функций. Это одна большая, стандартизованная ИСО-АНСИ библиотека, или множество самопальных библиотек, разбросанных по сети? Что в нее входит? Входят ли в нее такие функции, как, например, управление семисегментным индикатором? Или это слишком "прикладной", слишком "железный" уровень для стандартной функции?

***
И еще одно, не совсем в тему... Существуют ли на сегодняшний день простые, недорогие аппаратные средства для связи МК-логгера с компом по USB? Типа воткнул флешку - лампочка загорелась и погасла - можно вынимать, файл записан. ???
Skype: a_schabanow  
US Mishka #16.10.2008 15:21  @Non-conformist#16.10.2008 09:09
+
-
edit
 

Mishka

модератор
★★★

Non-conformist> Библиотека стандартных функций. Это одна большая, стандартизованная ИСО-АНСИ библиотека, или множество самопальных библиотек, разбросанных по сети? Что в нее входит? Входят ли в нее такие функции, как, например, управление семисегментным индикатором? Или это слишком "прикладной", слишком "железный" уровень для стандартной функции?
Non-conformist> ***

Библиотека стандартных ф-й — это, что идёт с компилятором по стандарту. Она довольно большая. Библиотека, с точки зрения программиста, разбита на части. Для тебя это выглядит так, что пишешь разные incude-ы для доступа к описанию набора ф-й, которые тебе нужны. Например,
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <unistd.h>

Non-conformist> И еще одно, не совсем в тему... Существуют ли на сегодняшний день простые, недорогие аппаратные средства для связи МК-логгера с компом по USB? Типа воткнул флешку - лампочка загорелась и погасла - можно вынимать, файл записан. ???

Тут я не совсем копенгаген. Т.е. средства есть, но насчёт дорогих — совсем не знаю.
 3.0.33.0.3
EE Татарин #16.10.2008 16:39  @Non-conformist#16.10.2008 09:09
+
-
edit
 

Татарин

координатор
★★★★☆
Non-conformist> Библиотека стандартных функций. Это одна большая, стандартизованная ИСО-АНСИ библиотека, или множество самопальных библиотек, разбросанных по сети?
Первое. В смысле, библиотек-то много, но "стандартные функции" - это именно функции описаные стандартом.

Non-conformist> Что в нее входит? Входят ли в нее такие функции, как, например, управление семисегментным индикатором? Или это слишком "прикладной", слишком "железный" уровень для стандартной функции?
В поставке компилятора для МК может быть что угодно - что создатели компилятора и МК посчитали важным и "стандартным". :) Но конкретно семисегментный индикатор - вряд ли, ИМХО, я ни разу не видел. Это ж от схемотехники конкретного приложения зависит, да и написать такую функцию труда не составляет.

Non-conformist> И еще одно, не совсем в тему... Существуют ли на сегодняшний день простые, недорогие аппаратные средства для связи МК-логгера с компом по USB? Типа воткнул флешку - лампочка загорелась и погасла - можно вынимать, файл записан. ???
МК с УСБ - существуют. Существуют и библиотеки для того, чтобы МК mass storage device из ссебя изображал. Только будь готов, что за них попросят денежку, а на халяву не дадут.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.33.0.3
UA Non-conformist #16.10.2008 17:23
+
-
edit
 

Non-conformist

аксакал

Массивы. Допустим, что имеется деформационный датчик механической нагрузки, выход которого может принимать значения от 0 до 100 мВ при нагрузке от 0 до 1000 г. Все бы ничего, но не устраивает нас его линейность. Калибруем датчик, последовательно нагружая его массой i:

int i, sum;
i = 1; /* Шаг калибровки = 1г */
sum = 0;
while(i<=1000){ /*Максимальная нагрузка = 1000 г */
sum += i;
i++;
}

В результате калибровки получаем массив, состоящий из тысячи экспериментальных значений напряжения, генерируемого датчиком при нагружении его калибровочными грузами. Принимаем, что в промежутках между двумя соседними реперными точками напряжение растет линейно. Устанавливаем жесткое соответствие "г/мВ": первому числу массива соответствует ноль грамм, второму - один грамм ... 1000-му - 1000 г. И выводим на печать (индикатор) уже цифры не милливольт, а грамм, которые привязаны к полученным реперным точкам (милливольтам). И как будто получаем линейный прибор? Но как тогда обеспечить отображение на индикаторе чисел с дискретностью, к примеру, не 1 г, а 1 мг, принимая, как я сказал выше, что напряжение на участках между соседними реперами растет линейно?

Как все вышеописанное будет выглядеть в виде программы - максимально абстрагированно, но вместе с тем, чтобы сама идея была рабочей? А то я могу пока только процедуру подкладывания гирек программно описать. :)
Skype: a_schabanow  
UA Non-conformist #16.10.2008 17:37  @Татарин#16.10.2008 16:39
+
-
edit
 

Non-conformist

аксакал

Татарин> МК с УСБ - существуют. Существуют и библиотеки для того, чтобы МК mass storage device из ссебя изображал. Только будь готов, что за них попросят денежку, а на халяву не дадут.

Это какие? Дорогие, наверное? А вот если бы МК был обычный АТмега, а вместо 232 микрухи поставить примерно такую же, но только чтобы она обеспечивала связь по УСБ? Или все эти МАКС232 только напряжения преобразуют, а весь протокол обмена данными содержит УСАРТ внутри АТмеги? Сложно ли НАПИСАТЬ УСБ-приемопередатчик, много ли он займет места, есть ли открытые примеры таких решений?
Skype: a_schabanow  
RU GOGI #16.10.2008 20:06  @Non-conformist#16.10.2008 17:37
+
-
edit
 

GOGI

координатор
★★★★
Non-conformist> Это какие? Дорогие, наверное? А вот если бы МК был обычный АТмега, а вместо 232 микрухи поставить примерно такую же, но только чтобы она обеспечивала связь по УСБ?
Алексей, этот вопрос уже обсуждался в топике "программирование АВР".
Самый простой способ использовать дата-кабель от сотовых, старых моделей (у новых ЮСБ встроенный).
В системе образуется виртуальный ком-порт.
USB mass storage типа флешки для АВР насколько я знаю нет, им вроде как просто быстродействия не хватает для этого.

P.S.-как быстро тебя начали волновать прикладные вопросы :-)
1  3.0.33.0.3
US Mishka #16.10.2008 20:39  @Non-conformist#16.10.2008 17:23
+
-
edit
 

Mishka

модератор
★★★

Non-conformist> Массивы. Допустим, что имеется деформационный датчик механической нагрузки, выход которого может принимать значения от 0 до 100 мВ при нагрузке от 0 до 1000 г. Все бы ничего, но не устраивает нас его линейность. Калибруем датчик, последовательно нагружая его массой i:
Non-conformist> int i, sum;
Non-conformist> i = 1; /* Шаг калибровки = 1г */
Non-conformist> sum = 0;
Non-conformist> while(i<=1000){ /*Максимальная нагрузка = 1000 г */
Non-conformist> sum += i;
Non-conformist> i++;
Non-conformist> }

Здесь ты описал не массив, а просто две переменные. для массива надо так:
code text
  1. int i;
  2. int array[ 1000 ];
  3. i = 1; /* Шаг калибровки = 1г */
  4. while(i<=1000)
  5. { /*Максимальная нагрузка = 1000 г */
  6.   array[ i - 1 ] = показания прибора;
  7.   i++;
  8. }


или
code text
  1. int i;
  2. int array[ 1000 ];
  3. for ( i = 0; i < 1000; ++i )
  4. { /*Максимальная нагрузка = 1000 г */
  5.   array[ i ] = показания прибора;
  6. }




Non-conformist> В результате калибровки получаем массив, состоящий из тысячи экспериментальных значений напряжения, генерируемого датчиком при нагружении его калибровочными грузами. Принимаем, что в промежутках между двумя соседними реперными точками напряжение растет линейно. Устанавливаем жесткое соответствие "г/мВ": первому числу массива соответствует ноль грамм, второму - один грамм ... 1000-му - 1000 г.

Не, немного по другому. 1 грамм, 2 грамма и т.д. используем как индекс в массиве для того, чтобы получить значение напряжения, снятого с прибора при таком весе.

Non-conformist> И выводим на печать (индикатор) уже цифры не милливольт, а грамм, которые привязаны к полученным реперным точкам (милливольтам). И как будто получаем линейный прибор? Но как тогда обеспечить отображение на индикаторе чисел с дискретностью, к примеру, не 1 г, а 1 мг, принимая, как я сказал выше, что напряжение на участках между соседними реперами растет линейно?

С поправкой моей будет работать.

Non-conformist> Как все вышеописанное будет выглядеть в виде программы - максимально абстрагированно, но вместе с тем, чтобы сама идея была рабочей? А то я могу пока только процедуру подкладывания гирек программно описать. :)
 3.0.33.0.3
UA Non-conformist #16.10.2008 21:57
+
-
edit
 

Non-conformist

аксакал

> Не, немного по другому. 1 грамм, 2 грамма и т.д. используем как индекс в массиве для того, чтобы получить значение напряжения, снятого с прибора при таком весе.

А-а-а!!! Не успел! А ведь сам додумался! Домой пришел, а задачка-то в подсознании вертится, в фоновом режиме. И приходит вдруг: индексы массива - это же готовые "граммы"!

А тот цикл, что выше - это я не массив описал, это я в виде проги процедуру калибровки изобразил. :) Массивы мы еще не проходили - только сегодня вечером первое чтение было, еще синтаксисом не владеем.

***
Только как все-таки между реперами (между двумя граммами) организовать линейный вывод МИЛЛИграмм, т.е. в прямой пропорции с приращением милливольт? Решение смутно вертится, а кодом высказать пока не могу.

Разве что вот так, чисто описательно: считываем милливольты с порта, и методом сортировки определяем, между какими двумя элементами массива (реперами) считанное число приходится. Принимаем, что функция между этими двумя точками линейна (y = kx + b). Решаем систему уравнений с координатами двух точек (допустим, по оси У - милливольты, по Х - граммы), определяем коэффициенты наклона и смещения прямой, подставляем в полученную функцию считанное со входа значение милливольт (промежуточное между двумя реперами), и получаем промежуточное ЗНАЧЕНИЕ ГРАММ. Выводим на индикатор. Пятый класс средней школы... Ф-фух, надо пойти 100 гр. наливочки употребить для сердечной мышцы, а то перевозбудился...

***
2_ГОГИ
Приход, однако. Прет...
Skype: a_schabanow  
EE Татарин #16.10.2008 22:11  @Non-conformist#16.10.2008 17:37
+
-
edit
 

Татарин

координатор
★★★★☆
Татарин>> МК с УСБ - существуют. Существуют и библиотеки для того, чтобы МК mass storage device из ссебя изображал. Только будь готов, что за них попросят денежку, а на халяву не дадут.
Non-conformist> Это какие? Дорогие, наверное? А вот если бы МК был обычный АТмега, а вместо 232 микрухи поставить примерно такую же, но только чтобы она обеспечивала связь по УСБ?
Дорогие.
Есть готовые адаптеры УСБ-КОМ. Наиболее удобное решение вопроса для всяких логгеров, где не требуется реально возможностей УСБ по скорости или горячему втыканию.

Non-conformist> Или все эти МАКС232 только напряжения преобразуют, а весь протокол обмена данными содержит УСАРТ внутри АТмеги?
Именно. Так и есть.

Non-conformist> Сложно ли НАПИСАТЬ УСБ-приемопередатчик, много ли он займет места, есть ли открытые примеры таких решений?
Честный - достаточно сложно. Кроме того, это потребует достаточно быстродействующего контроллера.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.33.0.3
US Сергей-4030 #16.10.2008 22:15  @Non-conformist#16.10.2008 21:57
+
-
edit
 

Сергей-4030

исключающий третье
★★
админ. бан
Non-conformist> Разве что вот так, чисто описательно: считываем милливольты с порта, и методом сортировки определяем, между какими двумя элементами массива (реперами) считанное число приходится. Принимаем, что функция между этими двумя точками линейна (y = kx + b). Решаем систему уравнений с координатами двух точек (допустим, по оси У - милливольты, по Х - граммы), определяем коэффициенты наклона и смещения прямой, подставляем в полученную функцию считанное со входа значение милливольт (промежуточное между двумя реперами), и получаем промежуточное ЗНАЧЕНИЕ ГРАММ. Выводим на индикатор. Пятый класс средней школы... Ф-фух, надо пойти 100 гр. наливочки употребить для сердечной мышцы, а то перевозбудился...

Да, именно. Разве что можно указать, что k и b можно высчитать заранее и поместить в тот же массив. Т.е. будет у вас примерно так: на первом месте - первый репер, потом - первый k, потом первый b, потом второй репер и т.п. Или три массива, в первом - реперы, во втором - k, в третьем - b. Или, можно сделать так называемую структуру - поместить все три числа в одну обертку и потом сделать массив таких оберток. Заметьте, что вам не надо хранить оба конца промежутка.
 3.0.33.0.3
EE Татарин #16.10.2008 22:20  @Non-conformist#16.10.2008 21:57
+
-
edit
 

Татарин

координатор
★★★★☆
Non-conformist> Только как все-таки между реперами (между двумя граммами) организовать линейный вывод МИЛЛИграмм, т.е. в прямой пропорции с приращением милливольт? Решение смутно вертится, а кодом высказать пока не могу.
Non-conformist> Разве что вот так, чисто описательно: считываем милливольты с порта, и методом сортировки определяем, между какими двумя элементами массива (реперами) считанное число приходится. Принимаем, что функция между этими двумя точками линейна (y = kx + b). Решаем систему уравнений с координатами двух точек (допустим, по оси У - милливольты, по Х - граммы), определяем коэффициенты наклона и смещения прямой, подставляем в полученную функцию считанное со входа значение милливольт (промежуточное между двумя реперами), и получаем промежуточное ЗНАЧЕНИЕ ГРАММ. Выводим на индикатор. Пятый класс средней школы... Ф-фух, надо пойти 100 гр. наливочки употребить для сердечной мышцы, а то перевозбудился...
Так и есть. Именно так линейная интерполяция и работает.
Только уравнение решается, конечно, не в программе, а в голове на этапе написания. В прогу пишется готовое аналитическое выражение. :)

Ещё можно интерполировать табличные значения сплайном достаточной размерности. Часто это даёт лучшую точность.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.33.0.3
RU yacc #16.10.2008 22:32  @Non-conformist#16.10.2008 21:57
+
-
edit
 

yacc

старожил
★★☆
Non-conformist> Только как все-таки между реперами (между двумя граммами) организовать линейный вывод МИЛЛИграмм, т.е. в прямой пропорции с приращением милливольт? Решение смутно вертится, а кодом высказать пока не могу.
Лентяйничем... ;)
Non-conformist> Разве что вот так, чисто описательно: считываем милливольты с порта, и методом сортировки определяем, между какими двумя элементами массива (реперами) считанное число приходится. Принимаем, что функция между этими двумя точками линейна (y = kx + b). Решаем систему уравнений с координатами двух точек (допустим, по оси У - милливольты, по Х - граммы), определяем коэффициенты наклона и смещения прямой, подставляем в полученную функцию считанное со входа значение милливольт (промежуточное между двумя реперами), и получаем промежуточное ЗНАЧЕНИЕ ГРАММ. Выводим на индикатор. Пятый класс средней школы... Ф-фух, надо пойти 100 гр. наливочки употребить для сердечной мышцы, а то перевозбудился...
Решаем именно по твоей формуле:

Пусть диапазон от 0 до 100 ( как в приведенной выше задаче ),
а пришло, скажем 43.256.

code text
  1. /* вот тут нам вещественные числа потребуются */
  2. float x_to_display;
  3. int x1;
  4. int x2;
  5. float y1;
  6. float y2;
  7. float k;
  8. float x;
  9. float result;
  10.  
  11. /* входное число */
  12. x_to_display =  43.256;
  13.  
  14. /* значение первой точки от которой будем аппроксимировать - тупо отрезаем дробную часть,
  15. а в С это сделать - приведением типов. Подводные камни - если значение более чем максимальное
  16. для данного целого числа - будет хреново. */
  17. x1 = (int) x_to_display; /* это будет 43 */
  18.  
  19. x2 = x1 + 1; /* шаг целый - значит будет просто следующая точка */
  20.  
  21. /* получаем значение y между которыми находится наш результат */
  22. y1 = array[x1];
  23. y2 = array[x2];
  24.  
  25. /* поскольку у нас шаг - еденица, то деление на разницу в х, равной 1, не нужно */
  26. k = y2 - y1;
  27.  
  28. /* для вычисления х нам надо оставить дробную часть, что мы и делаем отнимая от полного
  29. результата значение без дробной части. Поскольку у нас x между точками меняется от 0 до 1 */
  30. x = x_to_display - (float)x1;
  31.  
  32. result = k*x + y1; /* вуаля! */

Разумеется, предполагается что все x_to_display:
а) положительные
б) не выходят за границы нашего массива ( т.е. от 0 до 999 ) иначе надо ставить доп. проверки.
 2.0.0.72.0.0.7
UA Non-conformist #17.10.2008 00:01  @yacc#16.10.2008 22:32
+
-
edit
 

Non-conformist

аксакал

yacc> Лентяйничем... ;)

Не, серьезно, рановато пока. Текст твой практически не цепляет, несмотря на то, что вижу перед собой практическую реализацию "моей" идеи. Это просто потому, что читать еще толком не умею, слишком мало знаю. Только что цикл while кое-как затвердил, массивы только начал, сортировка только в проекте. Большое спасибо за иллюстрацию, завтра буду разбирать пошагово, по книжке.

Насчет приведения типов уже встречал, при беглом просмотре. И насчет подводных камней тоже, автор достаточно подробно на этом останавливается. Там вроде бы надо проверять входящие величины, чтобы в случае переполнения выводить не бред, а типа еггог. Что-то вроде этого...


2_Сергей_4030
2_Татарин

Да, я так и думал - все, что можно, надо посчитать заранее, чтобы не грузить лишним процессор. Это была просто идея, описанная словами - насколько это доступно для меня в данный момент.

***
Ниже - вообще-то оффтоп, поэтому прошу отвечать максимально лаконично - да/нет. В случае позитива можно будет продолжить в более подходящей теме.

По УСБ. Вообще идея такова - человек подходит к ящику, втыкает в него нечто; секунд через десять, к примеру, вынимает это "нечто", и уходит с данными (месяц нарезан замерами температуры, например, через каждые 30 сек). Ящик нетранспортабелен, закреплен стационарно, на него навешано двадцать четыре удаленных термометра.

1. Есть ли для такой задачи какая-то простая, дешевая, легко реализуемая альтернатива флешке?

2. А если микруху навесной памяти оформить в виде "брелка а-ля УСБ-флешка"? И переливать в нее данные с такой же микросхемы, стационарно подключенной к МК, внутри ящика?

3. Ламели питания в разъеме удлинить на пару миллиметров - вот и горячее втыкание... Вплоть до того, что использовать готовый УСБ-разъем. Или не прокатит такое?

4. Можно ли полностью автоматизировать цикл слива данных - так, чтобы МК, опознав событие подключения "сливного" чипа, сам бы начинал процесс перелива данных и заканчивал его?

5. Или в сам "брелок" поставить маленький МК с УАРТ, чтобы ОН управлял сливом?

6. Долго ли будет длиться такой процесс слива данных, если он вообще возможен?

7. Легко ли будет потом слить данные с такой памяти в комп?

Предупреждая вопросы по поводу изобретательства велосипеда: дело не столько в каком-то экономическом эффекте, сколько в самоутверждении. Это образ жизни, прошу сильно не ругаться. :)
Skype: a_schabanow  
UA Non-conformist #17.10.2008 00:07
+
-
edit
 

Non-conformist

аксакал

> Есть готовые адаптеры УСБ-КОМ.
Это примерно то, что я описал чуть выше? Чтобы не возиться с микросхемой, а использовать два готовых изделия - адаптер и флешку?
Skype: a_schabanow  

Mishka

модератор
★★★

yacc> Разумеется, предполагается что все x_to_display:
yacc> а) положительные
yacc> б) не выходят за границы нашего массива ( т.е. от 0 до 999 ) иначе надо ставить доп. проверки.

Не хватит. Потому как, если x_to_display будет 999, то x2 уже вылезет. :P
 3.0.33.0.3
1 2 3 4 5 6 7

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru