Перейти к содержанию
    

Vavan4ik

Участник
  • Постов

    13
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Vavan4ik

  • День рождения 03.12.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. 1) как по мне, то делать (проектировать) такие устройства нужно с таким расчетом, чтобы орган управления (контроллер) в случае падения, не приводил бы к падению всей системы, а в случае длительного эпик фейла - останавливал процесс, ну или отдавал управление резервному модулю. 2) всегда нужно решать вопросы температуры ОС, давления, влажности, вибрации, излучений итд, даже если кажется на первый взгляд что проблем не будет. У меня был случай когда семейство муравьев завелось в девайсе (тепло осенью), а плата не была обработана лаком, в итоге - печальный результат... 3) опыт показывает, что действительно работать будет, если спроектировано, испытано, изготовлено, установлено итд "руками и головой". Удачи!
  2. Всем спасибо, вчера почитал про jacOS, OSA тут еще Salve накопал, вообще удивляюсь, как я раньше без этого обходился ? Спасибо мужики, буду грызть гранит RTOSа :)
  3. Спасибо. Ок, RTOS. Что посоветуете для PIC 16F887 ?
  4. Всем привет! Устройство: PIC + индикатор + кнопки + входа + выхода на реле итд Задача на первый взляд ну очень простая, однако при реализации столкнулся с проблемой одновременной (точнее нужно везде успеть) работы со всеми частями устройства 1) Алгоритм содержит ветвление и различного рода задержк; 2) Описать состояния выходов как функцию состояния входов проблематично, точнее очень трудоемко и на данный момент не представляется возможным; 3) Схема работы прекрасно отображается блок-схемой; 4) пробовал использовать глобальную переменную увеличивающуюся со временем для реализации алгоритма - много возни с проверками; 5) время выполнения рабочего цикла от 15 с до 5 мин точность +- 0,1 с; Вопрос: кто как решал подобные задачи??? Заранее благодарен
  5. Спасибо мужики за тему, я тоже сейчас борюсь с временными интервалами от несколько секунд до 24 часов, причем одновременно нужно и отображать, и расчитывать, и опрашивать, и выводить, уже хотел спрашивать про многозадачность, но идея с большой переменной очень клевая, только вот нужно придумать чтобы ее обнулять безболезненно, чтобы не получилось переполнения (в случае если устройство будет включено более времени переполнения). Спасибо!
  6. Вот я еще хотел спросить знатоков, нужно ли подключать какую-либо стандартную библиотеку, чтобы работать с long ? и какие могут быть грабли? переменные long описываются в начале файла и используются как глобальные, затем в функции они используются (я так понимаю, что содержимое глобальных переменных доступно везде) : Pid_Out_M = ((Prop_M + Integ_M + Deriv_M)); Pid_Out_M = Pid_Out_M /342; // 0...175 if (Pid_Out_M < 0) {Z_CurrentMod = 0;} else {Z_CurrentMod = Pid_Out_M;} else if (Pid_Out_M < 40) {Z_CurrentMod = 40;} // 15..40 => 40 else if (Pid_Out_M < ImaxMod) {Z_CurrentMod = Pid_Out_M;} else {Z_CurrentMod = ImaxMod;} // >175 => 175 После выполнения второй строки при отрицательном Pid_Out_M результат положительный и неверный :((( Ничччего не понимаюююю
  7. большое человеческое спаПИВО!
  8. я уже писал, что в тесте все работает красиво, а в реальной проге не хочет. Вот я сейчас удалил про и поставил стд, тот же проект еще кучу всего написал и про sprintf и про _delay_ms() устал уже от этого... такое чудит без баяна Error [491] ; . can't find 0x68 words for psect "rbss_0" in segment "BANK0" Error [593] ; . can't find 0x2 words (0x2 withtotal) for psect "code_ptr" in segment "BANK0" Error [593] ; . can't find 0x2 words (0x2 withtotal) for psect "intsave" in segment "BANK0" Error [593] ; . can't find 0x1 words (0x1 withtotal) for psect "intsave" in segment "BANK0"
  9. дело в том, что и long выделывается, как ни крути его... да и памяти данных уже использовано 55% а еще есть что писать :(
  10. Спасибо за ответ, но как быть, если нужно работать с большими целочисленными числами ( 2 ПИД регулятора), или все таки float?? что-то не хочется...
  11. 1) для начала HI-TECH C PRO for the PIC10/12/16 MCU family candidate build 3206 V9.60PL4 Copyright © 1984-2008 HI-TECH SOFTWARE 2) 3.3.5 24-Bit Integer Data Types HI-TECH C PRO for the PIC10/12/16 MCU Family supports four 24-bit integer types. short long are 24-bit two’s complement signed integer types, representing integral values from -8,388,608 to +8,388,607 inclusive. Unsigned short and unsigned int are 16-bit unsigned integer types, representing integral values from 0 to 16,777,215 inclusive. All 24-bit integer values are represented in little endian format with the least significant byte at the lower address. Variables may be declared using the signed short long int and unsigned short long int keyword sequences, respectively, to hold values of these types. When specifying a short long int type, the keyword int may be omitted. Thus a variable declared as short long will contain a signed short long int and a variable declared as unsigned short long will contain an unsigned short long int. вродебы понятно, и даже работает в тестовой программе а реальной не хочет, зараза...
  12. Был схожий прикол, я мерял напругу по 3 каналам 16F887, так эта сволочь не хотела по людски работать пока я перед каждым измерением не переписывал ADCON и настройки портов.
  13. short long непонятно работает

    Всем привет! При написании программы столкнулся с такими приколами: Почему-то переменные типа short long и long не могут сравниваться с литералами, например проверка на отрицательность, причем в тестовой проге все проверяет и работает. Неделю бьюсь ничего в голову не приходит, помогите кто знает... short long Integ_M; short long Prop_M; short long Pid_Out_M; ... if (Pid_Out_M < 0) {Z_CurrentMod = 0;} else if (Pid_Out_M < 40) {Z_CurrentMod = 40;} // 15..40 => 40 else if (Pid_Out_M < ImaxMod) {Z_CurrentMod = Pid_Out_M;} else {Z_CurrentMod = ImaxMod;} // >175 => 175 в итоге имеем такое сообщение: Error [712] main.c; 509. can't generate code for this expression
×
×
  • Создать...