поезд из А движется пока из басейна вытекает... BLINK
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: поезд из А движется пока из басейна вытекает... BLINK
Газзель!, такие длинные "портянки" положено прятать под спойлер.
возможность редактирования поста истекает через 1 сутки.
возможность редактирования поста истекает через 1 сутки.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Реклама
Re: поезд из А движется пока из басейна вытекает... BLINK
Чему бы хорошему учиться! Так нет - давай галиматню печатать.) Газзель, ведь есть же классика - блинк, начни с неё. Затем уменьши, а если хочешь изгальнуться, продолжни на ассемблере. Ну только не так как, потому что у тебя это почти как в машинных кодах. А главное, заради чего!
Re: поезд из А движется пока из басейна вытекает... BLINK
OKF, так он и делает блинк 
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: поезд из А движется пока из басейна вытекает... BLINK
Я обещал пример. Сейчас крайне занят. В проекте конечные автоматы. Посмотри. Это даст тебе представление.
- Вложения
-
- CNT_CYCLES_VER_5.rar
- (22.03 КБ) 55 скачиваний
Re: поезд из А движется пока из басейна вытекает... BLINK
[uquote="Martian",url="/forum/viewtopic.php?p=4547708#p4547708"]OKF, так он и делает блинк
[/uquote]
Так я то вижу! Блинк через жопу. Это можно. Но через жопу и всё остальное. Палата номер 6.( Удачи! Иначе и я туда же.
Так я то вижу! Блинк через жопу. Это можно. Но через жопу и всё остальное. Палата номер 6.( Удачи! Иначе и я туда же.
- Реклама
Re: поезд из А движется пока из басейна вытекает... BLINK
Я вот только одного не пойму...
Ежли у индивидума желание организовать задержки на основе времени исполнения команд, то на кой ляд дергать все биты порта МК при том, что требуется менять статус только одного бита того порта?
Ведь просто остаточно выбрать наиболее длинную по времени выполнения команду да запускать ее пачками с нужной длиной (расходуя ресурс ПЗУ), а уж по окончании каждой пачки инвертировать выходной сигнал. Без всякого излишнего изврата.
Это ежли циклические счетчики на регистрах вероисповедание использовать не позволяет.
Только вот... у аруинки-нанки при тактовой частоте 16МГц время исполнения одноцикловой команды будет 0,0000000625 секунды, а время восприятия глаза хотя бы 0,1-0,2 секунды.
Это сколько ж команд(написать в тексте исходника) надобно то будет?...

Ежли у индивидума желание организовать задержки на основе времени исполнения команд, то на кой ляд дергать все биты порта МК при том, что требуется менять статус только одного бита того порта?
Ведь просто остаточно выбрать наиболее длинную по времени выполнения команду да запускать ее пачками с нужной длиной (расходуя ресурс ПЗУ), а уж по окончании каждой пачки инвертировать выходной сигнал. Без всякого излишнего изврата.
Это ежли циклические счетчики на регистрах вероисповедание использовать не позволяет.
Только вот... у аруинки-нанки при тактовой частоте 16МГц время исполнения одноцикловой команды будет 0,0000000625 секунды, а время восприятия глаза хотя бы 0,1-0,2 секунды.
Это сколько ж команд(написать в тексте исходника) надобно то будет?...
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: поезд из А движется пока из басейна вытекает... BLINK
Проблема у ТС в голове. И давайте не будем плодить сущности. Тем более что у нас тема AVR.
Re: поезд из А движется пока из басейна вытекает... BLINK
BOB51, можно увеличить время, используя ресет
Re: поезд из А движется пока из басейна вытекает... BLINK
пишут что ресет обнуляет регистры, что ваще логично, но в даташите я в упор не вижу initial value
Добавлено after 11 minutes 48 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=4547313#p4547313"]книгу Вольфганг Трамперт "AVR-RISC Микроконтроллеры".[/uquote]
спасибо! Да, немного многовато подробностей, но кое что нашел. Я до этого смотрел Джон Мортон, понравился простотой, но со странностями. А еще ИИ Кочегаров и ВА Трусов. Все учебники примерно похожи, но чуть переформулированное изложение позволяет догадаться в чем дело сравниваю несколько вариантов.
нащет примера, вот как раз новичку проще открыть даташит и увидеть номер регистра, все. В примере я пытался запомнить что в дефайнах, но это только если сидеть и зубрить наизусть. В итоге пока я пытался разобраться в программе, я уже забывал что есть что
Добавлено after 11 minutes 48 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=4547313#p4547313"]книгу Вольфганг Трамперт "AVR-RISC Микроконтроллеры".[/uquote]
спасибо! Да, немного многовато подробностей, но кое что нашел. Я до этого смотрел Джон Мортон, понравился простотой, но со странностями. А еще ИИ Кочегаров и ВА Трусов. Все учебники примерно похожи, но чуть переформулированное изложение позволяет догадаться в чем дело сравниваю несколько вариантов.
нащет примера, вот как раз новичку проще открыть даташит и увидеть номер регистра, все. В примере я пытался запомнить что в дефайнах, но это только если сидеть и зубрить наизусть. В итоге пока я пытался разобраться в программе, я уже забывал что есть что
Re: поезд из А движется пока из басейна вытекает... BLINK
To make use of the reset flags to identify a reset condition, the user should read and then reset the MCUSR as early as
possible in the program.
Re: поезд из А движется пока из басейна вытекает... BLINK
[uquote="BOB51",url="/forum/viewtopic.php?p=4547816#p4547816"]у аруинки-нанки при тактовой частоте 16МГц время исполнения одноцикловой команды будет 0,0000000625 секунды, а время восприятия глаза хотя бы 0,1-0,2 секунды.[/uquote]
именно этим я и руководствовался, когда придумывал, что нужно от программы, и поэтому закладывал 3 ступени 256*256*256. Но факты говорят об обратном.
После того как я освободил первые 26 строк, где должны быть векторы прерываний, программа заработала стабильным меандром примерно 2Гц, может 3Гц, хотя сама программа получается должна быть = 1 регистр * кол-во строк программы
поправка, регистр откуда выводится в порт забыл, получается 256*128* (104 строк проги) = 1966080 горит, и столько же негорит.
Уже близко, но все равно где то в 2 раза быстрее, чем в реальности получилось
большая просьба, кому не лень, залейте, пожалуйста, у себя прогу, как быстро моргает диод? И работает ли ваще? Я не понимаю, почему по факту скорость моргания не соответствует указанной BOB51
Добавлено after 2 minutes 2 seconds:
Martian , вот жеж! я искал сводную таблицу
именно этим я и руководствовался, когда придумывал, что нужно от программы, и поэтому закладывал 3 ступени 256*256*256. Но факты говорят об обратном.
После того как я освободил первые 26 строк, где должны быть векторы прерываний, программа заработала стабильным меандром примерно 2Гц, может 3Гц, хотя сама программа получается должна быть = 1 регистр * кол-во строк программы
поправка, регистр откуда выводится в порт забыл, получается 256*128* (104 строк проги) = 1966080 горит, и столько же негорит.
Уже близко, но все равно где то в 2 раза быстрее, чем в реальности получилось
Код: Выделить всё
nop ; сюда приходят прерывания
nop ; которые я ващето не использую
nop ; однака...
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cli ; то же не знаю зачем
clr R16 ; вот теперь после nop эти clr не стопорят диод
clr R17 ; в чем разница все равно не понятно
clr R18
clr R19
clr R20
clr R21
clr R22
clr R23
clr R24
clr R25
clr R26
clr R27
clr R28
clr R29
clr R30
clr R31
nop ; кажись это строка 44
dec R16 ; здесь b7 будет 127раз 1 + 128й раз 1
inc R17 ; здесь b7 будет 127раз 0 + 128й раз 1
mov R31, R16 ; здесь в R31 и 0x1E будем
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
out 0x1E, R31 ; переворачивать b7 в b0
cbi 0x1E, 7
cbi 0x1E, 6
cbi 0x1E, 5
cbi 0x1E, 4
cbi 0x1E, 3
cbi 0x1E, 2
cbi 0x1E, 1
in R31, 0x1E ; перевернули
add R18, R31 ;здесь b7 сложится из 128раз
; перевернутых единиц R16 и перевернутых нулей R17
; а потом , после использования, вычтется из
; перевернутых нулей R16 и перевернутых единиц R17
mov R31, R18
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
out 0x1E, R31
cbi 0x1E, 7
cbi 0x1E, 6
cbi 0x1E, 5
cbi 0x1E, 4
cbi 0x1E, 3
cbi 0x1E, 2
cbi 0x1E, 1
in R31, 0x1E ;
add R21, R31 ; используем моргнувшие в R18 единички, складываем их
mov R31, R17 ; доделываем, не даем R18 мгновенно заполниться
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
asr R31
out 0x1E, R31
cbi 0x1E, 7
cbi 0x1E, 6
cbi 0x1E, 5
cbi 0x1E, 4
cbi 0x1E, 3
cbi 0x1E, 2
cbi 0x1E, 1
in R31, 0x1E
sub R18, R31 ; , доделали, после пользования моргнувшей
; в R18 единички 127 раз держим b7 в ноль
mov R31, R21
asr R31
asr R31 ; b7 зажигает pb5
sbi 0x04, 5
out 0x05, R31 ; по задумке должно 128 гореть и гаснуть
jmp 44 ; появился цикл, которого по задумке нужно было избежать
Добавлено after 2 minutes 2 seconds:
Martian , вот жеж! я искал сводную таблицу
- Вложения
-
- blibl2.hex
- (640 байт) 50 скачиваний
-
- blibl2.asm
- (1.88 КБ) 55 скачиваний
Последний раз редактировалось Газзель! Пн фев 26, 2024 15:05:52, всего редактировалось 1 раз.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: поезд из А движется пока из басейна вытекает... BLINK
Этта. ТС. Я сейчас скажу, и хотел бы, чтобы вы поняли правильно. Ассемблер такая штука. Никто не хочет смотреть в выкладывемые простыни кода. Исходи от другого. ТЗ. Что ты хочешь получить в целом. Где у тебя затруднения. И не лезь в ассемблер. Поясню. Всё пишут по разному. На основании своего опыта и текущего объёма знаний. И чтобы диалог был конструктивным. Нужно не кодами меряться, обмениваться. А постановкой задачи.
Re: поезд из А движется пока из басейна вытекает... BLINK
ну какой может быть диалог с человеком, который первый раз в жизни пишет блинк. Еслиб я понимал где у меня затруднения, яб уже разобрался.
Тогда просто помогите, и проверьте прогу на своих платках. Если это не нано, то sbi 0x04, 5 для DDRB и out 0x05, R31 для PB5
Тогда просто помогите, и проверьте прогу на своих платках. Если это не нано, то sbi 0x04, 5 для DDRB и out 0x05, R31 для PB5
Re: поезд из А движется пока из басейна вытекает... BLINK
Классический пример "как испортить готовую конструкцию"
В данном случае платку Ардуино нано...
(похоронный марш)...
В нанке по умолчанию зашит свой бутлоадер, разумеется с соответствующей начальной инициализацией по сигналу сброса (reset)... А тут вдруг мы запихиваем туда свою прошивку да под ассемблером ... И в добавок сносим таблицу векторов прерываний (но оставив бутлоадер).
В результате ни работоспособной нанки ни работоспособной самоделки.
ПЕЧАЛЬКА.
В даташитах имена регистров всегда указаны (производителем по умолчанию).
Русское описание АВРок весьма полное в книгах Белова (есть в СУНДУКЕ КОТА). Одна книга по тинькам, другая по мегам.
К сожалению там меги 328й нету - написаны те книжи достаточно давно.
Удобно читать параллельно с даташитами.

В данном случае платку Ардуино нано...
В нанке по умолчанию зашит свой бутлоадер, разумеется с соответствующей начальной инициализацией по сигналу сброса (reset)... А тут вдруг мы запихиваем туда свою прошивку да под ассемблером ... И в добавок сносим таблицу векторов прерываний (но оставив бутлоадер).
В результате ни работоспособной нанки ни работоспособной самоделки.
ПЕЧАЛЬКА.
В даташитах имена регистров всегда указаны (производителем по умолчанию).
Русское описание АВРок весьма полное в книгах Белова (есть в СУНДУКЕ КОТА). Одна книга по тинькам, другая по мегам.
К сожалению там меги 328й нету - написаны те книжи достаточно давно.
Удобно читать параллельно с даташитами.
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: поезд из А движется пока из басейна вытекает... BLINK
BOB51, чем тебе прошивка под ассемблером не нравится для ардуино-нано? или ты думаешь, что под С++ там совсем другая система команд - не такая как у ассемблера?
для бутлодера не существует таблицы векторов в начале флеши, так как в "пустой" флеши там вообще не прописаны адреса векторов.
а также бутлодер может перенести таблицу векторов в совсем другое место, в такое место, куда "не достанет" записываемая прошивка.
поэтому все твои ПЕЧАЛЬКИ ни о чём, так как без проблем будет работать прошивка под ассемблером и векторам ничего не будет мешать.
для бутлодера не существует таблицы векторов в начале флеши, так как в "пустой" флеши там вообще не прописаны адреса векторов.
а также бутлодер может перенести таблицу векторов в совсем другое место, в такое место, куда "не достанет" записываемая прошивка.
поэтому все твои ПЕЧАЛЬКИ ни о чём, так как без проблем будет работать прошивка под ассемблером и векторам ничего не будет мешать.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: поезд из А движется пока из басейна вытекает... BLINK
Starichok51, можно мне вклиниться?
Пофигу на чём писать, только пиши по нормальному, а не быдлокодь. Ты понимаешь? Без абсолютных адресов и прочей туфты. И нихрена у ТС-а не получится, не ту область он выбрал. Мой ему совет - бросай, не трать время.
Пофигу на чём писать, только пиши по нормальному, а не быдлокодь. Ты понимаешь? Без абсолютных адресов и прочей туфты. И нихрена у ТС-а не получится, не ту область он выбрал. Мой ему совет - бросай, не трать время.
Re: поезд из А движется пока из басейна вытекает... BLINK
Можно и быдлокодить, но для себя и не признаваться в этом никому 
Re: поезд из А движется пока из басейна вытекает... BLINK
Да. И дрочить можно. Не афишируя, естественно. Хотя...
А если серьёзно, нужно иметь лицо, перед тем, когда выставляешь свои бредни на всеобщее обозрение.
И после того, когда их прочтут люди.
А если серьёзно, нужно иметь лицо, перед тем, когда выставляешь свои бредни на всеобщее обозрение.
И после того, когда их прочтут люди.
Re: поезд из А движется пока из басейна вытекает... BLINK
Для того, чтобы корректно добавить свой тест-проект в какой-либо МК, имеющий свою собственную прошивку, нужно достаточно полную информацию и об имеющейся в МК резидентной программе иметь и о его соответствующей конфигурации. Это совершенно не зависит от того на каком языке совмещение программ делать.
Без учета того, что выполнено в исходной программе не получиться свой тест вставить. Как минимум "начальный след" в регистровом файле и в ОЗУ вполне вероятен, даже если таблица векторов не задействована. Далее... Бутлоадер явно конфигурирует ресурсы ввода-вывода (UART, вероятно сопутствующий таймер, указатель стека и может еще чего).
Если тест-программа этого не учитывает(не выполняет реконфигурацию при запуске) ошибки неизбежны.

Без учета того, что выполнено в исходной программе не получиться свой тест вставить. Как минимум "начальный след" в регистровом файле и в ОЗУ вполне вероятен, даже если таблица векторов не задействована. Далее... Бутлоадер явно конфигурирует ресурсы ввода-вывода (UART, вероятно сопутствующий таймер, указатель стека и может еще чего).
Если тест-программа этого не учитывает(не выполняет реконфигурацию при запуске) ошибки неизбежны.
Re: поезд из А движется пока из басейна вытекает... BLINK
ну яж не первый такой. У других работает. бутлодер не дает фьюзы изменить, но прогу с использованием прерываний можно загружать.
В моей проге не используются никакие ресурсы, что они сконфигурированы , что нет - только сложить/вычесть и перевернуть b7 в b0, все. Даже наоборот, мне все лишние ресурсы нужно подавить.
Собственно прога то работает, а в изначальной проге я круто просчитался с задержкой и заложил много ступеней, причем одну ваще и не собирался, и получилось 256*256*256*256*128* 227строк = 124794569752576 тиков = 7799660,6сек = 2166 часов. Вооощем 16мгц не так уж и много.
Однако интересна именно первоначальная ошибочная прога, тк диод мерцает и иногда гаснет с определенной закономерностью. А поскольку никакие специальные ресурсы и функции не используются, то это должно что то говорить о принципах работы или портов или контроллера ваще
В моей проге не используются никакие ресурсы, что они сконфигурированы , что нет - только сложить/вычесть и перевернуть b7 в b0, все. Даже наоборот, мне все лишние ресурсы нужно подавить.
Собственно прога то работает, а в изначальной проге я круто просчитался с задержкой и заложил много ступеней, причем одну ваще и не собирался, и получилось 256*256*256*256*128* 227строк = 124794569752576 тиков = 7799660,6сек = 2166 часов. Вооощем 16мгц не так уж и много.
Однако интересна именно первоначальная ошибочная прога, тк диод мерцает и иногда гаснет с определенной закономерностью. А поскольку никакие специальные ресурсы и функции не используются, то это должно что то говорить о принципах работы или портов или контроллера ваще


