Jump to content
admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

Recommended Posts

Ребят, давайте по теме. Понятно, что по скорости работы, асм впереди. Но по скорости осваивания..... Да и тема на чем писать, есть на любом форуме.

Ожидаем 3 часть. Тема очень полезна, для начинающих. Огромное спасибо топикстартеру.

kobraz продолжайте уроки дальше. Не останавливайтесь.

Share this post


Link to post
Share on other sites

hardbar, что вы хотите этим доказать? Что асм куда компактней чем си?

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)

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

Да, очень удовлетворили.Спасибо! Надеюсь не затруднило?

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

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

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

Не подскажите как это сделать?

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

capicator

Уважаемый - вы очень напрасно не пользуетесь поисковиками!

http://avrstudio5.wordpress.com/2013/03/07/using-winavr-with-atmel-studio-6-0-or-later/

В следующих видеоуроках начинается практика и задачи на самостоятельную работу!

Если вы не пересилите свою лень - то у вас может ничего ен получиться....

Share this post


Link to post
Share on other sites

capicator

Уважаемый - вы очень напрасно не пользуетесь поисковиками!

http://avrstudio5.wo...o-6-0-or-later/

В следующих видеоуроках начинается практика и задачи на самостоятельную работу!

Если вы не пересилите свою лень - то у вас может ничего ен получиться....

Да не переживайте вы за меня.

Просто сколько разных людей столько и вопросов соответствующих.И к этому надо быть готовым.

А вообще то на часто повторяющиеся и другие вопросы составляется FAQ.

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

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

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

Все правильно. Гугл рулит. От WinAvr вам потребуется только

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

Но судя по вопросу, не загоняйтесь. Работайте в Студии.

Ведь выходной код зависит не только от компилятора, но и

от его настройки. От настройки даже больше.

Если критичен размер , пишите на АСМе. Правда и в нем

размер зависит от рук.

Начните и все получится.

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

Edited by croc19

Share this post


Link to post
Share on other sites

Все правильно. Гугл рулит. От WinAvr вам потребуется только

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

Но судя по вопросу, не загоняйтесь. Работайте в Студии.

Ведь выходной код зависит не только от компилятора, но и

от его настройки. От настройки даже больше.

Если критичен размер , пишите на АСМе. Правда и в нем

размер зависит от рук.

Начните и все получится.

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

Согласен что все зависит от настроек, но в том то и изюминка была чтоб без них (по умолчанию).

Перейти с ассемблера на Си?

Можно узнать причины?

Share this post


Link to post
Share on other sites

Здесь, конечно, не место для споров. Однако спрошу. почему у Вас в программе массив имеет значения от 0 до 9 (всего 10), а выводится от 0 до F и "пустой" символ (все 17). И где спрятан тот скрытый вызов процедуры ReadArray? Ведь Вы в главном цикле ее не вызываете и не используете прерываний, чтобы это сделать. Может я что-то не рассмотрел, тогда не прочь извлечь урок для себя.

Share this post


Link to post
Share on other sites

Извиняюсь. Скинул не ту прошивку это каркас был. Код уже поправил (скинул реальный код который был в AVR studio) . Прошу админа по удалять лишние посты даже видео. дабы не засорять тему.

Share this post


Link to post
Share on other sites

Добрый День! Отличный курс. Раскажите новичку я видел в самом конце лекций планируется собирать все на железе. Можете перечислить, что понадобится для этого? какие детали? какой лутше (или какой будет использоватся) программатор? и т.д. Что бы не возникло потом проблем с закупкой необходимого.

Заранее спасибо! :)

Share this post


Link to post
Share on other sites

Понадобится макетная плата, соединительные провода для макетной платы, сам микроконтроллер, резисторы, светодиоды, кнопки, программатор, опционально дисплей. Я первое время использовал простой LPT программатор, а потом заказал с китая программатор который работает через USB.

Share this post


Link to post
Share on other sites

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

для амперметра нужен будет ОУ lm358 + пара переменных резисторов для подстройки на 10 и 100К

программатор конечно - что бы прошить МК

Рекомендую использовать clone MK II

Он работает напрямую со студией по USB и нам будет очень удобно ! Особенно когда будем изменять фьюзы !

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

Но если самому делать не получается - USBASP AVR на ебее или гдето под рукой красная цена на него на ебее 2 доллара! у нас может быть до 10! как найдете !

Но со студией он не работает - и видеоурок по нему я не сделаю так как у меня его нет !

Я лично буду показывать примеры на MKII clone

Edited by kobraz

Share this post


Link to post
Share on other sites

Сделал домашку только по своему. Оцените.

http://youtu.be/fF0X4oCtyoE

Исходник.

#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
char array[10]={
0b11111001, 0b10100100,
0b10110000, 0b10011001,
0b10010010, 0b10100000,
0b11111000, 0b10000000,
0b10010000, 0b11000000}; //масив от 0 до 9
void options_port()
{
DDRB = 0xff;
PORTB = 0X00;
}
int main(void)
{
while(1)
{
options_port();
int i=0;
while(i<10)
{
PORTB=array[i];
_delay_ms(1000);
i++;
}
i=0;
}
}

Edited by hardbar

Share this post


Link to post
Share on other sites

Дабы не захламлять эту тему м.б. обсуждение ошибок в домашних заданиях вынести в отдельную тему?

Share this post


Link to post
Share on other sites

Я тоже за подобный подход. Основная тема исключительно по делу. Всякие отступления в сопутствующей.

kobraz, откроете отдельную тему?

Share this post


Link to post
Share on other sites

Думаю нужно почистить эту и вопросы по домашке вести в ней - ибо по вашим стопам пойдут еще люди и им прийдеться искать на форуме соответствующие топики !

Так что пишите пока сюда - а там админы почистят лишнее!!!

Share this post


Link to post
Share on other sites

Я по моему очень подробно обьяснил - использовать ВинАвр нет никакого вобще смысла!

А вы уверены, что используя шестую студию вы не используете WinAvr?..

Share this post


Link to post
Share on other sites

Уверен!

Так как винавр у меняне установлен а согласно информации в сети - винавр закончил свое развитие как самостоятельный проект и магическим образом превратился в тулчейнс атмела для 4 студии! После чего время умноженное на количество наработок по данному направлению корпорацией Атмел не дает нам права говорить о компиляторе 6 студии как о ВинАВР

Хватит уже мусолить безсмысленную тему! ВинаВР прекрасный проект - и если он опять будет развиваться и поддерживаться может быть я перейду на него! Но на сей момент пользоваться ПО остановившем своей развитие 4 года назад в сфере где развитие идет семимильными шагами - это не самый разумный подход!

Есть хороший анек на тему, когда у вовочки спросили кого бы он предпочел вдуть: Машеньку - 1 раз, или Снежану Денисовну - 2 раза! На что вовочка ответил что Машенька - оно конечно красавица - но два раза есть два раза :)

Выбор ИДЕ дело каждого!

Share this post


Link to post
Share on other sites

Опять 25. WinAvr это набор утилит для написания программ.

менеджер проекта, блокнот ..... и отличный компилятор.

Этот же компилятор применяется и в 6 студии.

Блокнот в 6 лучше. И подсказки и подсветка и .....

Остальное не критично.

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 Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • 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; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
×
×
  • Create New...