Tag Archives: Задачка

Глюки контроллера. Ответ на загадку

Если вы не знаете о чем речь, то сначала рекомендую прочитать исходную задачу. Поломайте голову, не читайте комментарии, пишите свои. А потом возвращайтесь сюда.

Итак, девайс глючил. Причем глючил очень и очень характерно для срыва стека. Не зря первая половина поста была про поиск программной ошибки. Что такое срыв (он же переполнение) стека? Это когда стековая область памяти разрастается и начинает затирать область переменных. В результате может начаться полное веселье. Запороло переменные состояний автоматов? Получай наркоманскую логику. Запороло строковые данные — получи бред и кракозябры на экране (мой случай). Запороло видеопамять — здравствуй психоделичные картинки. Впрочем, тут и не в стеке может быть дело. Неправильно обращаясь с указателями можно навертеть такой же поебени. Суть одна — у нас каким то образом похерилась оперативная память. Не зря я полез первым делом проверять код. Но ничего не нашел.

Тут, конечно, можно до посинения отлавливать баги в программе, если бы не одно но — программа не глючила на столе. А глючила в поле. Отсюда первое соображение — виновато железо. Причем не в виде воздействия его на логику работы, ну там с протоколом ошибся или еще как налажал, опять же, в коде. А как то на электрическом уровне. Помехи, наводки и прочие пакости реального мира.

(далее…)

Read More »

Глюки контроллера

Все любят говорить достижениях и успехах. Но, на мой вгляд, о проебах говорить интересней. Потому как успехи у всех одинаковые, что там — пришел, увидел, победил. А вот накосячить можно совершенно разнообразными способами. Причем там, где, казалось бы, все на десять раз истоптано и никаких подводных камней не осталось. Однако, помним правило 34: и про старуху бывает порнуха.

Итак, делюсь :)

Есть девайс, довольно старый, вполне себе исправно работающий. Иногда зависавший, но это случалось редко и я про это даже не знал. Т.к. быстро поднятое упавшим не считается, потому никто не жаловался. Разрабатывал его не я. Я только взял на доработку и мелкосерийное производство.

Доработок там было немного. Ну датчик поменять, чуток подшаманить с точностью показаний, чуток оптимизировать производство, выкинуть лишнее, добавить нужное, заменить разъемы на более удобные. И так далее. Мелочевка. В общем, за год под моим авторством вышло несколько мелких ревизий этого девайса и все было окей.

Пока от заказчика не поступило очередное рацпредложение — избавиться от кабеля, который им приходилось крутить своими силами и перейти на что-то стандартное покупное. Выбор пал на обычный USB кабель. Ну, а чего? Дешевый, доступный, жил хватает, экранирован. Чего бы нет? А то, что по нему не USB сигнал пойдет, дак никого волновать не должно. Он все равно внутри будет. Старый разъем я убирать не стал, чуток раздвинул дорожки, чуток подвигал детальки на плате. Да уместил усбешник рядышком. Еще надо было еще пошаманить с алгоритмом отслеживания напряжения и его измерения амплитуды. Тоже все просто и элементарно. Дописать пару функций в код. Код там неплохой, так что это все было легко и просто.

Сделали платы в JLC, смонтировали партию устройств на десяток штук. Собрали и…

Дискотека, блядь! Это какой то трындец. Аппарат виснет и перезагружается каждые десять минут, хаотично. На индикации полный армагеддон. Кракозябры лезут в экран. Полная каша в показаниях. В общем, на лицо срыв стека. Ну очень похоже.
(далее…)

Read More »

Практическая задачка

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

Задача такая:
Нужно управлять скоростью маломощного двигателя постоянного тока, от переменного резистора. Ну или еще от какой крутилки, главное что плавно. Управлять нужно ШИМом. Частота ШИМа должна быть за пределами звукового диапазона, т.е. выше 25кГц.

Устройство должно быть максимально дешевым в производстве. И максимально простым в изготовлении. В качестве силового ключевого элемента пусть будет MOSFET IRF630. Но это совершенно не важно, важно чем будет формироваться ШИМ сигнал. Напряжение питания 12вольт.

Короче, Переменный резистор —> ??? —> ШИМ
Конкретной схемы я не требую, мне главное концепция построения схемы. Достаточно пары фраз из которых будет ясна конструкция схемы. У кого какие идеи?

З.Ы.
Большая часть идей и схемотехнических решений которые могут пригодиться на сайте есть.
А дня через три-четыре я выдам свое решение.

UPD:
Да, лучше выкладывать сначала свою мысль, а потом читать комментарии, чтобы не заражаться чужими идеями :)

Read More »