Перейти к содержанию

Школа Молодого Бойца


Рекомендуемые сообщения

Я тут почитал посты, и решил внести свои 5 копеек. В начале поста стоял бурная дискуссия, про выбор языка. То есть какой язык выбрать, с стартового изучения (с нуля), каждый одеяла тянул на себя (отстаивал тот или иной язык). Я, к примеру, тоже новичок, как-то пробывал изучать пики, ну в силу жизненных обстоятельств, вынужден был прикроить, вот сейчас хочу начать опять изучать. Так предпочтительный язык для новичка я считаю так это ассемблер!!! На счет языка СИ, да этот язык круче ассемблера, даже есть такая цитата "зачем рыть яму ложкой (ассемблером), если можно возять лопату (CИ)" примерно вот так вот было написано. Я как-то давно находил, на просторах всемирной паутины DC вольтаметр, написанный на СИ и на ассемблере, так вот на ассемблер программа вольтметра была написано на 1,5 листа А4, а на СИ всего 4 строчки. У меня есть один знакомый программист, он пишет на СИ под AVR, как он мне говорит, найти ошибку в программе, написанной на СИ, очень сложно. Просто на ассемблере все очень чательно расписано как программа работает с МК, то есть все разложено по полочкам (как двигатель машины в разрезе). Тут опять, есть разные люди и по разному воспринимают информацию, кто-то с первого раза понимает, а кому-то надо и 10 раз сказать, чтобы он понял, так и с языком, кто-то на СИ хорошо стартует, а кто-то и нет, так что я рекомендую начинать с языка ассемблера. Тут еще был один вопрос, какой проект начать, я начинал, к примеру, и буду продолжать, обучения или изучения на PIC16F628, хотя большинство примеров написано под PC16F84, ну разница между ними очень маленькая, к примеру, PIC16F628 на много дешевил и у него расширенней возможности, чем у PIC16F84. Мой самый первый проект (обучающий), был на светодиодах, сначала я просто зажигал светодиоды (настраивал порты ввода\вывода на выход), потом увеличивал сложность программы, заставлял эти светодиодики моргать, достаточно понять программно как реализовывается моргания между 2 светодиодами (один тухни, другой загорается), там и нетрудно задействовать все порты вводв\вывод и написать определенный алгаритем программы, чтобы получить самую простую светомузыку. Да и самое главное, это ЖЕЛАНИЕ!!! Без этого не чего не получиться. Мое мнения, что для начала надо изучит ассемблер, а потом можно покорять и Эверест (СИ). P.S. сколько людей, столько и мнений.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 75
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Единственное чем язык высокого уровня помогает писать программы на контроллерах, так это строить сложные конструкции вроде IF-THEN-ELSE или CASE...

А уже для мощных контроллеров типа ARM предпочтительно использовать языки высокого уровня.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

Что можно сказать еще. Ассемблер - рутинный язык. Но он позволяет очень много понять в работе МК и схемы в целом. С его помощью можно сделать все, пусть по времени это займет больше времени, чем на Си (хотя это еще не факт и сильно зависит от уровня знаний программиста). Замечу Alexeyslav-у, что конструкции IF-THEN-ELSE или CASE в ассемблере строятся довольно легко и не являются решающим фактором в выборе языка.

Си - "ленивый" (в хорошем смысле) язык. Он прячет от программиста всю рутину и позволяет создавать программу быстрее. Хотя спешка нужна только в трех случаях, иначе придется сэкономленное время тратить на поиск ошибок алгоритма. "Бедность" Си закючается в необходимости "подкармливать" его библиотеками для работы с нестандартной периферией, а если с наличием необходимой библиотеки проблемы - тогда тормоз и поиск в Нете.

Длина листинга программы, как заметил MAKDOS на Ассемблере кажется большей лишь потому, что на Ассемблере пишется ВЕСЬ текст программы (хотя можно использовать вставку блока из личных наработок методом Ctr+V), а на Си лошадиная доля листинга "прячется" в подключаемых библиотеках, наработанных ранее. Но, как правило, после компиляции в hex. этот "перевес" переходит на другую сторону. 

Совет начинающим. Учите оба языка - пригодятся.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Единственное чем язык высокого уровня помогает писать программы на контроллерах, так это строить сложные конструкции вроде IF-THEN-ELSE или CASE...

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

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Давайте не будем опять вступать в споры. Это же школа молодого бойца. Такие "страшные" вещи начинающим очень трудно понять, а про реализацию и говорить не приходится. МК простейшие, задачи еще проще. Спокойней братцы, не спугните начинающих. :)

Ссылка на комментарий
Поделиться на другие сайты

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Сложно себе представить реальные задачи где необходимы эти все вещи...

Сложно представить РЕАЛЬНЫЕ (а не детские) задачи, где в этих вещах нет необходимости. Представление о языке, как о средстве предоставляющем If-ы и case-ы, крайне примитивно. Так обычно и думают любители асма и начинающие. По себе знаю. Дальше поймете, если дорожка заведет. Язык Си - это философия мышления. Это средство достижения цели. Никто не станет разрабатывать оси, тоолько потому, что так модно нынче. Есть определенный класс задач, где те же очереди, (оси с вытесняющей многозадачностью) просто необходимы. И работает это хоть на м8. Не вопрос, можно и на асме это сделать, но затраты труда вырастут на порядок.

...Контроллер все-таки не процессор а настолько сложные задачи решаются только на контроллерах с заведомо огромными ресурсами...

Еще одно заблуждение. Это обыденные, а не архисложные задачи. И решаются они на Си весьма красиво и изящно. Оверхед минимален. Чтобы рассуждать о языке, нужно его знать. А Вы знаете?..

Изменено пользователем Goodefine

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

Вот и "тяжелая артиллерия" подоспела. :) Чтобы грамотно философствовать, нужно много учиться. Так же и в программировании, чтобы складывать сложнейшие задачи, нужно не мало помигать светодиодами. Успокоиться не желаете? 

Ссылка на комментарий
Поделиться на другие сайты

Геннадий, а мне кажется, чтобы "складывать сложнейшие задачи", надо не побольше мигать диодами и читать мануалов, а иметь списфический моск, во всяком случае, располагающий к программированию. Вот у меня этого нету, к сожалению (в смысле специфичности, а не в смысле мозга вообще). :)

Есть у меня один знакомый: вот кто голова.

Ссылка на комментарий
Поделиться на другие сайты

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

Учитесь составлять алгоритмы а не писать на языке.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

...и если разрисовать красиво - уже будет не важно на каком языке ...

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

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

Братцы, если честно, вы разговариваете на разных языках и вряд ли поймете друг друга. У нас форум радиолюбителей или профессионалов? Какие переносы алгоритмов на другой МК? На один напишут и то неплохо. Да если и придется перенести, то что помешает? Формат и название служебных регистров? Так это не алгоритм, а конфигурация. А если переносить на другую платформу, то имеет ли смысл тащить старые глюки в новую систему, библиотеки то разные - может и не "срастись". Вот что мне нравится в Ассемблере, так это то, что он позволяет (обязывает) совершенствовать не только последовательность укладки функций (алгоритм), но еще и создавать (модифицировать) эти функции самому, отлаживая их "до блеска". Сколько не смотрел на "последствия" философии Си сточки зрения низкого уровня, еще ни разу не понравилось то, что укладывается в МК. А если уж писАть на Си, то как же быть с ассемблерными вставками не изучая самого ассемблера.

У Си и Ассемблера разные философии и разная эстетика алгоритмов, поэтому спор никогда не утихнет. Все, я замолкаю, иначе этот костер будет еще долго дымить. :)

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Так в чем проблема? блок-схема почти нарисована ... только надо включить три проверки. и как-то отсчитывать время паралельно задаче.

Или задание - написать живую программу?

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

1) Подскажите пожалуйста, можно ли следующим алгоритмом принять на МК восемь байт с компа по RS-232:

(это я сам накуралесил, похожего нигде не видел)

receive:
bsf RCSTA,4			; enable RS-232 reception
BANKSEL PIR1		 ; correct bank
btfss PIR1,RCIF		; check for received data
goto $-1			; complete ?
movf RCREG,W		; put received data into W
return
movwf Data0
call receive
movwf Data1
call receive
movwf Data2
call receive
movwf Data3
call receive
movwf Data4
call receive
movwf Data5
call receive
movwf Data6
call receive
movwf Data7
bcf RCSTA,4 		; Disable RS-232 reception

2) МК питается от источника в +5В, на СПИ шине сидит устройство, которое может потянуть максимум-примаксимум 3.9В. можно ли на "выходные" ножки МК повесить простой делитель напряжения, чтобы устройство не испортилось от +5В ? И, соответственно, не будет ли проблем для МК, если в качестве лог единицы на его цийровых входах будет +3В (это какбы выход с устройства.

Ссылка на комментарий
Поделиться на другие сайты

пороговый уровень логических сигналов - около половины питания. т.е. работать будет, но не на максимальных скоростях. Для низковольтной микросхемы лог. уровни будут соответствовать завышенному уровню, и следовательно характеристики "время нарастания выходного сигнала" необходимо увеличить.

Питать лог. микросхему делителем - нельзя, слишком у них разнится ток покоя и во время переключения - напряжение на выходе делителя будет скакать безбожно. Для этого нужно применять либо стабилитроны, либо стабилизаторы с низким падением напряжения на 3.3В

И потом, жесткий прием 8-ми байт как-тонекрасиво выглядит, нужно учитывать что по каким-либо причинам с компьютера может не прийти ровно 8 байт ... и контроллер "подвиснет" пока не получит 8-й... нужно хотябы таймауты отсчитывать.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

So once again the day is saved... thanks to the Alexeyslav. :)

А что бы вы посоветовали в моей ситуации:

МК - желательно питать +5В (чтобы работал кварц на 20 МГц), но можно и +3В

МАХ232 - для связи с компом, он только +5В, вроде как без вариантов.

Модуль - только +3В, без вариантов.

подлый мах232 все закосипорил. :(

Ссылка на комментарий
Поделиться на другие сайты

Геннадий, спасибо.

Я просто в местном магазине смотрю - таких нету, а вот оно как на самом деле.

Если и эту микросхему из Англии придется заказывать - это ваще финишь будет. :)

Ссылка на комментарий
Поделиться на другие сайты

Они никогда дефицитом не были.

http://www.maxim-ic.com/products/interface/

Посмотри тут, может что в вашем магазине есть. А вообще то и МАХ232 можно с пониженным напряжением использовать, только гарантии от производителя нет. Когда с мобильниками занимался, делал интерфейсы и на той и на другой от 3,3В-3,6В. Работали оба варианта.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Во многих случаях МАХ-ы можно заменить обычными инверторами, если расстояние небольшое.

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Делай все от 5В, раз уж так сложилось. Линию МК Rx (приемник) можешь подключить напрямую. Думаю МК переварит такую единицу. Линию Тх включи по одному из вариантов:

post-16151-1259786830_thumb.png

В первом варианте делитель опустит уровень напряжения лог. 1 до 3В.

Во втором - диод не даст поднять лог.1 выше 3,6В.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...