Привет всем!
Есть устройство в котором задействовано множество периферии.
На PORTD бит 5 является выходом. Используется как стробирующий выход. Пассивное состояние - 0. Управляется программой.
На PORTE задействовано два USART - USARTE0 (для связи с периферийным устройством) и USARTE1 (как отладочный порт для вывода на РС сообщений).
Программа работает следующим образом
1. Инициализируется вся периферия (порты ввода-вывода, USART, таймеры и т.п.)
2. Далее подается строб на PORTD5.
Ситуация следующая:
1. Если питание подано в первый раз то после перехода строба из 0 в 1 вся периферия вешается! Т.е. оба USART не работают и еще часть периферии так же не работает. Программа может зависнуть.
2. Если сбросить процессор не снимая питания, то все работает как задумано.
Отрезал провода от USARTE0, от PORTD5 - ничего не помогло! Начал разбираться с программой. Оказалось, что если я не разрешаю приемник USARTE1, т. е. в регистре CTRLB не устанавливаю бит RXEN то при первой подаче питания все работает как положено.
Далее установил, что если после того, как программа сгенерирует строб, разрешить приемник, то тоже все работает замечательно.
Два дня ломаю голову, чтобы это могло быть? Есть какие нибудь идеи?