| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > AVR studio проблемма с задержкой |
| Автор: СерегаГоляков 11.12.2010, 13:11 | ||
| Здравствуйте, написал прогу. Неработает, портится после выхода из любого _delay_ms(10); Написал для Atmel8515 А в отладке, стрелочка пропадаает, после ДЕЛЕЯ через несколько шагов, вновь где-нибудь появляется оО При этом вылетает: AVR Simulator: Unsupported instruction 'call' at address 0x00071d AVR Simulator: Unsupported instruction 'jmp' at address 0x00073a AVR Simulator: Unsupported instruction 'call' at address 0x00015e AVR Simulator: Unsupported instruction 'jmp' at address 0x000558 Программа выводит алфавит, а при нажатии комбинации 10111111 выводит анимации алфавита побуквенную. Это 2я моя прога, первая выводила кол-во нажатий, в той ниче подобного не было. Сделал аналог на С++(может это и СИ получился), в Микрософт Вижуал Студии -> другие языки->Visual C++ ->консольное приложение. Всё робит, выводит в консоль. Вот прога:
|
| Автор: Mazzi 12.12.2010, 12:31 |
| У тебя в функции main нет бесконечного цикла. Попробуй добавить. |
| Автор: СерегаГоляков 12.12.2010, 12:45 |
| да это для фора ваще пофиг) мож у мя с ОС рамс |
| Автор: UniBomb 13.12.2010, 10:49 |
| У меня предложенная программа даже не компилируется. Ошибок много: 1. Слишком лихо объявлять функции внутри других функций. Это касается функции clear1; 2. Функция switch1 не знает переменную y; 3. Функция clear1 и switch1 не знают переменную p; 4. Не рекомендуется использовать переменные в качестве параметра _delay_ms, ибо код от этого возрастает на порядок, что может влиять на другие участки кода; 5. После директивы #include точка с запятой не ставится; Пока представленная программа не будет компилироваться дальше разговаривать не о чем |
| Автор: СерегаГоляков 13.12.2010, 17:10 | ||||||
странно у меня стоит 4.17 АВР, все компилируется, вот изменил текст, как вы и предложили, но она все равно скочит по КЕЙСАМ(( Добавил ту же частоту что и в ИСИС
комментарии в коде те же) Приложил файлик с проектом в ИСИС |
| Автор: Mazzi 13.12.2010, 19:05 |
| Из swich выход по goto это бред. Ставьте в конце каждого case оператор break. И будет вам счастье. |
| Автор: СерегаГоляков 13.12.2010, 20:06 | ||
я думал мож ГОТО поможет, но нет, знаю что бреаке надо. Истина то не в этом, прыгает то не из за этого по любым кейсам |
| Автор: UniBomb 14.12.2010, 09:10 | ||
Подправил немного форматирование и исправил пару мелких недочётов. СерегаГоляков, старайтесь придерживаться какого-нибудь стиля форматирования, ибо такие программы читать сложно, да и неохота
Побегал я в дебагере и ничего в общем то странного не обнаружил. Программа выполняет то, что в ней написано, все ветки switch-case выполняются, ничто никуда не прыгает. Так в чём проблема то? |
| Автор: СерегаГоляков 16.12.2010, 14:34 |
| Добрый вечер, заметил, что перескакивает она в те строки, где указаны те же значения для портов, например из строки PORTD=0b0000000, можежет перескакнуть ТОЛЬКО в строку если в ней написано именно тоже, т.е. скакнет в строку PORTD=0b0000000 но уже из другого кейса Кстати и в анимации скачет тоже, но почему-то выводит на матрицу. Если в ИСИС 7 пошагово выполнять отладку, и выводить только букву А(где PINA=0b10000000) без анимации всего алфавита, то она даже не начинает рисовать ту часть буквы, которую могла бы нарисовать перед перескоком. |