Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

UCSRC = ( 1 << URSEL ) | ( 0 << UCSZ2 ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 ); // 8 бит
UCSRC = ( 1 << URSEL ) | ( 0 << UPM1 ) | ( 0 << UPM0 ) ; // контроль четности запрещен
UCSRC = ( 1 << URSEL ) | ( 0 << USBS ); // два стоп бита
UCSRB = ( 1 << TXEN ) | ( 0 << RXEN );

Первой строкой выставлены биты UCSZ1 и UCSZ0.

Второй они уже стерты!!! Третья строка повторяет вторую!

Нужно записывать так:

UCSRC = ( 1 << URSEL ) | ( 0 << UCSZ2 ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 ); // 8 бит

UCSRC  |=  ( 1 << URSEL ) | ( 0 << UPM1 ) | ( 0 << UPM0 ) ; // контроль четности запрещен
UCSRC  |=  ( 1 << URSEL ) | ( 0 << USBS ); // два стоп бита

UCSRB = ( 1 << TXEN ) | ( 0 << RXEN );

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

подскажите

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

а можно ли его использовать, как вход? не повлияет ли это на точность и т д?

Изменено пользователем LexSancho
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Здравствуйте, решил начать изучать программирование МК на Си, умею программировать Ардуино (но это так, для всяких поделок), а вот научиться прогать микроконтроллеры на чистом С считаю для себя полезным делом. Вобщем вопрос, вот есть AVR, PIC а в чём разница, какие плюсы и минусы они противопоставляют друг другу? И какие из них выбрать для изучения новичку. Я вот больше склоняюсь к PIC, так как уже есть программатор для них, а хорошая эта идея или нет, я не знаю.

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

Особенности хранения литиевых аккумуляторов и батареек

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

Тут дело не в направлении а в том что через общий вывод порта течёт ток нагрузки что меняет его потенциал и приводит к помехам.

Если даже сопротивление дорожки с AGND до общего провода будет иметь сопротивление в 1 Ом то при токе в 1мА это уже будет вносить помеху в младший разряд 10-битного АЦП. И смотреть надо не только статику, а ещё и динамические токи - во время переключения порта по шинам идёт большой импульсный ток, может попасть на момент запоминания напряжения в УВХ. Это касается даже порта работающего на вход - ведь у него есть конкретная ёмкость, и если подключить туда высокоскоростной выход какой-то другой схемы то ток перезаряда входной ёмкости порта будет идти через общую шину с соответствующими последствиями.

Это всё актуально только если вы стремитесь за каждым битом разрешения АЦП, если же у вас будет использоваться усреднение или отбрасывание младших разрядов то проблемы-то и не будет.

а можно ли его использовать, как вход? не повлияет ли это на точность и т д?

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

Учение - изучение правил. Опыт - изучение исключений.

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

Alexeyslav,

просто 3 кнопки прицепить хочу, с внешней подтяжкой

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

спасибо за помощь!

Изменено пользователем LexSancho
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
вот есть AVR, PIC а в чём разница

на сегодняшний день разницы уже никакой

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

Не понимаю, то ли я туплю, то ли глючит что то..

Вот код, простой, тестовый. Почему после обработки прерывания от таймера, выполнение начинается снова сначала мейна (то есть, функция preset снова запускается) ? Ведь должно возвращаться в цикл while, откуда и запустилось прерывание...

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
ISR(TIMER0_OVF_vect)
{
PORTD=0xff;
asm("nop");
}
void preset ()
{
DDRD |= (1<<0);
PORTD &=~(1<<0);
DDRD |= (1<<1);
PORTD &=~(1<<1);
DDRB |= (1<<3);
PORTB &=~(1<<3);
sei();
TCCR0 &=~ ((1<<WGM00)|(1<<WGM01)|(1<<CS02)|(1<<CS01));
TCCR0 |= ((1<<CS00)|(1<<WGM00)|(1<<WGM01));
TIMSK |= ((1<<TOIE0)|(1<<OCIE0));
TCCR0 |= ((1<<COM01));
OCR0 = 230;
}
int main(void)
{
preset();
   while(1)
   {
 PORTD |= (1<<1);
 _delay_ms(50);
   }
}

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

А точно до бесконечного цикла доходит? Мне показалось, что сброситься должно было после установки TIMSK. Дело в том, что вы разрешили прерывание OCIE0, но не написали его обработчик. А обработчик по умолчанию - сброс.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

Я проверил. До цикла оно то доходило, но дело было действительно в прерывании по совпадению.. Отключив его или добавив обработчик, проблема решилась:) Спасибо))

Еще хотел спросить. каким способом лучше ставить флаг прерываний I в SREG? я попробовал сделать двумя способами, и результат был разный: SREG |= (1<<7) и sei();

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

Оно и понятно, первый вариант разворачивается в ряд арифметических операций, которые влияют на тот же SREG вполне определённым образом, а SEI - одна команда которая влияет только на один бит.

Учение - изучение правил. Опыт - изучение исключений.

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

Здравствуйте. Вот такие вопросы еще возникли.. В процессе отладки через simulator, в окне processor пишется не та частота, что я выбрал.. соответственно, и время Stop Watch не верное. можно как то сделать, чтоб оно отображалось правильно? и второй вопрос, можно ли сделать, чтоб оно было показано в процессе отладки через Jtag?

Заранее благодарен.

post-130756-0-86372400-1465916024_thumb.png

Изменено пользователем Illusi0ns
Ссылка на комментарий
Поделиться на другие сайты

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

F_CPU - не больше чем простая константа...

Частота задаётся в настройках симулятора и запросто может не совпадать с той на которой реально работает контроллер.

Поэтому, что в F_CPU что в настройках симулятора вы должны указать частоту на которую НАСТРОИЛИ контроллер, а не частоту на которой ВЫ ХОТИТЕ чтобы работал контроллер.

Учение - изучение правил. Опыт - изучение исключений.

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

Спасибо за ответ. Дело в том, что я уже, в ходе изысканий, успел понять, что F_CPU не отображает реальной частоты..) но непонятно, "в настройках симулятора" - это все же, где? А мне нужно ,всего то, чтоб в Stop Watch было реальное время. Вот, допустим, планирую я работать с реальным контроллером на частоте 8МГц, Как мне в симуляторе время померить?

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

Меряй в тактах, они всегда в безразмерных единицах.

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

Учение - изучение правил. Опыт - изучение исключений.

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

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

что то совсем печально..

ладно. такты ведь верно показывает, хоть для симулятора хоть для jtag? а научите меня их в время переводить? правильно ли я понимаю что один такт это, собственно, один импульс резонатора, а там уже, время = кол-во тактов * (1/f) ?

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

В этом легко убедится сравнив время и такты... считает же время с частотой 1Мгц, т.е. 1 такт = 1мкс.

Да и всё равно, разрядность счетчика ограничена - и это ограничение наступает очень быстро.

Учение - изучение правил. Опыт - изучение исключений.

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

Хаха я только что вызнал, как оно делается..)) все легко, просто выделяем этот самый 1МГц и вписываем туда нужное. таким образом, время пересчитывается правильно)

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

Пытаюсь поработать с датчиком ds18b20. Я вот не понимаю, помогите пожалуйста разобраться. запустил я преобразование. следом, хочу проверить, если преобразование закончено - то вывести результат, если не закончено - то вывести это. Для проверки, я так понял, надо посмотреть, что на шине. если 0, значит не закончено. если 1 - пора выводить результат. Но у меня на шине так получается что 1 висит и в процессе обработки (условие if не срабатывает на 0).

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

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

Из описания информация. Только вот, в одном источнике было просто про 0 или 1 на шине, а в другом - после формирования слота чтения смотреть шину. Пробовал всяко - не вышло.

А вот про включить эту функцию, я что то не нашел.. Питание не паразитное. Можно подробнее, пожалуйста?

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

сори перепутал с алармом....

вы должны мастером опустить шину на 1-2мкс , и прочитать состояние шины в течении 15мкс с момента опускания шины с учетом емкости шины, те через 10-13мкс

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

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Да запросто. Чтобы расплавить определённое количество металла, что нужно? Правильно, затратить определённое количество энергии. Вот и посчитайте, какое количество энергии нужно для плавления объёма металла в этой сварной точке. Накиньте на потери из-за теплопроводности металла на отвод тепла окружающим место сварки металлом. Добавьте потери в проводах, на внутреннем сопротивлении конденстора. Посчитайте, сколько энергии надо запасти в конденсаторе. Потом посчитайте, какая при каком напряжении у него должна быть ёмкость. Видите - всё очень просто.
    • Ну вот. Осталось только ёмкость довести примерно до 1000000uF, соединить это кабелем 35-50кв.мм., оснастить соответствующими электродами и схемой заряда. Делов-то.
    • Пришел новый транзистор 4409, впаял его, щелчков нет, включается и выключается без проблем. Теперь вот как победить свист в колонки. В режиме вывода звука стерео этого свиста нет, а вот в 2.1 и 5.1 есть. А усилитель как раз используется в 5.1. Твиттеры выдают свист. а динамики какие то еле слышные пощелкивания с периодичностью в секунду примерно. Даже не пощелкивания, а пукания какие то.  Пукания во всех режимах есть, но они еле еле заметны. VID.mp3
    • Сказать сложно,на ютуб я бы не ориентировался,лучше по моему наш форум почитать. Брехни там много на этих ютубах
    • В общем, всем огромное спасибо за помощь и советы! Собрал по этой схеме с изменением номиналов резисторов, которые указывал выше в ветке. Хочется поделиться опытом, но получится статья)) поэтому постараюсь кратко. Как видите, корпус инкубатора примитивнее некуда, но тем не менее, все работает лучше заводских вариантов! В качестве нагревателя использовал пленку теплого пола, разрезал ее по 25 см и прикрутил на саморезы в крышку. По центру крышки вентилятор от микроволновки (сейчас поставил от ПК на 120мм), сверху и снизу от него смотровые окошки.  Температура на протяжении всей инкубации была 37,7. Из 77 яиц вылупился 61 цыпленок (остальные оказались пустыми, даже зародыша не было, плохо проверил перед закладкой). Основная масса вылупилась на 20-й день на протяжении 10-и часов, от первого и до последнего цыпленка прошло меньше суток. И что самое удивительное, ни одного инвалида или задохлика! До этого пару лет использовали заводской инкубатор, обязательно было несколько с патологией. Конструкция получилась настолько удачной, что даже запаха не было во время вылупки. Сверху на крышке сделал 2 больших отверстия, по бокам в самом ящике по 2 отверстия (всего 4). Вентилятор подключил через гасящий конденсатор. Добился ламинарного движения воздуха, что обеспечило равномерное распределение температуры по всему ящику (разница была 0,1 градус примерно). Ну и бонусом это отсутствие шума, вообще! Для понимания, настенные часы ходят раза в 2 громче, а эта коробочка лежит на полу и тихонько мурчит)) конструкция ещё на стадии испытаний. В дальнейшем будет доработка в виде автоповорота яиц. А пока планируется вторая закладка яиц)) Будут вопросы- с удовольствием помогу, отвечу.  
    • Посоветуйте какой нибудь? А то уже весь ютуб посмотрел. На озоне в ИЗБРАННОМ штук 7 портативных осцилографов .  Поосмотрел один видеоотзыв - всё беру FINIRSI (к примеру) ... Посмотрел второй, третий, шестой видос - FINIRSI отстой , берите другой ..... Так буквально о всех моделях. Я ухе запутался. Я понимаю что мне навароченный и не нужен. Короче что посоветуете? Во всём ремонтном порыве : я хочу посветить себя только ремонту и изучению только аудио технике и компьютеров. Всё остальное мне ни надо.
  • Похожий контент

×
×
  • Создать...