Обсуждаем контроллеры компании Atmel.
Ответить

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 16:59:42

Газзель!, такие длинные "портянки" положено прятать под спойлер.
возможность редактирования поста истекает через 1 сутки.

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 19:14:39

Чему бы хорошему учиться! Так нет - давай галиматню печатать.) Газзель, ведь есть же классика - блинк, начни с неё. Затем уменьши, а если хочешь изгальнуться, продолжни на ассемблере. Ну только не так как, потому что у тебя это почти как в машинных кодах. А главное, заради чего!

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 19:21:45

OKF, так он и делает блинк :)))

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 19:22:49

Я обещал пример. Сейчас крайне занят. В проекте конечные автоматы. Посмотри. Это даст тебе представление.
Вложения
CNT_CYCLES_VER_5.rar
(22.03 KiB) Скачиваний: 16

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 20:30:23

OKF, так он и делает блинк :)))

Так я то вижу! Блинк через жопу. Это можно. Но через жопу и всё остальное. Палата номер 6.( Удачи! Иначе и я туда же.

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 21:56:18

Я вот только одного не пойму...
Ежли у индивидума желание организовать задержки на основе времени исполнения команд, то на кой ляд дергать все биты порта МК при том, что требуется менять статус только одного бита того порта?
Ведь просто остаточно выбрать наиболее длинную по времени выполнения команду да запускать ее пачками с нужной длиной (расходуя ресурс ПЗУ), а уж по окончании каждой пачки инвертировать выходной сигнал. Без всякого излишнего изврата.
Это ежли циклические счетчики на регистрах вероисповедание использовать не позволяет.
Только вот... у аруинки-нанки при тактовой частоте 16МГц время исполнения одноцикловой команды будет 0,0000000625 секунды, а время восприятия глаза хотя бы 0,1-0,2 секунды.
Это сколько ж команд(написать в тексте исходника) надобно то будет?...
:tea:

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 22:08:37

Проблема у ТС в голове. И давайте не будем плодить сущности. Тем более что у нас тема AVR.

Re: поезд из А движется пока из басейна вытекает... BLINK

Вс фев 25, 2024 22:20:22

BOB51, можно увеличить время, используя ресет

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 06:33:19

пишут что ресет обнуляет регистры, что ваще логично, но в даташите я в упор не вижу initial value

Добавлено after 11 minutes 48 seconds:
книгу Вольфганг Трамперт "AVR-RISC Микроконтроллеры".


спасибо! Да, немного многовато подробностей, но кое что нашел. Я до этого смотрел Джон Мортон, понравился простотой, но со странностями. А еще ИИ Кочегаров и ВА Трусов. Все учебники примерно похожи, но чуть переформулированное изложение позволяет догадаться в чем дело сравниваю несколько вариантов.

нащет примера, вот как раз новичку проще открыть даташит и увидеть номер регистра, все. В примере я пытался запомнить что в дефайнах, но это только если сидеть и зубрить наизусть. В итоге пока я пытался разобраться в программе, я уже забывал что есть что

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 06:37:16

Изображение
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

Пн фев 26, 2024 06:52:50

у аруинки-нанки при тактовой частоте 16МГц время исполнения одноцикловой команды будет 0,0000000625 секунды, а время восприятия глаза хотя бы 0,1-0,2 секунды.


именно этим я и руководствовался, когда придумывал, что нужно от программы, и поэтому закладывал 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 ; появился цикл, которого по задумке нужно было избежать




большая просьба, кому не лень, залейте, пожалуйста, у себя прогу, как быстро моргает диод? И работает ли ваще? Я не понимаю, почему по факту скорость моргания не соответствует указанной BOB51

Добавлено after 2 minutes 2 seconds:
Martian , вот жеж! я искал сводную таблицу
Вложения
blibl2.hex
(640 байт) Скачиваний: 9
blibl2.asm
(1.88 KiB) Скачиваний: 9
Последний раз редактировалось Газзель! Пн фев 26, 2024 15:05:52, всего редактировалось 1 раз.

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 10:21:25

Этта. ТС. Я сейчас скажу, и хотел бы, чтобы вы поняли правильно. Ассемблер такая штука. Никто не хочет смотреть в выкладывемые простыни кода. Исходи от другого. ТЗ. Что ты хочешь получить в целом. Где у тебя затруднения. И не лезь в ассемблер. Поясню. Всё пишут по разному. На основании своего опыта и текущего объёма знаний. И чтобы диалог был конструктивным. Нужно не кодами меряться, обмениваться. А постановкой задачи.

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 12:59:59

ну какой может быть диалог с человеком, который первый раз в жизни пишет блинк. Еслиб я понимал где у меня затруднения, яб уже разобрался.

Тогда просто помогите, и проверьте прогу на своих платках. Если это не нано, то sbi 0x04, 5 для DDRB и out 0x05, R31 для PB5

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 15:26:51

Классический пример "как испортить готовую конструкцию"
В данном случае платку Ардуино нано...
:cry: (похоронный марш)...
В нанке по умолчанию зашит свой бутлоадер, разумеется с соответствующей начальной инициализацией по сигналу сброса (reset)... А тут вдруг мы запихиваем туда свою прошивку да под ассемблером ... И в добавок сносим таблицу векторов прерываний (но оставив бутлоадер).
В результате ни работоспособной нанки ни работоспособной самоделки.
ПЕЧАЛЬКА.
:sleep:
В даташитах имена регистров всегда указаны (производителем по умолчанию).
Русское описание АВРок весьма полное в книгах Белова (есть в СУНДУКЕ КОТА). Одна книга по тинькам, другая по мегам.
К сожалению там меги 328й нету - написаны те книжи достаточно давно.
Удобно читать параллельно с даташитами.
8)

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 15:41:04

BOB51, чем тебе прошивка под ассемблером не нравится для ардуино-нано? или ты думаешь, что под С++ там совсем другая система команд - не такая как у ассемблера?
для бутлодера не существует таблицы векторов в начале флеши, так как в "пустой" флеши там вообще не прописаны адреса векторов.
а также бутлодер может перенести таблицу векторов в совсем другое место, в такое место, куда "не достанет" записываемая прошивка.
поэтому все твои ПЕЧАЛЬКИ ни о чём, так как без проблем будет работать прошивка под ассемблером и векторам ничего не будет мешать.

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 15:55:00

Starichok51, можно мне вклиниться?
Пофигу на чём писать, только пиши по нормальному, а не быдлокодь. Ты понимаешь? Без абсолютных адресов и прочей туфты. И нихрена у ТС-а не получится, не ту область он выбрал. Мой ему совет - бросай, не трать время.

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 15:57:53

Можно и быдлокодить, но для себя и не признаваться в этом никому ;)

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 16:06:33

Да. И дрочить можно. Не афишируя, естественно. Хотя...
А если серьёзно, нужно иметь лицо, перед тем, когда выставляешь свои бредни на всеобщее обозрение.
И после того, когда их прочтут люди.

Re: поезд из А движется пока из басейна вытекает... BLINK

Пн фев 26, 2024 16:52:20

Для того, чтобы корректно добавить свой тест-проект в какой-либо МК, имеющий свою собственную прошивку, нужно достаточно полную информацию и об имеющейся в МК резидентной программе иметь и о его соответствующей конфигурации. Это совершенно не зависит от того на каком языке совмещение программ делать.
Без учета того, что выполнено в исходной программе не получиться свой тест вставить. Как минимум "начальный след" в регистровом файле и в ОЗУ вполне вероятен, даже если таблица векторов не задействована. Далее... Бутлоадер явно конфигурирует ресурсы ввода-вывода (UART, вероятно сопутствующий таймер, указатель стека и может еще чего).
Если тест-программа этого не учитывает(не выполняет реконфигурацию при запуске) ошибки неизбежны.
8)

Re: поезд из А движется пока из басейна вытекает... BLINK

Вт фев 27, 2024 05:43:53

ну яж не первый такой. У других работает. бутлодер не дает фьюзы изменить, но прогу с использованием прерываний можно загружать.

В моей проге не используются никакие ресурсы, что они сконфигурированы , что нет - только сложить/вычесть и перевернуть b7 в b0, все. Даже наоборот, мне все лишние ресурсы нужно подавить.

Собственно прога то работает, а в изначальной проге я круто просчитался с задержкой и заложил много ступеней, причем одну ваще и не собирался, и получилось 256*256*256*256*128* 227строк = 124794569752576 тиков = 7799660,6сек = 2166 часов. Вооощем 16мгц не так уж и много.

Однако интересна именно первоначальная ошибочная прога, тк диод мерцает и иногда гаснет с определенной закономерностью. А поскольку никакие специальные ресурсы и функции не используются, то это должно что то говорить о принципах работы или портов или контроллера ваще
Ответить