Jump to content

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

есть ли какая-нибудь литература на русском языке по мк 68HC11 ?

Share this post


Link to post
Share on other sites

И.И. Шагурин "Современные микроконтроллеры и микропроцессоры MOTOROLA" справочник

Share this post


Link to post
Share on other sites

Особенности схемотехники и трассировки печатных плат для STM32WB55

Разработка новых устройств на базе беспроводного микроконтроллера STM32WB от STMicroelectronics может быть сделана в короткий срок, если выполнять некоторые важные правила и воспользоваться готовыми конструктивными решениями и рекомендациями инженеров ST.

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

изучаю 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 разрядом?

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

Edited by Lyt

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
                     

CoolGaN - на предельной скорости коммутации!

Решения на галлий-нитриде (GaN) обладают фундаментальными преимуществами перед кремнием. В частности, имея более высокую критическую напряжённость электрического поля, в сравнении с традиционными кремниевыми транзисторами, транзисторы на основе галлий-нитрида обладают выдающимися динамическими характеристиками, что позволяет коммутировать их на высоких частотах. Семейство CoolGaN™ – это именно то, что необходимо, чтобы поднять ваши устройства на принципиально новый уровень. Мы собрали все самые интересные материалы по данной теме на одной странице.

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

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

Вместо $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
...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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. в принципе если литература хорошая то своим списком я не ограничиваюсь - на литературе не когда не экономил и если есть в Украине то достану что угодно а если не достану так распечатаю и переплету.

Edited by sputnic

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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


.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, которые нам предлагают в универе?

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

На каких языках программирования можно писать прошивки для микросхем? авр и пик

Share this post


Link to post
Share on other sites

при переходе в режим Idle (attiny13) на выходах сохраняются значения, заданные до этого?

Edited by Lyt

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

возможно в 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

Edited by akl

Share this post


Link to post
Share on other sites

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

Я все описываю, в неактивных ставлю 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.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. 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 Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • 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; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

      P.S. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


  • Сообщения

    • Мужики, вам бы романы писать...
    • Согласен. У меня все уже заготовлено. Завтра собираюсь пилить. Ящик- 100 литров, расчитанный под щелевой ФИ (BassBox ) . Объем  ФИ программы  соответствует объему  резонатора акустического монополя. Расчет делался под 2а12. Габариты передней панели 90х60см. Дополнительно разместить 4а32 труда не составит.  Склейку-сшивку буду делать в процессе, Однако возникает вопрос, нужно ли 4а32 прятать под колпак?
    • Кто всетртится с шевронами ЧЕРных мышей - лучше сразу молиться своему богу.... ниодной стране мира с нашими ребятами вообще вариантами не побороться, просто никак... человек умер сам для себя , и он работает как киборг.   НА стриках (по глупости) у нас на руке выколка есть, АиС  - Ангелы смерти  , дурь конено 
    • ЭТО БЕЗ коментнариев, надеюсь НИКТО ПРОТИВ НЕ БЫЛ  БОЙЦЫ как торпеда Черный берет  в любой стране может сделать БЯКУ    ... я не такой послушный клайд  Кто меня знает - Слава =КЛАЙД  = кто прошел это испытание были в таких странах , что не в сказке сказать  не бульдозером разгребать ... просто не злите мимолетом, уважайте своих защитников Командер КРАПОВЫХ = лакомый кусок - так думали многигие разведчики  АМЕРИКОСОВ .... боюсь рссстроить - бесполяезняк
    • @Borodach вот и у меня это из головы не выходит...
    • Еще один усилитель, автор Г.Крылов, который ,не только измерял, но и слушал. Усилитель на современных комплектующих дает THD менее 0.1%, при потрясающей простоте и приемлемых для 90 % реальных , современных потребителях усилитель. Предложу, новичкам, желающим сотворить собственноручно хороший усилитель mk8802.ms14 Любителям "посимулировать"  есть моделька АС не было, ЗК, плюс наушники. ЗК проверена не только приборами, Наушники, поверьте мне, не дешевые. Прежде, чем спорить, возможно просто включить синус, и реально послушать свои уши
    • А как вы убедились, что ваша связка ЗК+УМ+АС воспроизводит частоты выше 14 кГц также линейно, как и остальные?
×
×
  • Create New...