Jump to content

На чем писать  

560 members have voted

  1. 1. Что чаще используете в разработках?

    • Assembler
      156
    • C
      282
    • Что-то еще
      61


Recommended Posts

А по сути “Почему количество просмотров этой ветки так велико?”

Share this post


Link to post
Share on other sites

Конденсаторы Panasonic. Часть 4. Полимеры – номенклатура

В заключительной, четвертой статье из цикла «Конденсаторы Panasonic» рассматриваются основные достоинства и особенности использования конденсаторов этого японского производителя на основе полимерной технологии. Главной конструктивной особенностью таких конденсаторов является полимерный материал, используемый в качестве проводящего слоя. Полимер обеспечивает конденсаторам высокую электрическую проводимость и пониженное эквивалентное сопротивление (ESR). Номинальная емкость и ESR отличается в данном случае высокой стабильностью во всем рабочем диапазоне температур. А повышенная емкость при низком ESR идеальна для решения задач шумоподавления и ограничения токовых паразитных импульсов в широком частотном диапазоне.

Читать статью

Кол-во просмотров велико так же, как и кол-во неопределившихся в типе МК и языке программирования. В то же время "насаждать" свое мировозрение в этом вопросе не самое лучшее дело. Человек сам должен выбрать, что ему подходит больше. Вот только, все познается в сравнении. И лучше самому провести сравнение, а для этого нужно (опять же самому) "пощупать" всех претендентов на выбор и, очень желательно, начинать делать это с самого начала, шаг за шагом, осваивая азы. Слушать же вечный спор гуру и по нему выбирать - это не совсем разумно.

Share this post


Link to post
Share on other sites

Геннадий

Тема большая, а вопросов много. Можно сказать, что это тупик, однако, мои речи к начинающим: не бойтесь ассемблера. Ассемблер + описание работы МК + Ваше стремление к познанию + Ваше ЗНАНИЕ предмета (поставленной задачи) - всё осилят!

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

PC тогда были 486-100МГц, а требования по скорости обмена с периферией большие (Интернета-нет, MSDNа-нет – один только интерактивный дизассемблер). Windows тогда была закрыта и очень даже круто. В то время многие даже не знали, что есть три режима процессора (начиная с 286): совместимости с DOS(обыкновенный 8086), виртуальный режим (в котором запускаются обыкновенные DOS приложения) и защищенный режим – в котором система занимает 0 кольцо, а затем всех контролирует через доступные механизмы (0 кольцо -PC превращается в обыкновенный МК (но уже Макро Контроллер))(давно этим не занимался, что-то, может быть и упустил!). Си и Паскаль тогда этим делом не занимались, а лишь предоставляли убогие интерфейсы VCPI и DPMI. Зато инфы на дисках и собственного дизассемблирования хватало для построения системы.

Короче, за полгода была написана операционная среда без Си и Паскаля! – всё и GUI (в том числе) как в Windows 3.1 – на ассемблере. Но PC стал контроллером!

Это закидуха тем, кто думает, что в этом мире всего хватает (в том числе и сторонних библиотек) для того, чтобы они сделали то, чего хотят!

Все эти замечания не по теме, которую я думаю продолжить, а в порядке полемики.

Не думал, что сразу отвечу на вопрос о многообразии PC в 1995г.(каждый волен выбирать, что ему нравится!)

Также не думал, что сразу отвечу на вопрос об интеллектуальности алгоритмических решений, которые снимают вопрос о применении контроллеров в ассортименте...(т.е. в наличии)

И ещё... Вы не дослушались(не дочитались) до того, что я ещё не сообщил(или не сказал)!

Share this post


Link to post
Share on other sites
                     

STM32G0 - средства противодействия угрозам безопасности

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

Подробнее...

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

ЯВУ подменяют интеллект программиста на собственный интеллект - понятия и собственный 'размышлизм'. Поэтому то, что Вы пишете на ЯВУ не совпадает (а иногда и совсем не совпадает с тем, что Вы пишете или думаете). Ассемблер Вам друг, а не Враг!

Share this post


Link to post
Share on other sites
... могу рассказать, чем ЯВУ отличаются от Ассемблера.

ЯВУ подменяют интеллект программиста на собственный интеллект - понятия и собственный 'размышлизм'. ..

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

Share this post


Link to post
Share on other sites

Это не бред, а попробуйте пристыковать CodeVision,например, к своему коду...

Единственное, что Вы можете пристыковать к своему коду - разработки программистов , таких как Jack Tidwell...

Share this post


Link to post
Share on other sites

Я рад за Вас, однако от своих намерений не отступлюсь - и, то что хочу, расскажу и объясню другим в доступной форме...

Share this post


Link to post
Share on other sites

Насчет Ассемблера согласен - друг и еще какой! Вот только понять его по-началу сложнова-то, но зато потом...! Я приверженец "складывания" программы "по-кирпичикам" (как и схемы - по транзисторам). Потому как только таким способом можно получить компактный и устойчивый код, выбирая из массы вариантов решения алгоритма один, но "обкатанный" и продуманный.

Вот пример:

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

Режим пониженного энергопотребления не конфигурировался, а в коде была такая последовательность:

Метка1:

      Sleep

      Rjmp Метка1

Примеров отрицательных много, всех не перечислить. Правда это делается заметно только после дизассемблирования. Что только не "вытворяет" процессор, чтобы получить смещение на адрес переменной в ОЗУ, для ее чтения или модификации (записи/перезаписи). Хотя ее адрес есть значение постоянное и достаточно выполнить в ассемблере одну команду: sts(lds) адрес,данные, язык высокого уровня "пойтить на такие дела" не может, ведь он высокого уровня, да еще и с интеллектом.  :) Вот и начинается вычисление текущего адреса в теле программы, сложение/вычитания непонятных констант, перенос пар регистров туда-сюда и тд. В итоге процессор получает смещение и адресуется к ячейке через косвенную адресацию. А потом катастрофически не хватает размера флешь, для не очень большой, казалось бы, программы. Вот поэтому, я лично, выбрал Ассемблер, чтобы иметь возможность "управлять" программой ПО СВОЕМУ усмотрению, а не полагаться на библиотеку, написанную кем то, да еще не совсем удачно.

Edited by Геннадий

Share this post


Link to post
Share on other sites

Геннадий

Я рад за Вас - тема большая, а истина одна-тяжело начало,а результат победа!

Полемика

Быстрый Ассемблер - это то, к чему я Вас пытаюсь подвести через материал (Вам неизвестный)...

, но вскоре доступный(mega)

Share this post


Link to post
Share on other sites

Проблема заключается в то, что Путаница в вопросах ЯВУ(ЯзыкахВысокогоУровня) возникла из-за “рекламы” Си-подобных языков - об их ”всеядности” и всемогущей переносимости.

Однако для ЕmbeddedSystem (ВнедряемыхСистем – по-русски-микроконтроллеров для управления и т.д.) – это полный абсурд! Посудите сами – порт G mega128 имеет аналог в Pic?, ADSP…???

Задумайтесь! - и не гоняйтесь за “универсальным лекарством”. Тут требуется кое-что другое.

Share this post


Link to post
Share on other sites
Дальнейшее продолжение Object Pascal - OBERON(Никлаус Вирт и его последователи) - он доступен в понимании и его описание есть на многих русско-язычных сайтах(engl даже для ARM7(2005)). OBERON набирает обороты, а Delphi - это отряд без командира...

)

Продолжение следует...

У меня есть компилятор Oberon-07 для AVR от ETH (Оберон-07 это упрощенная версия оберона).

Он рабочий, компилит/линкует.

Хочу его подружить с AVR студией, что бы можно было использовать отладчик, если есть желающие присоединится - пишите в личку (застрял с Dwarf-2).

Share this post


Link to post
Share on other sites

писал на ассемблере, потом перешел на Си

знание асма хорошее подспорье - понимаешь во что транслируется Сишный код.

однако писать большие проекты на ассемблере я не хочу

Share this post


Link to post
Share on other sites

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

Классы позволяют абстрагироваться от подробностей реализации алгоритмов сложных структур данных. Следует акцентировать внимание на наличие шаблонов и перегрузки оператора. Первый позволяет программисту не реализовывать многократно классы и подпрограммы для обработки различных типов данных, а лишь 1 раз описать их шаблон. Перегрузка оператора позволяет сделать код пользователя, использующий класс с данным оператором, наиболее наглядным, понятным и понимаемым с первого раза. Она позволяет с лёгкостью проводить манипуляции со сложными типами данных на абстрактном уровне, не прибегая к вызову подпрограмм, уменьшающих наглядность. К примеру, лучше записать умножение 2-х матриц A и B неопределённой размерности в виде С=A*B, чем MatrixMult(C,A,B,n1,n2,n3), n1, n2, n3 – размерности матриц C, A, B.

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

Классы - это наглядность и простота.

Share this post


Link to post
Share on other sites

И чем это математика отличается от одного МК к другому? Кто же мешает описать один раз алгоритм и вызывать его многократно, передавая параметры через регистры?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Пишу на ассемблере,на днях попробовал си мое мнение ассемблер намного понятнее там что написал то и получил а Си больше походит на магию,одни указатели чего стоят, а на ассемблере это всего лишь команда ldd.

Share this post


Link to post
Share on other sites

Пишу на ассемблере,на днях попробовал си мое мнение ассемблер намного понятнее там что написал то и получил а Си больше походит на магию,одни указатели чего стоят, а на ассемблере это всего лишь команда ldd.

ИМХО:

Согласен.Как работать с указателями тяжело понять (покрайней мере я на СИ уходил тоже с асма и не сразу врубился, как их использовать), но когда разберетесь, то от их использования за уши не оттащишь. :D

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • By LegionKC
      Добрый день.
      Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю.
      Спасибо.
       

    • By Cheshire Cat
      Здравствуйте, только начинаю изучать программирование мк. Я уже задавал этот вопрос в моих прошлых схемах мне отвечали что-то типа "любой стабилизрованый источник постоянного напряжения", или кидали схему такого источника. Можно назвать мне конкретное устройство? В общем то что я смогу забить в гугл и приписать купить. 

      Я уже больше двух месяцев жду пока мне придут с aliexpress детали для маленького лабараторного блока, но этот вариант может разбиться о кривизну моих рук.  Хочу просто купить такой источник и наконец заняться непосредственно МК. 
    • By Cheshire Cat
      Здравствуйте, только начал изучать программирование микроконтроллеров. В учебнике есть схема, но она не учитывает питание и землю. Скажите правильно ли я её дополнил.
      И еще дополнительный вопрос. Что можно использовать как источник постоянного питания на 5В? Из не дорогого и того, что можно купить в Казани. Знаю, что лучший вариант - лабораторный БП, но они дорогие.

×
×
  • Create New...