-
- return jmp_to_bl(); ? - anonymouse(20.07.2012 12:14, )
- В иаре void __indirect_jump_to(unsigned long); Codavr(183 знак., 18.07.2012 11:19)
- Если в ИАРе то легко управлять хоть Колл хоть Джамп. На телесиськах обсуждали. Надо - вспомню и покажу как - Василий(18.07.2012 11:06, )
- А так можно? mazur(586 знак., 07.07.2012 19:10)
- можно, но не нужно - koyodza(07.07.2012 19:18)
- И кстати ещё момент Apтём(202 знак., 07.07.2012 02:00)
- а чем CALL не устраивает? - koyodza(06.07.2012 22:45)
- да врожденная фобия что для каждого CALL свой RET, хотя на том адресе будет переназначение стека. Так что можно и по вашему - MegaJohn(06.07.2012 23:16)
- рекомендую - koyodza(07.07.2012 00:11, ссылка)
- рекомендую один раз прописать typedef и потом наслаждаться MegaJohn(219 знак., 07.07.2012 00:26)
- зависит от того, как много раз используется это безобразие koyodza(216 знак., 07.07.2012 10:35 - 10:39)
- Off: Лeoнид Ивaнoвич(120 знак., 07.07.2012 14:31)
- Немало случаев, когда это нужно и удобно. Юрий_СВ(375 знак., 08.07.2012 16:12)
- По порядку: Лeoнид Ивaнoвич(91 знак., 08.07.2012 22:45)
- это потому, что у вас в основном мега8, и оно туда помещается - koyodza(08.07.2012 22:57)
- Да не будет короче, даже если применить извраты. Хотя на оверхед в последнее время иду осознанно, это меньшее зло по сравнению с глюкавой программой. - Лeoнид Ивaнoвич(08.07.2012 23:08)
- Возможно, на примере будет нагляднее >> Юрий_СВ(1707 знак., 09.07.2012 05:13)
- Что касается затрат процессорного времени и длины кода, так чем читабельней программа, тем она медленней и больше. - Лeoнид Ивaнoвич(09.07.2012 12:53)
- не всегда, от применяемого подхода зависит - koyodza(09.07.2012 13:10)
- Что касается затрат процессорного времени и длины кода, так чем читабельней программа, тем она медленней и больше. - Лeoнид Ивaнoвич(09.07.2012 12:53)
- меню на switchах в полторы сотни пунктов отладить будет сложнее, чем хорошо структурированное в виде таблиц с указателями на обработчики событий - koyodza(08.07.2012 23:21)
- В курятниках не бывает полутора сотен пунктов. - Лeoнид Ивaнoвич(08.07.2012 23:56)
- Возможно, на примере будет нагляднее >> Юрий_СВ(1707 знак., 09.07.2012 05:13)
- Да не будет короче, даже если применить извраты. Хотя на оверхед в последнее время иду осознанно, это меньшее зло по сравнению с глюкавой программой. - Лeoнид Ивaнoвич(08.07.2012 23:08)
- это потому, что у вас в основном мега8, и оно туда помещается - koyodza(08.07.2012 22:57)
- Тут все пункты обычными методами решаются. - Apтём(08.07.2012 16:15)
- По порядку: Лeoнид Ивaнoвич(91 знак., 08.07.2012 22:45)
- это когда в одном МК работает несколько разных программ и нужно как-то между ними взаимодействовать koyodza(468 знак., 07.07.2012 15:31)
- Спасибо. Лeoнид Ивaнoвич(151 знак., 07.07.2012 15:48)
- кому как, бывает что нужно, а бывает и обойтись можно koyodza(299 знак., 07.07.2012 15:56)
- Я тоже go to ни разу не использовал, при этом другие извращения тоже не понадобились. Я и float в микроконтроллерах не использую. - Лeoнид Ивaнoвич(08.07.2012 01:30)
- Это лишь говорит, что ваше ПО весьма несложное. Зачем goto -- классика, это выход из более чем одного вложенного цикла. Альтернатива -- это либо переменная-флаг и проверка в каждом вложенном цикле, либо каждый слодующий цикл в отдельной функции и fk0(1032 знак., 08.07.2012 10:59)
- ну да, куда нам до контроллеров проффесионального уровня koyodza(252 знак., 08.07.2012 11:33 - 11:38)
- Вы знаете толк в извращениях ) - zzz(08.07.2012 14:35, )
- тут весь топик изначально о них :=) - koyodza(08.07.2012 14:41)
- Вы знаете толк в извращениях ) - zzz(08.07.2012 14:35, )
- ну да, куда нам до контроллеров проффесионального уровня koyodza(252 знак., 08.07.2012 11:33 - 11:38)
- Это потому, что только 8-битники используете. Как только перейдете на Cortex-ы без float-ов и других извратов (например атомарное обращение к bit-band памяти) вряд ли обойдетесь. - Dir(08.07.2012 01:52)
- не пугайте ув.Л.И. кортексами, у него и так паранойя и куча предрассудков о них. Ни к чему там флоаты и прочее, если проекты останутся примерно теми же - koyodza(08.07.2012 10:27)
- Так ведь бытие (окружение) определяет сознание ;) Как только окружение изменится, так и сознание начнет меняться. Dir(215 знак., 08.07.2012 14:14)
- иногда оно определяет с отрицательным знаком koyodza(125 знак., 08.07.2012 14:38)
- Программирование микроконтроллеров - не моё. - Лeoнид Ивaнoвич(08.07.2012 14:51)
- иногда оно определяет с отрицательным знаком koyodza(125 знак., 08.07.2012 14:38)
- Так ведь бытие (окружение) определяет сознание ;) Как только окружение изменится, так и сознание начнет меняться. Dir(215 знак., 08.07.2012 14:14)
- Атомарность и без bit-band делается (например для выходов). - Apтём(08.07.2012 02:14)
- не пугайте ув.Л.И. кортексами, у него и так паранойя и куча предрассудков о них. Ни к чему там флоаты и прочее, если проекты останутся примерно теми же - koyodza(08.07.2012 10:27)
- Это лишь говорит, что ваше ПО весьма несложное. Зачем goto -- классика, это выход из более чем одного вложенного цикла. Альтернатива -- это либо переменная-флаг и проверка в каждом вложенном цикле, либо каждый слодующий цикл в отдельной функции и fk0(1032 знак., 08.07.2012 10:59)
- Я тоже go to ни разу не использовал, при этом другие извращения тоже не понадобились. Я и float в микроконтроллерах не использую. - Лeoнид Ивaнoвич(08.07.2012 01:30)
- кому как, бывает что нужно, а бывает и обойтись можно koyodza(299 знак., 07.07.2012 15:56)
- Спасибо. Лeoнид Ивaнoвич(151 знак., 07.07.2012 15:48)
- Немало случаев, когда это нужно и удобно. Юрий_СВ(375 знак., 08.07.2012 16:12)
- Off: Лeoнид Ивaнoвич(120 знак., 07.07.2012 14:31)
- зависит от того, как много раз используется это безобразие koyodza(216 знак., 07.07.2012 10:35 - 10:39)
- рекомендую один раз прописать typedef и потом наслаждаться MegaJohn(219 знак., 07.07.2012 00:26)
- рекомендую - koyodza(07.07.2012 00:11, ссылка)
- да врожденная фобия что для каждого CALL свой RET, хотя на том адресе будет переназначение стека. Так что можно и по вашему - MegaJohn(06.07.2012 23:16)
- Какой компилятор? У гцц это что-то вроде __attribute__((naked)) - Скрипач(06.07.2012 21:45)
- ((noreturn)) - fk0(07.07.2012 15:26)
- Чиво-чиво?? NAKED убирает пролог/эпилог функции/ISR, дуся! - MBedder(06.07.2012 21:49)
- В си, GoTo может привести к очень плохим последствиям, надо аккуратно с ним обращаться, к примеру если сделать goto за пределы функции то стек не освободится - OlegPowerC(06.07.2012 21:03)
- Точнее даже не goto а какраз ассемблерные вставки такого рода череваты - OlegPowerC(06.07.2012 21:03)
- Можно через сброс туда попасть - по запросу или ожидая сброса WDT. И это правильней - процессор будет сброшен в исходное состояние. - Apтём(06.07.2012 19:37)
- Ога, а значение 0x3F800 в WDT записать :)) - MBedder(06.07.2012 20:56)
- Отчего ваш скепсис? ТО что я написал нереально или ошибочно? - Apтём(06.07.2012 21:14)
- То, что ты написал - нереальная ошибочная хуйня, патамушта WDT делает RESET в 0/7FFF/FFFF/1FFFF (Mega256x), а не в 3F800 - MBedder(06.07.2012 21:46)
- Что после сброса по WDT mega256x не начнет выполнять программу бута, даже если в фузах BOOTRST=0? - Apтём(06.07.2012 22:08)
- Я все адреса бута перечислил - где ты среди них нашел 3F800? - MBedder(06.07.2012 23:08)
- Шо? 0/7FFF/FFFF/1FFFF - это вот это вот адреса бута для Mega256? Это FLASH_END для M32x/64x/128x/256x. Про 3F800: Apтём(223 знак., 06.07.2012 23:31)
- господа, вы все почти правы. Да нужно из APP попасть в бутлодырь. Юзаю chip45 Для мега2560. Размер бутлодыря 4килослов, или если я правильно посчитал 0x3F800 адрес в байтах (у IAR адресация флеши байтовая, у GCC словесная). Самое интересное вот в MegaJohn(561 знак., 06.07.2012 23:28)
- >>Размер бутлодыря 4килослов, или если я правильно посчитал 0x3F800 адрес в байтах Apтём(115 знак., 06.07.2012 23:42)
- я очепятался, 1к слов - MegaJohn(06.07.2012 23:47)
- Понятно. Но тогда это странно. Apтём(711 знак., 07.07.2012 00:00)
- я очепятался, 1к слов - MegaJohn(06.07.2012 23:47)
- >>Размер бутлодыря 4килослов, или если я правильно посчитал 0x3F800 адрес в байтах Apтём(115 знак., 06.07.2012 23:42)
- Я все адреса бута перечислил - где ты среди них нашел 3F800? - MBedder(06.07.2012 23:08)
- Что после сброса по WDT mega256x не начнет выполнять программу бута, даже если в фузах BOOTRST=0? - Apтём(06.07.2012 22:08)
- Ну так после сброса потеряется стек, с памятью непонятки, и.т.д. - OlegPowerC(06.07.2012 21:16)
- Не потеряется, а сбросится в исходное. Apтём(58 знак., 06.07.2012 21:19 - 21:27)
- То, что ты написал - нереальная ошибочная хуйня, патамушта WDT делает RESET в 0/7FFF/FFFF/1FFFF (Mega256x), а не в 3F800 - MBedder(06.07.2012 21:46)
- Отчего ваш скепсис? ТО что я написал нереально или ошибочно? - Apтём(06.07.2012 21:14)
- Ога, а значение 0x3F800 в WDT записать :)) - MBedder(06.07.2012 20:56)
- обошел тупо вставкой asm( "JMP 0x3F800" ); - MegaJohn(06.07.2012 19:23)
- goto - MBedder(06.07.2012 19:21)
- в IAR написал goto 0x3F800; говорит что "Error[Pe040]: expected an identifier app.c 305" - MegaJohn(06.07.2012 19:24)
- Правильно говорит - поименуй свой 0x3F800 (поставь ему метку с двоеточием) и переходи по имени метки, тогда все будет ОК - MBedder(06.07.2012 20:48 - 20:58)
- в IAR написал goto 0x3F800; говорит что "Error[Pe040]: expected an identifier app.c 305" - MegaJohn(06.07.2012 19:24)