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

Вопросы от начинающих по МК


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

Здраствуйте! Подскажите пожалуйста назначение конденсатора С13 в цепи RESET.arduino61-1.png

Про второй вывод FT232RL написано:

2 --- DTR# --- Output --- Data Terminal Ready Control Output / Handshake Signal.

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

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

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

изучаю avr, вот такая программка не работает (по нажатию кнопки, подключенной к D5, загорается светодиод на D6)

.include "m16def.inc"
.def temp=r16
.cseg
.org 0
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp
CBI $31,5
SBI $31,6
ldi temp,0xFF
out PORTD,temp
main: in temp,PIND.6
out PORTD.5,temp
rjmp main

AVR Studio ругается на строчку

in temp,PIND.6

C:\Coding\avr_kurs1\avr_kurs1.asm(15): error: syntax error, unexpected FLOAT

Получается в РОН можно записать значение со всего порта, а с отдельной ноги нет?

В РОН можно пихнуть 8-разрядную константу

а как быть с 1 разрядом?

куда можно считать значение с отдельной ноги порта?

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Вообще-то нет, нельзя. Но можно сравнить отдельный бит порта и условными переходами установить в нужном РОНе нужный бит. Но у тебя вообще-то на другое ругается, компилятор думает что ты пытаешься в регистр запихнуть ВЕЩЕСТВЕННОЕ число с плавающей запятой(FLOAT), тогда как он может принять только целое!

Можно еще прочитать весь порт и выполнить операцию AND с константой которая оставит только нужный бит, потом проверка на ноль покажет 1 там была или 0.

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

Где объявления прерываний? Они не всегда нужны но таблицу лучше сделать сразу

Вместо $31 лучше использовать мнемонику, смотреть какую в данном случае мне лень (DDRD чтоли?)

AVR Studio ругается на строчку
Конечно, такой способ адресации бита мне встречался только в cvavr. Ни в Си ни в Ассемблере его нет, используйте человеческие конструкции.
Получается в РОН можно записать значение со всего порта, а с отдельной ноги нет?
Конечно, ведь контроллер умеет обращаться только с байтами (изредка с 2-байтными словами или 3-4 байтными адресами но это все специфические операторы) соответственно регистр - тоже байт.
В РОН можно пихнуть 8-разрядную константу

а как быть с 1 разрядом?

куда можно считать значение с отдельной ноги порта?

В РОН можно впихнуть любой байт, константу в том числе (Си любит в r1 записывать 0х00 для дальнейших расчетов) но обычно константы объявляют через .equ или, в стиле Си, #define. К отдельному биту можно получить доступ через маски или сдвиги (учим булеву алгебру). В данном случае это будет

...
in temp,PIND
lsr temp
//при желании сюда можно вставить andi temp,(1<<5) чтобы точно не потереть ничего лишнего.
out PORTD,temp
...

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

В исключительных случаях контроллер может обращаться к портам побитно - инструкции SBI/CBI и условный переход SBIC/SBIS работают с битами ограниченного диапазона портов ввода-вывода(уточнить в даташите).

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

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

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

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

Есть много книг по программированию МК... как везде есть хорошие книги и как говорится не очень...

Какую литературу для изучения микроконтроллеров порекомендуете?

То что нашел в ближайшем магазине:

1. Разработка устройств на микроконтроллерах AVR (Белов А. В.)

2. Программирование микроконтроллеров для начинающих (Иванов)

3. Микроконтроллеры ARM семейства LPC2000

4. Полное руководство по микроконтроллерам PIC PIC18, PIC10f, rpic

5. Все что Вам необходимо знать PIC микроконтроллеры

6. Программирование микроконтроллеров atmel на языке С

7. Применение микроконтроллеров PIC

8. Программирование на языке С для AVR и PIC (Шпак Ю А.)

Больше ориентирован на программирование на языке С т. к. когда то еще ходил на курсы по С++... хоть что то думаю еще вспомню а код С++ довольно сильно похож на С.

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

И еще стоит ли тратить время на изучение контроллеров PIC либо AVR (больше склоняюсь к AVR т. к. они более доступны и дешевле) или стоит уже изучать более серьезные и современные микроконтроллеры например те же ARM?

P.S. в принципе если литература хорошая то своим списком я не ограничиваюсь - на литературе не когда не экономил и если есть в Украине то достану что угодно а если не достану так распечатаю и переплету.

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

По AVR однозначно Евстифеева "микроконтроллеры AVR семейства * фирмы Atmel". У Светланы с этого форума пара штук есть, только по семейству mega с ходу не увидел а жаль. Еще может быть Ревич, я с него начинал.

Насчет языка ИМХО С++ для компьютера довольно заметно отличается от Си для контроллеров. Однако начинать с ассемблера, может потом и перейдете на Си или какие-нибудь Паскаль, Бейсик и т.п. но понимания архитектуры никто из них не дает.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

в итоге сделал вот так


.include "m16def.inc" 
 .def temp=r16
 .cseg 
 ldi temp,high(RAMEND)
 out SPH,temp
 ldi temp,low(RAMEND)
 out SPL,temp
 CBI $11,5
 SBI $11,6
 ldi temp,0xFF
 out PORTD,temp
  main: sbic $10,5 ;пропуск след. команды если D5=0
        sbi $12,6 ;вывод 1 в D6
        sbis $10,5 ;пропуск след. команды если D5=1
        cbi $12,6 ;вывод 0 в D6
rjmp main

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

http://rutracker.org/forum/viewtopic.php?t=1652142

И такой вопрос - насколько актуальны и полезны для изучения 68HC11, которые нам предлагают в универе?

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

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

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

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

Насчет литературы

Я бы литературой сильно не увлекался, она ОТВЛЕКАЕТ. Какую книжку не возьми, каждый "писатель" намекает что только его книжка самая правильная. А на самом-то деле... книжка нужна только одна, и только для того чтобы быстрее начать. Вполне достаточный источник информации о контроллере - даташит на него. Изучив даташит, ты будешь знать всю необходимую информацию для написания программ под него, удел книжек - это научить читателя на какую кнопку жать в конкретных программах чтобы скомпилировать программу. Иногда, очень редко в книжках встречается более подробная информация что и почему, но пока такую книжку найдешь - она будет уже не нужна: либо отобъют охоту, либо сам все найдешь в даташитах.

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

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

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

а нет литературы, в которой описывается несколько архитектур сразу и проводится их сравнение? А также чисто теоретическое описание архитектур, без привязки к конкретному контроллеру?

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

А архитектуру чего вы хотите рассмотреть таким образом? У AVR, PIC, ARM, x86 она различна: разное количество РОН, шины управления АЛУ, иногда есть прямой доступ к битам ОЗУ (не байтам а именно битам, с байтами другие команды), разная переферия, разные конвеер команд, да мало ли

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

да. Подробнее в даташите

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

возможно в avr studio отследить, что контроллер перешел в idle режим (пишу на asm)?

Студия 3.21(3.56) ещё не поддерживала SLIP, студия 4 уже поддерживает. Более старшие не знаю, т.к. не пользуюсь.
и такой вопрос еще - в таблице прерываний лучше описывать все прерываний данного мк, или можно только те которые используются?
Второй вопрос сродни холивару "какой МК лучше?" Можно, осознанно, использовать, по своему усмотрению, неиспользуемые адреса области прерываний.

Например

.include "2313def.inc"
.
.

.cseg
.org 0
   RJMP    RESET
   RETI         ; INT_0
   RETI        ; INT_1
   RETI        ; Timer1_capt1
;обработчик прерывания COMP_A
TIMER_COMP1:
   OUT    PORTB,ONE    ; принудительное гашение всех сегментов
   OUT    PORTD,ZH    ; обратной полярносью

   LDI    ZL,LOW(TB_DC*2)
   ADD    ZL,DC
   LPM

   LDI    XL,5        ; загрузить в XH,XL адрес R5
   CLR    XH
   ADD    XL,DC
   LD    R16,X        ; содержимое текущего регистра R5...R8 в R16

   CP    YL,R20
   CPC    YH,R19
   BRCC    POINT
   CPI    DC,$01
   BRNE    POINT
   CBR    R16,$20        ; зажечь децимальную точку единиц часов на 0.5 сек
POINT:    
   OUT    PORTD,R0
   OUT    PORTB,R16    ; вывод на индикацию

   INC    DC
   ANDI    DC,$03        ; подготовиться к индикации следующего знака

COMP1_1:
   SBIW    YL,1
   BRMI    SEC_OUT
   BRNE    COMP1_OUT
COMP1_1_OUT:
   OUT    OCR1AH,R21
   OUT    OCR1AL,R22    ; последнее значение в OCR1A будет на R21 меньше для
               ; учета всех задержек
COMP1_OUT:
   RETI
SEC_OUT:
   SET        ; период 1 секунда окончен
   RETI

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

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

Я все описываю, в неактивных ставлю reti в качестве перестраховки.
.include "tn85def.inc"
rjmp RESET
reti; INTO
reti; PCINT
reti; TIMER1 ÑÎÌÐÀ
reti; TIMER1 OVF
rjmp TIMER0OVF
reti; EE_RDY
reti; ANA_COMP
reti; ADC_END
reti; TIMER1 COMPB
reti; TIMEROCOMPA
reti; TIMERO COMPB
reti; WDT
reti; USI START
reti; USI OVF
.def temp=r16
<....>

Пример кода на ATtiny85, используется ШИМ-режим таймера 0.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

а чем чревато неописанное прерывание?

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

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

Чтобы использовать неописанные прерывания нужно их программно разрешить. Например, переполнение запущенного таймера 0 не вызовет прерывания до тех пор, пока в TIMSK не установите TOIE0 (из предыдущего сообщения). Ну и что, что там стоит джамп на обработчик, окромя установки флага TOV0 никаких действий контроллер не сделает.

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

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

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

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

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

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

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

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

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

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

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

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