Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

А вот случай с mega324p

Отправлено Snickers 16 июля 2008 г. 16:54
В ответ на: я в шоке , тынька 2313 , по захвату измеряю период , измерения крайне нестабильны (+) отправлено m16 12 июля 2008 г. 11:58

В стартовике (GCC)инициализирую порты(до инициализации переменных):
void InitPorts (void) __attribute__ ((naked)) \
__attribute__ ((section (".init3")));

void InitPorts(void)
{
PORTB= 0x33;/*00110011*/
DDRB= 0xB3;/*10110011 */
PORTC= 0x12;/*00010010 */
DDRC= 0x1D;/*00011101 */
PORTD= 0x06;/*00000110 */
DDRD= 0xF2;/*11110010 */
}

в main проверяю:

int main(void) {
byte i;

i=PORTC;
if( i!=0x12) Led1on;
else Led2on;
while(1);

}

В 15 платах из 17 PORTC всегда читается правильно, но в 2-х остальных иногда вместо 0х12 появляется 0х90
Если такую же инициализацию повторить в main (непосредственно перед i=PORTC;)-сбоев нет

Если бы сбои были вызваны внешними причинами (напрмиер флуктуациями питания)то сбоили бы и другие порты, а в PORTC мог бы появляться случайный код, но при сбое появляется именно 0х90


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru