Змінюй хід війни! Допомагай ЗСУ!

Хочу попробовать освоить микропроцессоры. Поможете советами?

🔴 15:10 Повітряна тривога в Харків.обл.
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #141
1-wire это не библиотке, а интерфейс. И он не предназначен для связи контроллеров между собой. Для этого есть более простые и удобные способы: SPI, I2C, UART. 1-wire для периферии от которой не требуется много информации и большой скорости. Датчики, электронные ключи, и прочее.
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #142
Ну, в данном случае мне важен не результат, а процесс ;-) так что вариант специалистов - не выход.

Ок. Смотри в сторону дифференциальных шин.
Таких шин на данный момент имеется 2 основных вида с подвидами.
Более дешевые (на основе UART) - RS485, RS422 (это 2 RS485 - полный дуплекс для мастера. 485 - все абоненты висят паралельно, а значит нужна синхронизация, чтобы не мешались )
Дороже, но с нормальными скоростями - LVDS.

P.S. Для высоконадежного обмена есть ещё CAN, но не думаю, что он тебе надо.
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #143
Апну темку.
Немного разобрался с проектом Ардуино.
Для тех, кто будет наступать на грабли - буду рад помочь советом.
Есть несколько моментов, которые надо учитывать:
1. Ардуиновский софт очень криво работает с прошивкой микросхем по ISP. Особенно, младших моделей. Сторонний софт (у меня ПониПрог) решает эту проблему.
2. Прошивок (бутлоадеров) есть две. Причем, обе входят в комплект поставки. Основная - большая и тормознутая. порядка 1 кб. и 8 секунд старта. Вторая (optiboot) - в два раза меньше и стартует сразу. Но! Не смотря на то, что прошивки есть в комплекте, надо править ручками файлы.
3. Начиная с варианта UNO - стоит уже продвинутый бутлоадер
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #144
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #145
На Ардуиновские кривые грабли тут наступать никто не будет :)

Ну, можно было мне это тактичнее сказать, нарисовать, например ;-)
142613.jpg


Кстати, вопрос уже в тему...
Есть программка. Есть нех-файл.
В ардуино я загружаю его через ее интерфейс и не вникаю в детали. Загрузчик сам передает ей управление и т.д.
Если я буду работать без загрузчика (мне как раз чуток памяти не хватает), я должен сам отслеживать адрес, с которого начинается выполнение программы?! Где-то его указывать? Или там по умолчанию старт идет с начала, с какого-то адреса?!
Порылся в научно-популярных описаниях фьюзов, но, то ли не заметил, то ли не там рылся, но не увидел, где там адрес прошивается?
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #146
Адрес старта шьется вместе с таблицей прерываний начиная с нулевого адреса.
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #147
Не обижайся, я не со зла. Просто Ардуина как кривой конструктор нелюбима многими. И мной в частности.

Если прошивку шьешь программатором, то адрес программы начинается с нуля. Бутлоадер сидит по адресу определяемому настройками фьюзов.
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #148
Не обижайся, я не со зла. Просто Ардуина как кривой конструктор нелюбима многими. И мной в частности.
Да я и не обижаюсь ;) Я уже тоже начинаю видеть в ней грабли...
Но пока я уже влез, хочу доделать то, что начал... Из очередного примера.
Есть АЦП на борту. Получаю с него число. Перевожу в напряжение *(5/1023) (пять вольт, 10 бит). переменная напряжения - с плавающей точкой... На выходе - болт. Танцы с бубном, разбор примеров. Обращаю внимание, что в примерах написано *(5/1023,0) Добавляю запятую и ноль - все работает... Сижу, думаю, матерюсь тихо... ;-)

Если прошивку шьешь программатором, то адрес программы начинается с нуля. Бутлоадер сидит по адресу определяемому настройками фьюзов.
переформулирую. Если буду использовать другой софт, мне надо будет этим озадачиваться? Или компилятор это делает сам?
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #149
Из очередного примера.
Есть АЦП на борту. Получаю с него число. Перевожу в напряжение *(5/1023) (пять вольт, 10 бит). переменная напряжения - с плавающей точкой... На выходе - болт. Танцы с бубном, разбор примеров. Обращаю внимание, что в примерах написано *(5/1023,0) Добавляю запятую и ноль - все работает... Сижу, думаю, матерюсь тихо... ;-)
Ардуина тут не при чем. Учите С и преобразование типов ;)
переформулирую. Если буду использовать другой софт, мне надо будет этим озадачиваться? Или компилятор это делает сам?
Обычно сам.
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #150
переформулирую. Если буду использовать другой софт, мне надо будет этим озадачиваться? Или компилятор это делает сам?
Сначала надо будет отключить бутлодырь,сняв галку с фьюза BOORST.
Если будешь писать на асме,то в таблице прерываний для вектора RESET прописываешь jmp на метку начала выполнения программы,если в С - выполнение программы начнется с main(), но до этого компилер может воткнуть в код функцию чистки секции .bss (ОЗУ).
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #151
Ну, можно было мне это тактичнее сказать, нарисовать, например ;-)
142613.jpg
Нет, диод тут не причем. Он имел ввиду, что тут тусят люди, уоторые платки по сложнее ардуино сами клепали и клепают.
У нас не найти советов по ардуине, так как мы не юзеры - мы креаторы :) Мы не покупаем готовые поделки втридорога - мы их сами делаем :) Потому граблей у нас своих хватает и отвлекаться на дураино нам просто уже впадлу :D

Если понадобится хороший бутлоадер - обназательно обращусь :)
Если начнешь играться с GSM-модемом на SIM900A с залоченой прошивкой под Азию - обращайсо :)

Сначала надо будет отключить бутлодырь,сняв галку с фьюза BOORST.
Если будешь писать на асме,то в таблице прерываний для вектора RESET прописываешь jmp на метку начала выполнения программы,если в С - выполнение программы начнется с main(), но до этого компилер может воткнуть в код функцию чистки секции .bss (ОЗУ).

А зачем ему отключать лодыря, если он шить через него собирается?
Если через ISP - конечно придётся. А так - какая разница какой лодырь, или у ардуины какой-то свой взгляд на мир и их лодырь не подходит?

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

Адрес программы начинается не с нуля, а с директивы org (если это асм).
В С тоже настраивается как-то, но я лодерами не шью и не знаю как :)

Сначала надо будет отключить бутлодырь,сняв галку с фьюза BOORST.
Если будешь писать на асме,то в таблице прерываний для вектора RESET прописываешь jmp на метку начала выполнения программы,
Это в любом случае делается, независимо от оффсета адреса начала.

если в С - выполнение программы начнется с main(), но до этого компилер может воткнуть в код функцию чистки секции .bss (ОЗУ).
Он и воткнет, если не отключить специально. И правильно воткнет - я возрадовался, когда на нее наткнулся. В асме я сам её писал :)
Правда у меня в асме короче получалось, скорость старта не климатит вообще, она однопенисуально быстрая, так как ОЗУ мало.

А вот как компилер в С заставлять учитывать бутлоадер - мне тоже интересно. Ни когда этого не делал.
Не проясните тему для общего развития?
 
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #152
В CodeVision визард тебя сам спрашивает что ты пишешь апликейшн или лоадер, потом потребует еще от тебя максимальный размер планируемого лоадера потому как потом в скомпиленый асм-файл вставляет директиву .org с правильным адресом. Естеесно юзер сам должен правильно настроить фьюзы, чтоб при старте ты ввалился на этот адрес и начал выполнятся код лоадера. Лоадер шьется в дно памяти, то есть откусывается под него кусок в 512, 1кб 2к. Как пожелаешь.
В апликейшне можно хоть непосредственно прыгнуть на адрес лоадера (инлайн асм команда), можно обявить лоадер функцией и взять на нее указатель (адрес лоадера), можно включить сторожевую псину и через while(1) ждать пока проц ресетнется и сам стартанет с лоадера. Как то так. Если нужен будет готовый лоадер, обращайся их есть у меня. Писал его с расчетом на RS-422/485. Кодом софтины загрузчика тоже поделюсь. Писано в шестом билдере.

ЗЫ. Сейчас у меня сделано так: плата стартует, лоадер лезет в ЕЕПРОМ и смотрит наличие флага смены ПО. Если такового не имеется, передаем управление основной программе, если есть, ловим код пачками и прошиваемся.

Нет, диод тут не причем. Он имел ввиду, что тут тусят люди, уоторые платки по сложнее ардуино сами клепали и клепают.
В точку! :клас:
 
Останнє редагування:
  • 🔴 15:10 Повітряна тривога в Харків.обл.
  • #155
Возможно,но я как-то не юзал такое.
В принципе,все зависит от скрипта линкера,хоть в гцц,хоть в яре,хоть в космике - ведь он раскладывает код по полкам.
 
Назад
Зверху Знизу