IAR, ATmega32.
НаписАл прогр. модуль обмена через USART, отладил.
Добавил к нему обмен с 24C256 (2шт).
Не входит даже в прерывание по TWINT!
Отключаю (комментирую инициализацию и ссылки на функции) модуль свизи через USART - работает как часы.
Объем кода ~2кбайт.
У SRAM используется ~600байт.
Изменения в размерах CSTACK и уровнях вложения не помогают.
Впервые сталкиваюсь с подобным - натолкните.
dimka76
Oct 17 2007, 11:59
Цитата(ASZ @ Oct 17 2007, 15:20)

IAR, ATmega32.
НаписАл прогр. модуль обмена через USART, отладил.
Добавил к нему обмен с 24C256 (2шт).
Не входит даже в прерывание по TWINT!
Отключаю (комментирую инициализацию и ссылки на функции) модуль свизи через USART - работает как часы.
Объем кода ~2кбайт.
У SRAM используется ~600байт.
Изменения в размерах CSTACK и уровнях вложения не помогают.
Впервые сталкиваюсь с подобным - натолкните.
попробуй пошаговую отладку в avr-studio, отладчик IAR не очень шороший( на мой взгляд)
А как параметры инициализации прерываний и других общих опций делаете? Простой записью значений в регистры или по маске только нужные биты ставите/сбрасываете?
А не получается ли, что вы сидите в прерывании с более высоким приоритетом? В результате будет исполняться только это прерывание и код вне прерываний (правда существенно медленнее - по одной команде в перерывах между прерываниями), остальные прерывания при этом не будут обслуживаться. Обычно такое происходит, если используется прерывание по уровню и не запрещается в обработчике.
bodja74
Oct 18 2007, 08:48
Для начала думаю стоит отладить TWI ,если там что не так вы этот TWINT никогда и не дождетесь.

Симулятор здесь не поможет ,проверяем подключение ,питание и потихоньку начинаем выгребать значение регистра статуса TWI после каждой команды ,тем более УСАРТ готов ,вот и выдавайте на терминалку.
defunct
Oct 18 2007, 09:16
Цитата
Отключаю (комментирую инициализацию и ссылки на функции) модуль свизи через USART - работает как часы.
Кто работает как часы? I2C или UART?
А если не отключать, то что не работает и UART и TWI?
Без кода тут много не скажешь.. Ошибка в программе где-то.
Извините за причиненное беспокойство.
С помощью симулятора разобрался - происходила блокировка прерывания TWI в ПП инициализации USART (там система семафоров).
Просто многократно их (семафоры) прокручивал, понадеялся, что ошибок нет.
Еще раз извините.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.