Jump to content
admin

Видеокурс по AVR-микроконтроллерам для начинающих

Recommended Posts

Сайт Паяльник открывает обучающий видеокурс по AVR-микроконтроллерам.

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

Ведет видеокурс наш форумчанин kobzar.

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

Подписка на YouTube канал

Краткий обзор сред разработки для различных микроконтроллеров на сайте: http://cxem.net/software/soft_mcu.php

Внимание начинающим! Перед тем, как задавать вопросы не по теме видеоуроков, прочитать:

Статьи по МК для начинающих

Книга по программированию микроконтроллеров AVR

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

Кракозябры вместо русских букв

Ребята - спешу сообщить что найден метод борьбы с кракозябрами вместо русских символов, при работе с ЖК. Дело в том, что у некоторых из вас, проект создается в кодировке UTF-8, а наша библиотека работает только с ср1251

Фикс:

1.Открываем проект

2. File - Advanced Save Options

3. Вместо кодировки UTF-8 выбираем Cyrillic(Windows) - cp1251

Сохраняем, сохраняем проект - компилируем!

Добавлено 12.01.16 :

Изменённые версии библиотеки lcd_5110 :

От COKPOWEHEU - Ссылка на пост , Ссылка на github

 

Edited by Alex

Share this post


Link to post
Share on other sites

Первый видеоурок

Второй видеоурок

Третий видеоурок

Edited by admin
Добавлен видеоролик

Share this post


Link to post
Share on other sites

Четвертый видеоурок

Пятый видеоурок

Шестой видеоурок

Файлы к 6-му видеоуроку: LCD_5110.zip

Практика к шестому видеоуроку

Edited by admin
Добавлен видеоурок

Share this post


Link to post
Share on other sites

Взаимодействие устройств IoT от Microchip с облаком Google

Благодаря облачным технологиям появилась возможность реализовать сложные проекты на базе микроконтроллера путем перераспределения вычислительной нагрузки между микроконтроллером и облаком. Простые в использовании отладочные платы, такие как AVR- и PIC-IoT WG, позволяют выполнять ресурсоемкие вычисления, передавая их в облако.
Подробнее

Седьмой видеоурок:

Практика к 7-му уроку:

Восьмой видеоурок:

Edited by admin

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Умный и безопасный дом от STMicroelectronics – строим вмеSTе!» (23.06.2021)

Приглашаем 23/06/2021 всех желающих принять участие в вебинаре, посвященном проектированию и разработке систем умного дома на базе компонентов STMicroelectronics. Решения ST для интерфейсов умного дома: BLE, LoRa, ZigBee, WM Bus, Ethernet, ModBus. Средства разработки, стеки протоколов, законченные примеры кода. Выбор контроллера для управления.

Подробнее

Доброго времени суток!

Вы при выборе IDE вы ориентировались в основном на удобство и понятливость в освоение.

Желательно бы еще указать сравнительные данные компилятора студии 6 по размеру выходного файла с остальными.

Ведь это самый важный параметр и ради которого некоторые пренебрегают всякими неудобствами.

Если в студии 6 оптимальность и размер кода занимает второе, третье место то это самый лучший вариант.

Ранее таким продуктом был WinAvr который сейчас вроде как интегрирован в студию.

Читал где то что сегодня функционал в студии по отношению к WinAvr выше, а по компактности и размеру кода хуже чем в последнем WinAvr.Тем более у WinAvr вроде как намечается продолжение.

Share this post


Link to post
Share on other sites

LDH-25/65 – новые серии повышающих DC/DC LED-драйверов от Mean Well

Компания Mean Well расширила семейство популярных повышающих DC/DC LED-драйверов LDH двумя новыми сериями меньшей и большей мощности – LDH-25 и LDH-65, соответственно. Новые серии, обладая высоким КПД, применимы для изготовления экономичных светодиодных светильников с питанием от автономных источников тока, в том числе – на транспорте. Конструктивно драйверы выпускаются в двух различных вариантах.
Подробнее

Курс рассчитан на новичков. Размер файла нас, пока, не интересует

Share this post


Link to post
Share on other sites

Курс рассчитан на новичков. Размер файла нас, пока, не интересует

Ну тогда всем надо смотреть в сторону графических IDE и подбирать МК с большим объемом памяти и зачем учить С, там достаточно основ алгоритма.

Edited by capicator

Share this post


Link to post
Share on other sites

Atmel Studio 6.2 была выбрана и рекомендована для начинающих по следующим критериям:

1. Уроки будут вестись в ней

2. Она бесплатна

3. В отличие от безнадежно устаревшего винавр - проще и понятней в освоении!

4. У нее лучший редактор КОДА! (что для начинающих архиважно)

Провел тест - скомпилил один и тот же код в 4 и 6 студии! В 6 размер оказался на 15 процентов меньше! Не вижу смысла пользоваться устаревшим ПО!

А где же продолжение. Ждемс. Спасибо.

Сегодня будует третий урок переснят - практика! и на неделе 4 с практикой !

Так что не переживайте !


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

Atmel Studio 6.2 была выбрана и рекомендована для начинающих по следующим критериям:

1. Уроки будут вестись в ней

2. Она бесплатна

3. В отличие от безнадежно устаревшего винавр - проще и понятней в освоении!

4. У нее лучший редактор КОДА! (что для начинающих архиважно)

Провел тест - скомпилил один и тот же код в 4 и 6 студии! В 6 размер оказался на 15 процентов меньше! Не вижу смысла пользоваться устаревшим ПО!

По всем пунктам не вижу препятствий и для WinAvr, все относительно....

Пожалуйста, очень прошу сравните код Atmel Studio 6.2 с WinAvr (чтоб без сомнения ).

А то все ни как не решусь что же применять.

Edited by capicator

Share this post


Link to post
Share on other sites

Выбирайте то что вам удобнее!

Разницы в написанни кода для вас не будет! Но я не собираюсь рассказывать новичкам как изачем править мейк файл, как подключать бибилиотеки, как компилировать и отлаживать проект в ВинАВР!

Я по моему очень подробно обьяснил - использовать ВинАвр нет никакого вобще смысла! Проект развивался, рос - и в каокой-то момент он превратился в avr-toolchain который используется в 4 студии! Сама же ветка ВИнАВР так и осталась без продолжения развития! Там плохой редактор! Нет автокомплита! Нет фолдинга И так далее! Зачем нам с ним мучаться?

Я бы понял если бы вы метались от ИАР к АтмелСутдио --- но между студией от самого производителя и ВиНавр - развите котого и поддержка закончились несколько лет назад.... даже и не знаю что вам сказать!

Если вас не устраивает 6 студия - назовите причины - и используйте 4 !


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

А то все ни как не решусь что же применять.

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

Не вижу смысла в полемике - 4 или 6. ТС сказал 6 - читаем, учимся, задаем вопросы по существу.

Share this post


Link to post
Share on other sites

Не спорьте попусту. Я понял, что в студии удобнее написание программы и ее отладка.

А если нравится компилятор от WinAvr, так он прикручивается к студии влегкую.

Напоминаю про 2 и 3 уроки. Хочется уже посмотреть.

Share this post


Link to post
Share on other sites

А то все ни как не решусь что же применять.

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

Не вижу смысла в полемике - 4 или 6. ТС сказал 6 - читаем, учимся, задаем вопросы по существу.

А где вы тут полемику увидели.

Речь вообще то не о номерах версий, а о разных продуктах, это раз.

А два это что не внимательно читаем, а потом не по существу вопросы задаем.

Если всем так хороша 6, то почему бы это не увидеть воочию.

kobraz пожалуйста сделайте сравнение на простом файле мигания светодиода (blink).

Share this post


Link to post
Share on other sites

Я не понимаю что вы от меня просите! Какое сравнение вам нужно?

з/ы/ уроки у же у администрации ждем пока их обработают и выложат !


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

Я не понимаю что вы от меня просите! Какое сравнение вам нужно?

з/ы/ уроки у же у администрации ждем пока их обработают и выложат !

Я очень прошу Вас сделать сравнение по размеру кода простой программы (мигание светодиодом)

скомпилированной в Atmel Studio 6.2 и в WinAvr.

Share this post


Link to post
Share on other sites

Код

//Atmega8
#define F_CPU 8000000 //в WinAVR без этой строки
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB = 0xFF;
PORTB = 0x00;
   while(1)
   {
    PORTB = 0xFF;
 _delay_ms(1000);
 PORTB = 0x00;
 _delay_ms(1000);
   }
}

Студия

Program Memory Usage : 108 bytes 1,3 % Full

Data Memory Usage : 0 bytes 0,0 % Full

Winavr

Program: 106 bytes (1.3% Full)

(.text + .data + .bootloader)

Data: 0 bytes (0.0% Full)

(.data + .bss + .noinit)

Я надеюсь мне удалось удовлетворить ваше любопытство вместо вас?


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

У меня не компилит вот ошибка.

post-171225-0-00621200-1396288594_thumb.jpg

Также не могу изменить Тульчайн. Постоянyо возвращает на AVR 32-bit


Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

Share this post


Link to post
Share on other sites

hardbar, уберите русские буквы из имени проекта/пути к проекту. Заодно убрал бы еще и пробелы. Программа "импортная"... не сильно русский лексикон любит. :)

Share this post


Link to post
Share on other sites

Таки да! Избегайте русских букв в названиях файлов и путях


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

а что делать с Тульчайнами?


Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

Share this post


Link to post
Share on other sites

hardbar, а что собственно не устраивает? То, что в Debug->Options an Settings ->ToolChain по Default стоит Atmel AVR 32-bit?

- подходит? Edited by MadLor

Share this post


Link to post
Share on other sites

Да смущает что там не 8 а 32. А видео я это уже смотрел.


Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

Share this post


Link to post
Share on other sites

а смысл нам от 32 для 8 битного камня? На самом деле можно не менять! В наших уроках разницу мы не заметим!

Данную опцию я задел исключительно для того что бы показать основные настройки программы!

:)

Переснял третий урок - сейчас он на обработке у администрации!

В конце урока домашнее задание - тем кто хочет действительно научиться - рекомендую к выполнению! Читайте гугл ищите примеры - ТВОРИТЕ!

Только самостоятельная работа позволит понять и запомнить материал :)


коплю на мечту - Днепр К750

Share this post


Link to post
Share on other sites

Вот чисто для сравнения. Никаких нареканий на СИ. Просто кому интересно.

Программа мигания двумя светодиодами. Размер HEX файла 279 байт

#define F_CPU 9600000
#include <avr/io.h>
#include <util/delay.h>



void options_port()
{
DDRB = 0b00001100;
PORTB = 0X00;
}

int main(void)
{
options_port();
while(1)
{
PORTB=0b00001000;
_delay_ms(1000);
PORTB=0b00000100;
_delay_ms(1000);
}
}

Программа вывода чисел от 0 к 9 в сдвиговый регистер. Размер HEX файла 333 байта (не верите проверьте)(завтра покажу видео работы программы в железе)

.include "tn13def.inc"
.list

.def temp=r16
.def temp1=r17
.def tim=r18
.def timer=r19
.def pob=r20
.def sd=r21
.def aa=r22
.def bb=r23
;-----------------------------
.macro outi
ldi sd,@1
out @0,sd
.endm

.cseg
.org 0
rjmp reset

;----------------------------
reset:
cli
outi spl,low(ramend)
outi ddrb,0xff
outi portb,0x00
outi acsr,0x80
outi tccr0b,0x05
ldi timer,255
clr temp1
sei
;------------------------------
main:
clr temp1
Read:
OUTi DDRB, (1<<PB3) | (1<<PB4)




        ldi ZH,High(Array*2)  ;загрузка начального адреса массива
        ldi ZL,Low(Array*2)

        ldi Temp,0            ;прибавление внутр. адреса
        add ZL,Temp1
        adc ZH,Temp

        lpm                   ;загрузка из ПЗУ

         cpi temp1,10
breq main
inc temp1
;=====================================
LDI pob, 8

back1:
       SBRC R0, 0
       RJMP bitset
           ; Установить сегмент в 0 (горит)
           OUTi PORTB,(0<<PB3)|(0<<PB4)
           OUTi PORTB,(1<<PB3)|(0<<PB4)
       RJMP bitunset
       bitset:
           ; Установить сегмент в 1 (погашен)
           OUTi PORTB,(0<<PB3)|(1<<PB4)
           OUTi PORTB,(1<<PB3)|(1<<PB4)
       bitunset:
       LSR R0
       DEC pob
   cpi pob,0
   BRNE back1 
;============================================
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rcall wait
rjmp read 
;--------------------------------
wait: ;Все что снизу задержка на таймере.
ldi tim,0
out tcnt0,tim
wt1:
in tim,tcnt0
cp tim,timer
brlo wt1
ret
;-------------------------------------

Array:
.DB   0b00100001, 0b01111101 ; 0, 1
.DB   0b10101000, 0b00111000 ; 2, 3
.DB   0b01110100, 0b00110010 ; 4, 5
.DB   0b00100010, 0b01111001 ; 6, 7
.DB   0b00100000, 0b00110000 ; 8, 9

Программу то есть прошивка (на Asm) писал я.

ЗЫ: прошивка на СИ из видео урока.

Edited by hardbar

Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

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 Михаил Карнаухов
      В общем, во встроенных библиотеках Proteus нет МК PIC12F635. И мне нужна какая-нибудь сторонняя библиотека, что бы там был этот МК
    • By Sergey Krugov
      Доброго времени суток дня и ночи!!! Я конечно понимаю, что за это время уже успел надоесть вам, но прошу откликнуться к просьбе о помощи. 
      Проблема заключается в следующем:

      В данной схеме используется Atmega8
      Фьюзы:

      При симуляции схемы происходит следующее:


      А дальше ничего не происходит. 
      Возникает также проблема такого рода: 

      Почему-то Протеус ругается на это,  но при удалении этой строки из кода в Протеусе, схема начинает вроде бы работать, но дальше setup на ЖКИ ничего не появлется. Очень прошу помочь понять, что не так. Мб на железе это всё бы и работало. Как разрешить эту проблему в программе?
      Я буду очень благодарен всем, кто откликнется на мою проблему. Надеюсь вы не оставите это без внимания. Очень надеюсь...
    • By Anton Chehonin
      Вот сам код программ
       
      Текст программы МК
      /*******************************************************
      Chip type : ATmega8
      Program type : Application
      AVR Core Clock frequency: 8,000000 MHz
      Memory model : Small
      External RAM size : 0
      Data Stack size : 256
      *******************************************************/

      #include <mega8.h>
      #include <delay.h>

      // Alphanumeric LCD functions
      #include <alcd.h>

      // Standard Input/Output functions
      #include <stdio.h>
      #include <stdlib.h>

      // Declareyourglobalvariableshere

      float s;
      unsigned long int k0=0,k1=0,k2=0,k3=0,k0123=0;
      unsigned long int k4=0,k5=0,k6=0,k7=0;//k4567=0;
      unsigned long int k8=0,k9=0,k10=0,k11=0;//k891011=0;
      unsigned long int k12=0,k13=0,k14=0,k15=0;//k12131415=0;
      unsigned long int k16=0,k17=0;
      char k=0;

      void main(void)
      {
      // Declare your local variables here

      char buffer[20];


      char a,b,c,d,e,f;
      // Присваивание переменным a,b,c численные значения 63 05 00 01 CF A1
      a=0b01100011;
      //63
      b=0b00000101;
      //05
      c=0b00000000;
      //00
      d=0b00000001;
      //01
      e=0b11001111;
      //CF
      f=0b10100001;
      //A1

      DDRD.2=1;
      PORTD.2=0;

      // USART initialization
      // Communication Parameters: 8 Data, 1 Stop, No Parity
      // USART Receiver: On
      // USART Transmitter: On
      // USART Mode: Asynchronous
      // USART Baud Rate: 9600
      UCSRA=(0«RXC) | (0«TXC) | (0«UDRE) | (0«FE) | (0«DOR) | (0«UPE) | (0«U2X) | (0«MPCM);
      UCSRB=(0«RXCIE) | (0«TXCIE) | (0«UDRIE) | (1«RXEN) | (1«TXEN) | (0«UCSZ2) | (0«RXB8) | (0«TXB8);
      UCSRC=(1«URSEL) | (0«UMSEL) | (0«UPM1) | (0«UPM0) | (0«USBS) | (1«UCSZ1) | (1«UCSZ0) | (0«UCPOL);
      UBRRH=0x00;
      UBRRL=0x33;


      // Alphanumeric LCD initialization
      // Connections are specified in the
      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
      // RS - PORTС Bit 0
      // RD - PORTС Bit 1
      // EN - PORTС Bit 2
      // D4 - PORTС Bit 3
      // D5 - PORTС Bit 4
      // D6 - PORTС Bit 5
      // D7 - PORTD Bit 7
      // Characters/line: 20
      lcd_init(20);
      lcd_clear();
      delay_ms(1000);
      while (1)
      {
      printf("%c%c%c%c%c%c",a,b,c,d,e,f); // отправка в порт

      //принимаем байты
      k=getchar(); // 0 байт
      if (k==99) {PORTD.2=1;}
      k0=getchar(); // 1 байт Активная энергия+
      k1=getchar(); // 2 байт
      k2=getchar(); // 3 байт
      k3=getchar(); // 4 байт
      k4=getchar(); // 1 байт Активная энергия-
      k5=getchar();
      k6=getchar();
      k7=getchar();
      k8=getchar(); // 1 байт Реактивная энергия+
      k9=getchar();
      k10=getchar();
      k11=getchar();
      k12=getchar(); // 1 байт Реактивная энергия-
      k13=getchar();
      k14=getchar();
      k15=getchar();
      k16=getchar();
      k17=getchar(); // 19 байт


      k0=k0«24;
      k1=k1«16;
      k2=k2«8;
      k0123=k0|k1|k2|k3;


      s=k0123;
      sprintf(buffer,"A+=%.4fkWh",s/2500);
      lcd_gotoxy(0,0);
      lcd_puts(buffer);

      // k4=k4«24;
      // k5=k5«16;
      // k6=k6«8;
      // k4567=k4|k5|k6|k7;
      // s=k4567;
      // sprintf(buffer,"A-=%.4fkWh",s/2500);
      // lcd_gotoxy(0,1);
      // lcd_puts(buffer);
      //
      // k8=k8«24;
      // k9=k9«16;
      // k10=k10«8;
      // k891011=k8|k9|k10|k11;
      //
      //
      // s=k891011;
      // sprintf(buffer,"R+=%.4fkVarh",s/2500);
      // lcd_gotoxy(0,2);
      // lcd_puts(buffer);
      //
      //
      // k12=k12«24;
      // k13=k13«16;
      // k14=k14«8;
      // k12131415=k12|k13|k14|k15;
      // s=k12131415;
      // sprintf(buffer,"R-=%.4fkVarh",s/2500);
      // lcd_gotoxy(0,3);
      // lcd_puts(buffer);

      delay_ms(1000);
      lcd_clear();

      }
      }
    • By Daniil Mask
      Здравствуйте, не могу понять как сделать такую систему на базе электромоторчика.
      Принцип работы:
      Катушка с нитками установлена на электромоторчике.
      нитку легко можно разматывать руками, а моторчик держит эту нить под натяжением но так чтобы не рвал.
      Длина нити около 20 метров.
      и как только мы отпускаем нить она заматывалась обратно.
      все это должно быть максимально маленьким и потребляло мало электричества.
      Ну на сколько это возможно. 
×
×
  • Create New...