-
- А ты и так пишешь каждый раз, и не одно и то же, а разное - вместо того, чтобы писать rcall TIMER1_init или rcall TIMER2_init. Пойми одно - макросы должны быть универсальными, а не одноразовыми - MBedder(28.09.2011 19:59 - 20:03)
- интересно, почему должны? - Vit(29.09.2011 00:03)
- Какой смысл делать одноразовые МНОГОСТРОЧНЫЕ макросы, применяемые в проекте лишь единожды? Вот для примера один из моих универсальных макрофайлов, включаемый в РАЗНЫЕ проекты: MBedder(10056 знак., 29.09.2011 01:29)
- Хе. У меня часть макросов идентичны. А макрос с EOR вообще был первым макросом, который написал. - Звероящер(05.10.2011 09:35)
- Может это тоже оформить в макрос , а не таскать по всем проектам как отдельный файл. ilyaul(1082 знак., 05.10.2011 01:08 - 01:34)
- В очистке регистров, кстати, я так и не увидел никакого смысла. Только лишнюю работу выполняет и память занимает этот макрос. Хотя, может, у вас свои соображения... - mazur(05.10.2011 01:56)
- В отличие от Studio которая автоматом чистит все регистры и память при запуске или по RESET - в жизни этого не происходит. Поэтому если у Вас произошёл RESET по какому-то условию , то в регистрах может сохраниться информация . И если у Вас есть ilyaul(92 знак., 05.10.2011 12:23)
- Основные аргументы высказаны. Остается добавить. Если произошел сброс-это уже ненормально. И если сброс произошел, то и нечего устройству дальше работать, пока не поубивало кого-нибудь. Нужно понять почему. Если косяк программы-написать функции mazur(133 знак., 06.10.2011 09:49)
- Сбросы бывают разные. Надо посмотреть в MCUSR, разобраться. "нечего устройству дальше работать", а устройство - усилитель тормоза, или руля... - maik-vs(07.10.2011 13:04)
- Да уже разобрались, нужен сброс или нет. :) MCUSR и использую. - mazur(07.10.2011 13:06)
- верить можно только холодному старту - Vit(07.10.2011 13:53)
- Подробнее можно? - mazur(07.10.2011 14:10)
- Если пришел теплый старт (сброс после холодного старта), то определить, на каком этапе выполнения программы это произошло с помощью аж кучи флагов в MCUSR в общем случае не представляется возможным. Т.е. всё-равно нужны танцы с бубном. - Vit(07.10.2011 15:53)
- MCUSR я использую только для того, чтобы понять, от чего произошел сброс. Так как последняя программа не так уж проста, я задействовал сторожевик и навтыкал кучу закладок. Это позволило мне на порядки быстрее искать косяки в программе. - mazur(07.10.2011 16:54)
- А в релизе чем это поможет? - Vit(07.10.2011 17:17)
- А в релизе кристалл в случае некорректной работы будет уходить в глухое зацикливание. Теплым стартом займусь позже, доверюсь Владимиру. При холодном старте старте инициализируется переменная. При теплом старте переменная покажет, что холодный mazur(53 знак., 07.10.2011 17:53, ссылка)
- Не был, а БЫВАЛ:) А "глухое зацикливание", ИМХО, обычно ассоциируется с неработающим устройством, звонящими заказчиками и сопутствующими проблемами. - Vit(07.10.2011 18:35 - 18:38, ссылка)
- Нужно мигать красной лампочкой 4 раза по 13 раз (код ошибки), пищать столько же раз, показывать синий (белый, чёрный...) экран смерти (если есть на чём) и перезапускаться с начала. После перезапуска нужно иметь возможность в уже работающей fk0(90 знак., 07.10.2011 18:41)
- Ну что-то такое и задумано. - mazur(07.10.2011 19:05)
- Нужно мигать красной лампочкой 4 раза по 13 раз (код ошибки), пищать столько же раз, показывать синий (белый, чёрный...) экран смерти (если есть на чём) и перезапускаться с начала. После перезапуска нужно иметь возможность в уже работающей fk0(90 знак., 07.10.2011 18:41)
- Не был, а БЫВАЛ:) А "глухое зацикливание", ИМХО, обычно ассоциируется с неработающим устройством, звонящими заказчиками и сопутствующими проблемами. - Vit(07.10.2011 18:35 - 18:38, ссылка)
- А в релизе кристалл в случае некорректной работы будет уходить в глухое зацикливание. Теплым стартом займусь позже, доверюсь Владимиру. При холодном старте старте инициализируется переменная. При теплом старте переменная покажет, что холодный mazur(53 знак., 07.10.2011 17:53, ссылка)
- А в релизе чем это поможет? - Vit(07.10.2011 17:17)
- MCUSR я использую только для того, чтобы понять, от чего произошел сброс. Так как последняя программа не так уж проста, я задействовал сторожевик и навтыкал кучу закладок. Это позволило мне на порядки быстрее искать косяки в программе. - mazur(07.10.2011 16:54)
- Если пришел теплый старт (сброс после холодного старта), то определить, на каком этапе выполнения программы это произошло с помощью аж кучи флагов в MCUSR в общем случае не представляется возможным. Т.е. всё-равно нужны танцы с бубном. - Vit(07.10.2011 15:53)
- Подробнее можно? - mazur(07.10.2011 14:10)
- верить можно только холодному старту - Vit(07.10.2011 13:53)
- Да уже разобрались, нужен сброс или нет. :) MCUSR и использую. - mazur(07.10.2011 13:06)
- Так, на личности не нужно переходить. Согласен, забыл, что есть устройства работающие от сброса. Но это изначально заложено в устройство. И приняты соответствующие меры. - mazur(06.10.2011 11:18)
- Хм, опять не прав :) Я вводил эту фичу как раз из-за ESD. Помеха прошла, устройство сбросилось и дальше работает. - Vladimir Ljaschko(06.10.2011 12:39)
- Если не секрет, как вы это решили? Я как-то пробовал заняться этим вопросом. Один электронщик мне рассказывал, что сохранял нужные данные в EEPROM. Хорошо, пусть так. Но сброс может произойти в момент записи. Косяк. Поэкспериментировать с помехами mazur(169 знак., 06.10.2011 13:07)
- Эксперименты показали, что ОЗУ сохраняет данные, иначе шансов обеспечить быстрое(практически незаметное для пользователя) восстановление нет. - Vladimir Ljaschko(06.10.2011 13:23)
- Спасибо. - mazur(06.10.2011 13:36)
- Все-таки ОЗУ... Наметки были такие. Проверка\инициализация значения в ОЗУ. - mazur(06.10.2011 13:35)
- Эксперименты показали, что ОЗУ сохраняет данные, иначе шансов обеспечить быстрое(практически незаметное для пользователя) восстановление нет. - Vladimir Ljaschko(06.10.2011 13:23)
- Если не секрет, как вы это решили? Я как-то пробовал заняться этим вопросом. Один электронщик мне рассказывал, что сохранял нужные данные в EEPROM. Хорошо, пусть так. Но сброс может произойти в момент записи. Косяк. Поэкспериментировать с помехами mazur(169 знак., 06.10.2011 13:07)
- Хм, опять не прав :) Я вводил эту фичу как раз из-за ESD. Помеха прошла, устройство сбросилось и дальше работает. - Vladimir Ljaschko(06.10.2011 12:39)
- :) Недавно девайс выпустил на C8051F130, уходящем штатно в режим STOP. Из STOP "будится" только ресетом. И то, что касается функциональности, не нужно смешивать со своим отчаянным пониманием прихода северного пушного зверька - Vit(06.10.2011 11:14)
- Только не нужно глубокомысленных советов. Знаю как минимум два устройства, выпущенных около 10К, работающих после сброса и одно из устройств - мое ;) - Vladimir Ljaschko(06.10.2011 10:14)
- Это не "глубокомысленный совет", а мое мнение. - mazur(06.10.2011 10:17)
- Сбросы бывают разные. Надо посмотреть в MCUSR, разобраться. "нечего устройству дальше работать", а устройство - усилитель тормоза, или руля... - maik-vs(07.10.2011 13:04)
- Ну, обычно при запуске программы все необходимые регистры инициализируются требуемыми значениями. Bill(10 знак., 06.10.2011 07:26)
- Да, особенно вот в таких операциях 24/16 32*8 Y*2^X где Y и X тоже надо еще вычислить и Y - отнюдь не 8 бит. ilyaul(263 знак., 07.10.2011 13:45)
- Опять же, зачем тебе очистка регистров? Если необходимые регистры инициализируются перед использованием. - mazur(08.10.2011 08:52)
- Да, особенно вот в таких операциях 24/16 32*8 Y*2^X где Y и X тоже надо еще вычислить и Y - отнюдь не 8 бит. ilyaul(263 знак., 07.10.2011 13:45)
- Ты и туалетную бумагу перед употреблением небось стираешь? - MBedder(06.10.2011 04:40)
- :))) - mazur(06.10.2011 09:41)
- Основные аргументы высказаны. Остается добавить. Если произошел сброс-это уже ненормально. И если сброс произошел, то и нечего устройству дальше работать, пока не поубивало кого-нибудь. Нужно понять почему. Если косяк программы-написать функции mazur(133 знак., 06.10.2011 09:49)
- В отличие от Studio которая автоматом чистит все регистры и память при запуске или по RESET - в жизни этого не происходит. Поэтому если у Вас произошёл RESET по какому-то условию , то в регистрах может сохраниться информация . И если у Вас есть ilyaul(92 знак., 05.10.2011 12:23)
- У меня так: mazur(2731 знак., 05.10.2011 01:51)
- А можно узнать, зачем запоминать контекст в программе на ассемблере?! maik-vs(1677 знак., 05.10.2011 11:19)
- В очистке регистров, кстати, я так и не увидел никакого смысла. Только лишнюю работу выполняет и память занимает этот макрос. Хотя, может, у вас свои соображения... - mazur(05.10.2011 01:56)
- ++. Ещё в AVR Studio можно сделать цветную подсветку. Я сделал жёлтый фон для макросов, сразу их видно: maik-vs(30.09.2011 08:33 - 08:35)
- Класс! - mazur(05.10.2011 11:39)
- Как ты сделал подсветку макросов? - mazur(04.10.2011 23:52)
- Есть файл AvrStudio_asm.ini, там всё, разберёшься. maik-vs(94 знак., 05.10.2011 11:29)
- Можно как-то так: Лeoнид Ивaнoвич(434 знак., 05.10.2011 11:06)
- Да уж, используя возможности AvrStudio_asm.ini можно сделать картинку "радостней" ilyaul(05.10.2011 11:44)
- Что только народ не делает, чтобы на Си не писать :-) - amusin(05.10.2011 12:09)
- Ассемблер тоже иногда нужен. Вот и сейчас на нем пишу для PWM3. Но это лишь сопроцессор, основной процессор, который реализует интерфейс пользователя, конечно будет на Си. - Лeoнид Ивaнoвич(05.10.2011 13:53)
- Да я шуткую. Ваш код и MBedder'а даже приятно смотреть :-) - amusin(05.10.2011 13:57)
- Ассемблер тоже иногда нужен. Вот и сейчас на нем пишу для PWM3. Но это лишь сопроцессор, основной процессор, который реализует интерфейс пользователя, конечно будет на Си. - Лeoнид Ивaнoвич(05.10.2011 13:53)
- Что только народ не делает, чтобы на Си не писать :-) - amusin(05.10.2011 12:09)
- [ColorGroups] mazur(484 знак., 05.10.2011 11:32)
- Да, про ColorGroups я забыл сказать, тоже нужно добавить. - Лeoнид Ивaнoвич(05.10.2011 13:36)
- У! О как! О_О - mazur(05.10.2011 11:23)
- Да уж, используя возможности AvrStudio_asm.ini можно сделать картинку "радостней" ilyaul(05.10.2011 11:44)
- ассемблерщиков-то еше валом вокруг оказывается... - Snaky(30.09.2011 08:37)
- Дык :-) maik-vs(207 знак., 30.09.2011 08:48)
- Я пользую в Сях "одноразовые" макросы, например, для обзывания каких-либо действий "человеческими словами", для дальнейшей возможности переназначения платформенно/аппаратно-зависимых участков - Vit(29.09.2011 08:52)
- Речь об ассемблере и о многострочных макросах - MBedder(29.09.2011 09:58)
- Многострочный макрос -- это шаблон (в терминах C++). - fk0(07.10.2011 21:29)
- в первом приближении эти куски могут быть использованы в других проектах. хотя функции, ИМХО, в большинстве случаев предпочтительнее - Vit(29.09.2011 11:36)
- Ога, во всех проектах одинаково запускать таймер :) - MBedder(29.09.2011 14:20)
- и так бывает - Vit(29.09.2011 15:29)
- Ога, во всех проектах одинаково запускать таймер :) - MBedder(29.09.2011 14:20)
- Речь об ассемблере и о многострочных макросах - MBedder(29.09.2011 09:58)
- Какой смысл делать одноразовые МНОГОСТРОЧНЫЕ макросы, применяемые в проекте лишь единожды? Вот для примера один из моих универсальных макрофайлов, включаемый в РАЗНЫЕ проекты: MBedder(10056 знак., 29.09.2011 01:29)
- А вот ты про что... Ясно. Если он в программе один, то один. Если нужен не раз, значит подпрограмма. - mazur(28.09.2011 20:02)
- Если "он" в программе один, то и нехуй из "него" городить макрос - пиши просто код - MBedder(28.09.2011 20:05)
- интересно, почему должны? - Vit(29.09.2011 00:03)
- А ты и так пишешь каждый раз, и не одно и то же, а разное - вместо того, чтобы писать rcall TIMER1_init или rcall TIMER2_init. Пойми одно - макросы должны быть универсальными, а не одноразовыми - MBedder(28.09.2011 19:59 - 20:03)