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

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


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

А если использовать команду cbi к 2му биту регистра PINA?

Использовать то никто не запретит, и контроллер даже попытается туда что-то записать. Но в нём аппаратно не реализована такая функция, он просто вхолостую отработает. Но в новых кристаллах такой финт приведет к активации специальной функции - запись в порт PINx приведет к инвертированию регистра PORTx в тех битах где ты записал "1" в PINx.

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

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

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

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

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

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

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

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

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

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

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

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

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

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

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

...точно, это функция toggle.

Вы имеете ввиду команды типа cbi, sbis, sbrs? Куда МК считывает байт?

Функция toggle выполняется записью лог. 1 в порт PIN, перечисленные команды этого не делают. Это скорее справедливо для sbi, out, sts.

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

Всем привет. Решил наконец-то попробовать себя в програмировании AVR, купил 2 микры ATTiny13 и программатор AVR910, поставил CodeVisionAVR и попробовал все это дело подключить. После установки дров сразу же смог прочитать/записать FLASH контроллера, дико обрадовался (редко у меня что-то работает "с включения"). Радость моя была недолгой - после очередного стирания программа начала выдавать такую ошибку - AVRprog error entering programming mode. Я попробовал со второй микросхемой - ошибка появилась после второго считывания, я отключил питание микроконтроллера, и после повторного включения получилось еще пару раз считать память микры. После этого - снова эта ошибка. В чем может быть проблема? Программатор прогой определяется. Боюсь, что испортил микросхемы, возможно ли как-то это проверить? Можно ли питание для микры брать от юсб порта, или надо отдельное?(я подключал к лабораторному бп). Как добиться стабильной работы программатора с контроллером? Прошу совета.

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

Замедли программатор. AVR910 - это масса компромиссов в сторону удешевления конструкции и соответственно функционирует пока на него не дышать. И я сталкивался с несколькими TINY13 которые видились таким программатором одни ТОЛЬКО на большой скорости а другие ТОЛЬКО на маленькой.

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

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

У меня тоже есть 910й, вечная проблема с контактами, пошевелил, постучал и опять в бой.

После собрал стк500 и забыл про всякие там ошибки и другие траблы. И + он с студией работает

Не знаеш как? Спроси у Google'а !!!

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

Проверил контакты, все путем. Без особой надежды поставил перемычку замедления и ... работает! Чип стирается, записывается! Я скачал вот на этом сайте http://www.getchip.n...obnosti-portov/ тестовую прошивку для аттини13, залил ее в микру и затем оттуда "извлек", вот они для сравнения.

post-159789-0-89541000-1437239406_thumb.png

Почему сначала в "быстром" режиме все получалось, а потом выскочила ошибка? Почему в медленном все работает? Можно ли для програмирования брать +5 вольт от юсб, к которому подключен программатор?

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

Прошивка с того сайта не заработала, но я взял хекс из вот этой http://cxem.net/mc/mc104.php статьи и оно заработало! С включения! Я так не радовался, когда на велосипеде научился ездить!

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

вот они для сравнения.

А у снимков не перепутаны названия, случайно?

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Почему сначала в "быстром" режиме все получалось, а потом выскочила ошибка?
Да потому что упростили схему до предела, вот и зависит она от фазы луны и настроения...
Можно ли для програмирования брать +5 вольт от юсб
только если от них будет запитан только контроллер. Иногда получается так что при внутрисхемном программировании питание контроллера связано с другими узлами схемы, которые могут сработать и начать потреблять ток, просаживая и так слабенькое питание.

Надо так же иметь в виду если поставишь конфигурацию такую что контроллер не сможет работать при напряжении которое он получает(кварц на 20Мгц впендюришь, BOR выставишь на 4.5В) то он окажется недоступным программатору без подачи нормального питания.

Кстати имей в виду, что контроллер программируемый подключен в программаторе к USB через диод, это еще 0.4В убирает.

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

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

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

контроллер программируемый подключен в программаторе к USB через диод, это еще 0.4В убирает.

У меня там два диода) :new_russian: Буду использовать платку с 7805 и отдельный бп, юсб хай отдыхает от греха подальше

А у снимков не перепутаны названия, случайно?

Сейчас уже точно не могу сказать, но та прошивка не заработала. Вот скриншот прошивки "фонарика" с паяльника, 100% заработавшей:

post-159789-0-47991300-1437312857_thumb.png

Слева - прошивка с сайта, справа - то, что я "выковырял" из микросхемы. ФФ - это пустые ячейки памяти? С теорией пока у меня туго

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

В данном случае да. Но в общем - пустых ячеек не бывает. То что там ничего не положено - будет прописано FF т.к. это чистое состояние ячеек ФЛЕШ-памяти, но то что там лежит FF в общем случае не означает что ячейка чистая и не является частью программы.

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

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

Всем Добрый вечер ! Имеется вот такая схема

post-187724-0-13112400-1437334690_thumb.jpg

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

post-187724-0-60509000-1437335354_thumb.jpg

.

В Протеусе программа работала без нареканий , Две платы соединенные вместе от лабороторного БП , но не подсоединенные к двигателю , тоже работали отлично , но когда все установил в корпус привода и запитал от от сети 220В , работать стало не так как надо , Такое ощущение что МК переодически сбрасывается , т.е вместо одного деиствия , закрытия ворот , он дважды а може и трижды выполняет другое - открывание ворот , а именно первое действие , которое первым прописано в коде , и ни когда не выполняет дважды второе действие , в моем случае закрывание ворот . На плате блока реле есть джамер , который отсоединяет питание от релюшек , но идикация светодиодами продолжает работать , так вот сняв этот джамер , программа работает отлично , светодиоды загораются так как и положено , Соеденил железо трансформатора , железо двигателя с массой на своей плате , ложных срабатываний стало значительно меньше , я было обрабовался что устранил источник помехи , но не тут то было , переодически может раз через 15-20 , всеравно проскакивает помеха . Пожалуста посмотрите на плату и на схему , чего я накосячил ?

/*
* GarVorota_2.c
*
* Created: 13.04.2015 21:57:50
*  Author: Dmitry
*/


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

#define NAPR_OPEN  PORTB |= (1<<0)//&= ~(1<<0)
#define NAPR_CLOSE PORTB &= ~(1<<0)//|= (1<<0)
#define DVIG_STOP  PORTB |= (1<<1)//&= ~(1<<1)
#define DVIG_PUSK  PORTB &= ~(1<<1)//|= (1<<1)

unsigned char a=1;
//unsigned char b;
ISR(PCINT0_vect) // обработка прерывания
{
   if (!(PINB &(1<<PINB3))) // Только если концевик замкнут
   {
     DVIG_STOP;	  // остановить двигатель
     _delay_ms(50);
     NAPR_OPEN;
     a++;		    // определить направление вращения
     if(a==5)
     a=1;
     }
   if (!(PINB &(1<<PINB4)))  // Защита заклинивания ворот по току двигателя
   {
       _delay_ms(300); // отфильтровываем пусковой ток
       if (!(PINB &(1<<PINB4)))
       {
           DVIG_STOP;	  // остановить двигатель
           _delay_ms(50);
           NAPR_OPEN;
           a++;		    // определить направление вращения
           if(a==5)
           a=1;
       }

   }   
}

void Stop() // Остановка двигателя
  {
   _delay_ms(20);  
   DVIG_STOP;
   _delay_ms(50);
   NAPR_OPEN;
  };


int main(void)
{   // Настрока порта
   DDRB = 0b00000011;
   PORTB = 0b00011111;
   // Настройка и разрешение прерывания PCINT3 PCINT4
   PCMSK = (0<<PCINT5) | (1<<PCINT4) | (1<<PCINT3) | (0<<PCINT2) | (0<<PCINT1) | (0<<PCINT0);
   GIMSK |= (1<<PCIE);    GIFR |= (1<<PCIF);
       sei();

   while(1)
   {
       _delay_ms(1000);
       while (PINB &(1<<PINB2)){}
       switch(a)
       {
           case 1:
           _delay_ms(100);
           NAPR_OPEN; // Вращение на открытие
           _delay_ms(100);
           DVIG_PUSK; // Пуск двигателя
           a=2;
           break;

           case 2: // Stop
           Stop();
           a=3;
           break;

           case 3:
           _delay_ms(100);
           NAPR_CLOSE; // Вращение на закрытие
           _delay_ms(100);
           DVIG_PUSK; // Пуск двигателя
           a=4;
           break;

           case 4: //Stop
           Stop();
           a=1;
           break;
       }

   }
}

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

Хорошо бы развязать питание МК и релейного модуля.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

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

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

Проблема не в развязке, проблема в разводке. Провода идущие на двигатель дают наводку на плату.

Кстати нет блокировочного конденсатора по питанию контроллера, керамика непосредственно возле самого контроллера.

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

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

Вроде , как вопрос решился , заменил резистор R3 на 10 омный , и сбросы прекратились , думаю причина в трансформаторе , съэкономили Niсe на трансе , он даже на холостом ходу теплый под 50о, а когда происходит пуск двигателя напруга просаживается , а так как для питания схемы я сделал полупериодный выпрямитель , да еще ограничил ток резистором , повсей видимости иногда проскакивали пики падения ниже допустимого , смотря в какой момент периода сетевого напряжения происходил пуск двигателя .

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

ребят, кто работал с ик приемниками,подключал их к мк, подкажите

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

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

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

свечу на него светодиодом на 36 кГц
Это как ? :)

это всмысле не пакет протоколом засылаю, а просто подключаю к ножке шим,настроенного на 36 кГц и он непрерывно мерцает на этой частоте.

и вот при этом приемник выдает сигнал только первые 3 секунды

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

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

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

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

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

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

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

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

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

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

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

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