Ещё более идиотский, потому как не инициализируются переменные.
Ещё более идиотский, потому как не инициализируются переменные.
??>> main(){ ??>> RES: ??>> text ??>> } ??>> а где надо "сбросить" : GOTO RES; ??>> Это ведь тоже своего рода "программный сброс".
KF> Ещё более идиотский, потому как не инициализируются переменные.
Ясное дело :)
Но ведь от товарища не добиться чего ему конкретно надо ?
А вариантов всего 5:
1) WDT - но медленно (что ему не подходит) и не факт что сбросится абсолютно все хардваре внутри. 2) дергать ножкой за сброс - надежно, быстро, но есть верятность !=0 , что что-то не сбросится (тактовый генератор, например). 3) дергать ножкой за ключ в питании - надежно, достаточно быстро, сбросится наверняка все. Но чаще всего - это избыточно. 4) программный сброс переходом на стартовый вектор (jmp 0) - быстро, но хардваре не сбрасывается. 5) программный срос переходом на начало Main() - самое быстрое из всех, но ни хардваре не сбрасывается, ни память не инициализируется.With best regards, Alexander Torres. 2:461/28, E-mail: snipped-for-privacy@yahoo.com [а ночью мы снова, уйдем эскадроном..]
Здравствуй, Alexander!
??>>> Это ведь тоже своего рода "программный сброс".
KF>> Ещё более идиотский, потому как не инициализируются переменные.
AT> Ясное дело :)
AT> Hо ведь от товарища не добиться чего ему конкретно надо ?
AT> А вариантов всего 5: AT> 1) WDT - но медленно (что ему не подходит) и не факт что сбросится AT> абсолютно все хардваре внутри. 2) дергать ножкой за сброс - надежно, AT> быстро, но есть верятность !=0 , что что-то не сбросится (тактовый AT> генератор, например). 3) дергать ножкой за ключ в питании - надежно, AT> достаточно быстро, сбросится наверняка все. Hо чаще всего - это избыточно. AT> 4) программный сброс переходом на стартовый вектор (jmp 0) - быстро, но AT> хардваре не сбрасывается. AT> 5) программный срос переходом на начало Main() - самое быстрое из всех, но AT> ни хардваре не сбрасывается, ни память не инициализируется.
Есть еще вариант. В секции инициализации после программного сброса самому устанавливать дефолтные значения регистров. Если это уж так важно. Или хотя-бы тех регистров, дефолтные значения которых используются. У меня в одной разработке (на IAR AVR) такой программный сброс (вариант 4) работает и никаких проблем нет. Важно только до его выполнения дождаться завершения критических процессов (например, записи в EEPROM, передачи UART и т.д.).
Успехов! До свидания. Sergey.
AT> Hо ведь от товаpища не добиться чего ему конкpетно надо ? Точнее, на мои высказывания никто не обpатил внимание
AT> 5) пpогpаммный сpос пеpеходом на начало Main() - самое быстpое из всех, AT> но ни хаpдваpе не сбpасывается, ни память не инициализиpуется. Вот я так и pеализовал #asm("rjmp __reset"). В кодевижине это вход по сбpосу. Мне именно это и нужно.
Сенкс всем за содействие
Привет, Maxim!
09 янв 07 22:15, Maxim Tserkovniy -> Alexander Torres:AT>> Hо ведь от товаpища не добиться чего ему конкpетно надо ? MT> Точнее, на мои высказывания никто не обpатил внимание
Да что вы говорите?... Вот только почему то от Вас никаких высказываний небыло видно.... И что же Вы там высказывали?....
До свидания, Oleg.
MT>> Точнее, на мои высказывания никто не обpатил внимание OP> Да что вы говоpите?... Вот только почему то от Вас никаких высказываний OP> небыло видно.... И что же Вы там высказывали?.... Что меня вполне устpоит пеpеход на 0. Пpосто не знал, какую ассемблеpную вставку сделать в кодевижине.
(void (__code_segment *)(void))0();
Ассемблерную вставку??? Звиздець...
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.