Jump to content
admin

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

Recommended Posts

В целом не плохо! есть более изящные методы - но мы пока их трогать не будем - в вашем коде например можно в кейсе оставить только выбор портов а задержку сделать общуу после выбора порта сократив тем самым количество строк :)

А вобще - вы написали код который в случайном порядке зажигает на 1 секунду какой либо из портов....

Даю наводку

А что если вы случайные числа примените не к выбору порта а к времени свечения от 1 до 2 секунд например?

;)

Спасибо!

Старался пока по заданию выполнить, в дальнейшем с набором опыта буду импровизировать :)

Конечно же в ближайшее время выложу более компактный код.

Еще раз спасибо Вам!

Share this post


Link to post
Share on other sites

Ваше участие - лучшая благодарность!


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

Share this post


Link to post
Share on other sites

Готов 4 урок и практика к нему!

Господа - а что так тихо по домашнему заданию? У всех получилось? Не пренебрегайте... Я ведь специально стараюсь подобрать задачу на самостоятельную работу :)


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

Share this post


Link to post
Share on other sites

Регуляторы ViperPlus - решения для источников питания на любой вкус

Решения ViperPlus от STMicroelectronics для построения сетевых источников питания мощностью до 20 Вт любой топологии и конфигурации. Разнообразный выбор микросхем, 50 отладочных наборов и онлайн-симулятор E-Design Suite.

Подробнее

Вот моя домашка.

http://youtu.be/KlAb2iIz6sM

#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
char array[10]={

0b11000000, 0b11111001,
0b10100100, 0b10110000,
0b10011001, 0b10010010,
0b10000010, 0b11111000,
0b10000000, 0b10010000 }; //масив от 0 до 9
void options_port()
{
DDRB=0xff;
PORTB=0Xff;
DDRC=0xff;
PORTC=0xff;
}
int main(void)
{
options_port();
int i=0;
int a=0;
int b=0;
int c=0;
while(1){
 a=rand() % 10;
 b=rand() % 10;
 c=rand() % 10;
   while(i<200){


  PORTC=0b11111110;
  PORTB=array[a];
  _delay_ms(1);

  PORTC=0b11111101;
  PORTB=array[b];
  _delay_ms(1);

  PORTC=0b11111011;
  PORTB=array[c];
  _delay_ms(1);

  i++;
 }
 i=0;

}
}



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

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

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

Share this post


Link to post
Share on other sites

А у меня проблемка, не хочет работать даже пример из видео. такое ощущение после установки "PORTB = 0xFF;" что то происходит и дальше дебаг не идет.

Вот код: http://gyazo.com/cfd7ddffeb91b045e6936b6e261a93a3

А вот что я вижу когда делаю "Step Over" на "PORTB = 0xFF;": http://gyazo.com/aa706403e1ac2d49bfe8a9b7060fadda

Если же закоментировать delay то выполение переходит на "PORTB = 0x00;", если потом снова нажать на "Step Over" то выполение остается на "PORTB = 0x00;", те. не переходит на while: http://gyazo.com/71b6c936f27861ae7c359882ff11e22d

Может я что то не сконфигурил? HELP Please :)

Share this post


Link to post
Share on other sites
                     

MAX77654 – уникальный SIMO PMIC-преобразователь нового поколения

Компания Maxim Integrated выпустила новый PMIC-преобразователь, позволяющий увеличить время работы портативных устройств до 20%. Революционная технология SIMO сокращает количество компонентов в цепи питания до 40% по сравнению с типовыми решениями.

Подробнее

init вроде как зарезервированная С

переназоваите функцию типа init_ports

И на счет делеев - таки да ! если надо дебаг - коментите строки с делеями! А то оно выбрасывает в бибилиотеку делея!


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

Share this post


Link to post
Share on other sites

переназвал все равно зависает на "PORTB = 0x00;" =(

И еще пару вопросов по теории:

Зачем нужны ограничивающие резисторы? и почему именно 220 Ом?

Если написать:

while(1)
{
	PORTB = 0xFF;//PORT_ON;
//_delay_ms(1000);

PORTB = 0x00;//PORT_OFF;
//_delay_ms(1000);

PORTB = 0xFF;//PORT_ON;
}

то дебаг скачет со 2-ого PORTB на 3-ий PORTB. почему на 1-ый не идет не знаю???

Edited by admin

Share this post


Link to post
Share on other sites

"Зачем нужны ограничивающие резисторы?" - чтобы ограничить ток. Почитайте в даташите допустимый ток порта и по закону Ома посчитайте какой ток будет идти при данном сопротивлении. Также у светодиода есть рабочий ток. Вот насчет светодиодов http://cxem.net/beginner/beginner54.php

Share this post


Link to post
Share on other sites

По поводу непонятного поведения дебага грешу на последнюю студию beta 6.2. Тк. в протеусе код отлично работает. Буду переустанавливать на стабильную. =)

Share this post


Link to post
Share on other sites

У меня вторая и нет глюков. Весь код покажите я у себя запущу проверим


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

Share this post


Link to post
Share on other sites

Все правильно!

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

Добавьте еще одну запись - любую и увидите результат! Либо же из цыкла вынесите для дебага - тогда тоже пройдут все шаги !


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

Share this post


Link to post
Share on other sites

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

не совсем понял. Смотрите если нету след. степа но есть цикл, то он должен возвращатся на 1-ую инструкцию.

В качестве примера можете расскоментировать "PORTB = 0xFF" тогда он будет бегать по 2-ой и 3-ей инструкции а на 1-ую не заходить

Т.е.:

while(1)
{
	PORTB = 0xFF;// вот тут он не будет останавливаться почему-то

	PORTB = 0x00;//PORT_OFF; // тут будет начало цикла, те при прогонке эта почему то будет 1-ая инструкция

	PORTB = 0xFF;//тут будет конец цикла, последний степ. после чего он должен будет перейти на 1-ую, а не на 2-ую
}

Edited by admin
CODE для чего тэг?

Share this post


Link to post
Share on other sites

попробуйте изменить цикл в мейн функции на

do
{
  PORTB = 0xFF;// вот тут он не будет останавливаться почему-то
PORTB = 0x00;//PORT_OFF; // тут будет начало цикла, те при прогонке эта почему то будет 1-ая инструкция
}
while(1);

Edited by admin

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

Share this post


Link to post
Share on other sites
PORTB = 0xFF;// вот тут он не будет останавливаться почему-то

Оптимизацию проверьте, должна быть выключена


Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Share this post


Link to post
Share on other sites

Доброго времени суток, хотелось бы побольше узнать про всякие операции

#, ; ,{}, include, main, void и так далее: что они означают и что в какой последовательности делать?

Share this post


Link to post
Share on other sites

Доброго времени суток, хотелось бы побольше узнать про всякие операции

#, ; ,{}, include, main, void и так далее: что они означают и что в какой последовательности делать?

http://yandex.ru/yan...&clid=9582&lr=5

ИМХО, перечитывать и пересказывать это всё нет никакого смысла. Это основы языка, а не особенности микроконтроллеров, про которые нужно рассказывать в уроках.

Share this post


Link to post
Share on other sites

Туда же добавлен пятый видеоурок (практика и домашнее задание).

Ждем ваших решений для оценки.

Share this post


Link to post
Share on other sites

post-20311-0-91714200-1396804797.gif

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

Edited by Goodefine

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Share this post


Link to post
Share on other sites

Соглашусь с Goodefine. Даже с точки зрения портативных устройств, тратить на опрос кнопки около 2мА - не лучшее решение..

Share this post


Link to post
Share on other sites

5/220=22.7 ma


Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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...

  • Сообщения

    • По факту у флажка меньше. Кусочек отколот
    • Принцип работы блока - обратноходовый со стабилизацией. Без резонанса и синусоиды. Как бы да, но работает энергия индуктивности трансформатора. Конденсатор только разделяет напряжения источника и постоянной составляющей на первичке. Хотя напряжение на C920 действительно связано с амплитудой импульса обратного хода (поэтому не обязательно равно половине питающего). Обычный полумост как правило работает на вторичку симметрично, в двухтактном режиме. Этот не симметричный, но постоянный ток по первичке все же не течет. Типа 3/8-ых моста, не знаю.
    • Но это ничуть не умаляет ваших стремлений. Ну да, я же и говорю - вы его ещё не открыли. Засим, если позволите, я буду следить за вашими успехами, но молча. Удачи.
    • А не все подряд. В отверстия от сверла 1,6 МГТФ-1,5 практически не влазит. Хотя это наименьшая из всех проблем на пути к сборе всего в единую конструкцию, я описывал ранее это  Хотя сейчас разве что финансово будет тяжко, радиаторы, силовик и банки.
    • amp_vol.lay6 out_stage.zip вот все картинки   
    • Ну в мафоне "весна" там да, фетр. А тут всё миниатюрное и стоит какое то синтетическое колечко, такое тонкое что аж прозрачное.  Рассказать как напечатать детальку на 3д принтере? Это не просто, пришлось накрутить сопло 0,02мм и на низкой скорости с охлаждением с 5 попытки получилось. Да попался в объявлениях местных, девушка (как оказалось) продавала в полном комплекте с коробочкой, боковым отсеком для батарей. И за 800 рублей всего. Только ради отсека и стоило взять, у меня такого не сохранилось. Заодно и проверю "таким родился" или нет. Если более простой будет без фона, то и старшая модель должна быть без него. Я щас полежал в ночи послушал, всё таки напрягает. Особенно если негромко слушать. Такое ззззззззззззззз постоянное, сама запись качественная, шума ленты практически нет, зато есть шум мотора и он портит всю картину... 
    • Это круто. Это не магнитный усилитель. Сказано же : регулировка индуктивности. В СССР не было ЕГЭ. Лучше ферритов.
  • Similar Content

    • By SAYMPR
      Друзья ! Нужна помощь,есть схема бортового устройства в протеусе,так же и программа на С.Не получается  программу связать со схемой.Помогите пожалуйста!
      Протеус принимается только асемблер,а мне нужен С.

    • By ARV
      Вот такая плата была когда-то давно разработана и изготовлена... Но ни разу не включалась, не проверялась и не налаживалась.
      Схема с перечнем сохранилась только на бумаге.
      Схема предназначалась для изучения/освоения микроконтроллера AT90PWM3 и CAN, использование их для управления трехфазным инвертором. 
      На плате установлены:
      микроконтроллер AT90PWM3-16SQ в типовой обвязке с кварцем; внешний CAN-контроллер MCP2510-I/SO; драйвер CAN-шины MCP2551-I/SN; регистр SN74HC597 для ввода 8 дискретных сигналов; 4 оптрона ILD74 для развязки дискретных сигналов; Операционный усилитель AD824AR для аналоговых сигналов, подаваемых на МК; элементы N74AHCT86D для возможности инвертирования выходных сигналов (при помощи перемычек) буфер SN74AC244DWR для умощнения выходных сигналов; преобразователь питания ИРБИС МПА10А (входное напряжение 9...18В); необходимая обвязка, включая восстанавливаемый предохранитель, кварц, защитные диоды на входах и т.п. На плате много контрольных точек, есть технологические перемычки. Схема оттрассирована в расчете на то, что МК формирует 3 двуполярных ШИМ-сигнала (т.е. всего 6 ШИМ-ов для верхних и нижних ключей отдельно)  возможностью индивидуально проинвертировать каждый (т.к. драйверы IGBT могут иметь как прямые, так и инверсные входы). 4 аналоговых сигнала с датчиков тока или напряжения поступают в МК для реализации ОС и защит. Управление ведется по CAN и с помощью 8 дискретных сигналов.
      Больше подробностей вспомнить не могу...
      Плата, как видите, даже не мылась от канифоли - так и пролежала 10 лет... Паялась профессиональнми монтажниками вручную, трассировалась тоже, но за качество, увы, не порчусь головой...
      Думаю, плата может быть хорошей основой для самодельного инвертора или как экспериментальная основа для изучения микроконтроллера, CAN-контроллера и шины, а так же вообще для всяких поделок. 
      Отправлю почтой РФ комплект: 
      Схема - 1 лист А1 эскиз размещения компонентов на плате - 1 лист А4 (немного поврежден, но читаем) перечень компонентов - 2 листа А4 эскиз печатной платы - 1/2 листа А4 плата в сборе дополнительный контролер AT90PWM3B (на плате распаян другой - AT90PWM3) Цена 3000 рублей, доставка отдельно. Бонусом могу добавить дополнительный CAN-контроллер и CAN-драйвер.
    • By WetCrow
      Добрый день!

      Пытаюсь настроить на Atmega8 Asynchronous Clock. Цель -- сделать часы.
      По задумке, мк работает на частоте 1МГц (фьюзы не трогаю, оставляю заводские значения), к пинам TOSC1/TOSK2 подключается кварц на 32.768 кГц, а Timer2 настраивается таким образом, что генерирует прерывания один раз в секунду.
      Вот, что я делаю:
      ASSR |= 1 << AS2; TCCR2 = 0b00000101; TIMSK |= 1 << TOIE2; sei();
      Нужно ли подключать кварц с конденсаторами, или без -- не понял. В даташите информации не нашёл. Пробовал и так, и эдак -- разницы не заметил.
      Что получилось:
      В Протеусе всё вроде работает правильно, однако, даже если отсоединить кварц, это ни на что не влияет. На макетной плате схема работает раза в 1.5 быстрее, чем нужно; опять таки, отсоединение кварца ничего не меняет. В чём я ошибаюсь, чего не учитываю?

      К сообщению прикладываю файл прошивки и протеуса.
      Примечания:
      в Протеусе сделал имитацию дисплея на светодиодах, так как встроенный вариант не работал корректно. Для того, чтоб цифры мигали медленнее, можно раскомментировать строку "#define DEBUG_BLINKING" -- иначе в протеусе не рассмотреть, что получается. Пишу на C++ под avr-g++, впрочем, никаких фишек языка не использую. clock.cpp clock_build_with_LEDs.pdsprj
    • By MirVsem
      Добрый день.
      Есть интересные модули ибп для слаботочки до 1А.
      m.aliexpress.ru/item/4000109380893.html
       По цене идеально подходит для зоопарка роутеров, IoT устройств... Переключение на резерв (туда-обратно) без просадки. Зарядка литиевой банки как положено, всякие защиты от перегрузки и прочее. Казалось бы все замечательно. 
      НО как всегда не без ложки дёгтя.
       Защита от переразрядки работает неадекватно. Хотя возможно это не сама защита, а повышающий модуль. На пороге ~3в у него срабатывает циклический перезапуск и так пока банка не просядет ниже 3в. Точно померять нечем.
      Из наблюдений. Проверил напряжение переключается с 12в на 9в и щелчки. Естественно нагрузка в это время дико насилуется (роутер свистит минут 5 пока полностю не отключится)
      Вопрос к гуру. Возможно ли что-то доработать в даном модуле чтобы исправить этот досадный баг?
    • By Юлия Михайлова
      Требуються люди умеющие работать с микроконтролерами esp 32 и stm32 , так же будет плюсом опыт работы с raspberry , требования опыт работы не мение 1,5 года , возраст не старше 35 лет , готовы взять на удаленную работу просьба отправлять резюме , и звонить по номеру +380 (68) 227 82 52
×
×
  • Create New...