ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
28 августа
313709 Топик полностью
Dir (10.03.2012 23:35, просмотров: 94) ответил amusin на Про лог "И" или ENable очевидно. Какой одновибратор вы использовали? 555-й не пристраивается (или я туплю). Соленоид у меня.
По-моему, вы перестраховываетесь. Чтобы соленоид не сгорел при отладке, просто подайте на него меньшее напряжение, которого недостаточно для сгорания. А чтобы не зависнуть во время реальной работы, сделайте очень короткий цикл WDT, например, 10мс. Не сбросили за это время - сброс по WDT. В конце-концов сгореть может и одновибратор, а за ним ваш соленоид. А защита от сбоев ногодрыга - программная. В системном прерывании (допустим, каждые 100 или 200мкс) первым делом проверяете счетчик этого ногодрыга и если он "0" ВСЕГДА выводите на эту ножку "0", иначе "-1" из счетчика. А чтобы это прерывание нельзя было запретить или отложить, сделайте так, чтобы оно было единственным ;) Это только на первый взгляд кажется, что бред. На самом деле для ADuCов с их архитектурой (ARM7TDMI), огромной латентностью и отсутствием нормального контроллера прерываний чем меньше у вас источников прерываний, тем меньше теряете производительности. А когда только 1 прерывание, то и вероятность напортачить меньше. Сначала проверяете сбросили ли вы критические ногодрыгательные порты, потом проверяете установленные флаги прерываний от периферии и обрабатываете начиная с самых критичных. Поскольку системный тик очень короткий, то целесообразно считать время с начала прерывания для того, чтобы не занимать обработкой прерывания все время между циклами (100 или 200мкс)... это я Вам свой опыт работы с ADuCами (ADuC7128, ADuC7024...) излагаю ;)