Гость Алексей

C Чего Начать Изучения Программирования Под Микроконтроллеры?

25 сообщений в этой теме

Гость Алексей   
Гость Алексей

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
swat24    9

Добрый вечер. Какие контроллеры интересуют? В интернете есть примеры для начинающий на АВРы, ПИКи, СТМы. Начиная с мигания диодом...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Гость   
Гость Гость

У меня так получилось. Скачал книги Заец. Н.И. (3 штуки). И на евовшных (а может издателей) косяках получилось самообучение. Ассемблер где-то за неделю в бошку залетел. Всего-то 33 комманды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
_Vasilij_    0

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

зы пики наверное отставить изучать - редко где в проектах бывает, самые ходовые сейчас вроде AVR - atmega8(там однотипное семейство) и attiny2313

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
swat24    9

2 _Vasilij_:

Я бы не сказал, что пики большая редкость в использовании.

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

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

Как вариант для начала, могу посоветовать MIKROPascal, MIKROC. Есть как для пиков, так и для авр. С очень удобной справкой и кучей подпрограмм с полным описанием. Сам тоже начинал разбираться с него.

Поделиться сообщением


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

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

Поделиться сообщением


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

выдался свободный час и разобрался немного с BASCOM-AVR. сделал светофор в протеусе мигал как положено.оказывается ничего сложного :dance2:

Поделиться сообщением


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

Где можно протеус нормальный скачать, ссылку плиз. Какие нашёл, ни фига не работают, не устанавливаются толком. Разочаровываться не хочется. Или есть ли достойная замена?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
PajMax    12

Где можно протеус нормальный скачать, ссылку плиз. Какие нашёл, ни фига не работают, не устанавливаются толком. Разочаровываться не хочется. Или есть ли достойная замена?

Ща найду...

Я качал отсюда (вроде бы) Но версия и сборка такая.

Крайне не советую ставить русскую ибо она гаß/-/o :)

Антивирус может чавкать... Но сайт проверенный.

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

Поделиться сообщением


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

С английским проблема, но попробую. Хотел именно русифицированный вариант.

P.S. Пробовал вчера, за час закачка не началась, перешёл на другие сайты. Сегодня подольше подожду.

Изменено пользователем Сергей70

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
PajMax    12

P.S. Пробовал вчера, за час закачка не началась, перешёл на другие сайты. Сегодня подольше подожду.

Я ставил русифицированный вариант и сразу его снес.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263
codevision (это Си для мк)
Нет наиболее близкое к Си для МК AVR это avr-gcc. Со стандартом Си не совсем совместимо но уж точно больше чем cvavr.
Но мне трудно представить какой-нибуть более-менее приличный проект (по размеру) написаный на чистом ассемблере...
Ассемблер не для больших проектов учить надо а для понимания работы контроллера и ускорения его работы (как ассемблерные вставки так и разумное использование команд). Например такая программа вполне может не показаться дикостью не знающим ассемблера

char x=PIND;
x=x/2;
PORTB=x;

Поделиться сообщением


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

оказалось не все так страшно и простая 8-ми ногая ATTINY заменит кучу логики :dance2: подскажите кто в чем печатные платы рисует?OrCad Pcad слишком навороченые DIP-trace почему-то не ставиться хотя раньше мне очень нравилась :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743
заменит кучу логики
Кучу логики заменит плис, а мк кучу логики будет эмулировать :)

Поделиться сообщением


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

NebsteR а мне не принципиально :) важен сам факт что вместо того чтоб думать как провести нужные команды и сделать какую-то логику работы я просто пишу что мне надо чтоб было на входе и что при этом на выходе :thank_you2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Maks    304

подскажите кто в чем печатные платы рисует?

sprint layout проста в использовании

Поделиться сообщением


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

Здравствуйте! Есть отечественный микроконтроллер 1874ВЕ05Т (полный аналог мк Intel tn87c196kc20 - микроконтроллер 96 серии). Подскажите, пожалуйста, какой компилятор можно использовать, чтобы его запрограммировать? не могу вообще найти

Поделиться сообщением


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

подскажите кто в чем печатные платы рисует?

sprint layout проста в использовании

Altium Disigner 10

Поделиться сообщением


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

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

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

  Разрешено не более 75 смайлов.

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

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

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

Загрузка...

  • Похожие публикации

    • Автор: Николай Зубий
      Как сделать  устройство, выводящие на индикатор время, прошедшее с момента последней перезагрузки контроллера?
    • Автор: forestdozor
      Здравствуйте!

      Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328.
      Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается.
      Подскажите пожалуйста, что делать?
      Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль.
      Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается...
      Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать.
       
       
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H = 0x00;
      TCNT1L = 0x00;
      }
      // Timer1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
       
             TCNT1H = 0x00;
             TCNT1L = 0x00;           // Это уже уровень танцев с бубном "авось поможет" - не помогает.
         
              current_timp++;          // Все упрощено до максимума. Мне бы он хоть количество периодов для начала...
              
        //  }
      }
      // Прерывание по переполнению первого таймера
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      {
      // Обнуление счетного регистра.
      TCNT0=0x00;

          
          counter ++;
          if (counter > 10)
          {
                  lcd_clear();
                  sprintf(buffer,"%d us", current_timp);
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                  counter = 0;
          }
          
          
      }

      // Главный цикл программы
      void main(void)
      {

      #pragma optsize-
      CLKPR=(1<<CLKPCE);
      CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif

      // Port B initialization
      // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
      // Port C initialization
      // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
      DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
      // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
      PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
      // Port D initialization
      // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее.
      TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
      TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;
       
      // Настройка таймера 1
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (1<<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;
      // Разрешение прерывания по переполнению таймера 0
      TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
      // Timer/Counter 1 Interrupt(s) initialization
      TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
    • Автор: voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c
    • Гость mrRobot
      Автор: Гость mrRobot
      Добрый день! Был бы признателен, если бы кто нибудь подкинул любые источники информации на тему жизненного цикла микроконтроллеров. Книги, статьи, что угодно - лишь бы освещались данные пункты:
      Описание этапов жизненного цикла изделия (микроконтроллеров) и средств автоматизации, применяемых на данных этапах. Анализ взаимодействия средств автоматизации внутри каждого этапа и между этапами. Заранее спасибо!
    • Автор: CUBE
      Не могу запустить асинхронный режим. 
      Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц).  После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. 
      Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. 
      Компилятор Atmel Studio 7
      Шью через Sind Prog 2.1.1 + USBasp 2.0
      Вот код: 
      .macro outi 
       ldi r16, @1 
       out @0, r16 
      .endm 
      .org $000 
      rjmp reset 
      .org $001 
      reti 
      .org $002 
      reti 
      .org $003 
      reti 
      .org $004 
      rjmp timer2_ovf 
      .org $005 
      reti 
      .org $006 
      reti 
      .org $007 
      reti 
      .org $008 
      reti 
      .org $009 
      reti 
      .org $00A 
      reti 
      .org $00B 
      reti 
      .org $00C 
      reti 
      .org $00D 
      reti 
      .org $00E 
      reti 
      .org $00F 
      reti 
      .org $011 
      reti 
      .org $012 
      reti 
      .ORG INT_VECTORS_SIZE 
       
      reset: 
      .equ portout=portd 
      .equ ddrout=ddrd 
      .def led=r17 
      .def mask=r18 
      .def counter=r19 
       outi spl,low(ramend) 
       outi sph,high(ramend) 
       
       outi ddrout, 0xff 
       
       outi tccr2, 0b00000111 
       outi timsk, 1«toie2 
       
        
       
        
       ldi led,1«5 
       ldi mask,1«5 
       sei 
      cycle: 
      cpi counter, 10 
      breq offtim 
       rjmp cycle 
       
      timer2_ovf: 
      inc counter 
       out portout, led 
       eor led, mask 
      reti 
        
      offtim: 
      outi timsk, 0«toie2 
      rjmp asinxron 
       
      asinxron: 
       outi assr, 0b00001000 
      back: 
       in r16, assr 
       cpi r16, 0b00001000 
       brne back 
       
        outi tccr2, 0b00000101 
        outi tcnt2, 0 
        outi ocr2, 0 
        outi timsk, 1«toie2 
       
       
      m1: 
      rjmp m1


      Верх меги на фото слева.