У меня такая проблема, над которой бьюсь уже несколько дней. Если кратко - то есть прибор, в котором стоит AT91SAMX256. ВСЕ выводы задействованы. Есть порт B21, который по идее должен управлять электронным ключом на биполярном транзисторе(BC847). Ключ подсаживает вывод другого девайса на землю. В процессе работы программы на выводе ничего не происходит, никакого напряжения не появляется, соответственно ключ не срабатывает и девайс не включается. Инициирую так: #define Pin_ON B,21,H . . . pin_off(Pin_ON); pin_dir_out(Pin_ON); . . .
Далее в программе его включаю: . . . pin_on(Pin_ON); . . .
... и выключаю: . . . pin_off(Pin_ON); . . .
Никакого шевеления не наблюдалось. В процессе поиска выхода был выброшен транзистор, Контактные площадки коллектора и базы коротились и все заработало. Т.е. порт работает как вход. Далее в процессе ковыряния был взят порт(порт А29, выв. 75) , выполняющий аналогичные функции управления электронным ключом и засинхронизированы вот так: #define Pin_ON B,21,H #define Pin_MOD A,29,H . . . pin_off(Pin_ON); pin_dir_out(Pin_ON); pin_off(Pin_MOD); pin_dir_out(Pin_MOD); . . . pin_on(Pin_ON); pin_on(Pin_MOD); . . . pin_off(Pin_ON); pin_off(Pin_MOD); . . . Вывод 75 работал как положено, а 66 - нет((( В чем причина? Есть аналогичная плата, там так же - т.е. баг в прошивке, а не в контроллере. Кто может - помогите!!!!
|