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

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


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

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

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

Реклама: ООО ТД Промэлектроника, ИНН: 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

2 часа назад, DmitryS сказал:

создано виртуальное устройство в Протеусе 7.10

Отлаживать за вас проект чего-то лень... Но по-моему, что-то действительно  напутано в "упоре" в 255 при вычислении числа для OCR2. По вашей формуле переполнение получается при 223 с АЦП. А 223 и соответствует где-то 50 с чем-то градусам...

В

2 часа назад, DmitryS сказал:

if (v > 254) {v = 255;}

какие типы сравниваются? Может переполнение уже до этого сравнения?

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

13 минуты назад, Lexter сказал:

что за числа в регистрах при 51, 52

а они тут причем? у него данные АЦП в регистре ADCL увеличиваются только до 200 при 0,5в на входе,  при увеличении напряжения выше 0,5в в регистре остается значение 200. регистр ADCН вообще всегда равен 0.

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

7 часов назад, Lexter сказал:

какие типы сравниваются? Может переполнение уже до этого сравнения?

    

Скрытый текст

 

#define MIN_PWM 50  // вентиляторы должны всегда вращаться , значение соответствующее примерно 20% шим
     #define MIN_ADC 120  //минимальное значение AЦП , соответствующее 30 градусам
    
     unsigned int v = MIN_PWM;
     unsigned int temperature;

     temperature = ADC_GetBuf(); //читаем програмный буфер АЦП
    
     if (temperature < MIN_ADC) {temperature = MIN_ADC;}
        
     v = MIN_PWM+((temperature - MIN_ADC)*2);
    
     if (v > 254) {v = 255;}
            
     if (temperature < MIN_ADC ) {v = MIN_PWM;}
        
     OCR2 = (unsigned char)v;

 

 

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

Почему питание на AVCC не подается?

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

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

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

@COKPOWEHEU  , Спасибо !  Дело все было в не подключенном питании AVCC  в протеусе . Что то проморгал дурень старый . Но я сегодня вечером хотел собрать все в железе на макетке , там то я бы подключил питание по любому  . 

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

  • 2 недели спустя...
19 часов назад, snn_krs сказал:

...И есть делитель на 8 - CKDIV8...

Это только один из вариантов установки предделителя тактовой частоты (System Clock Prescaler) в регистре SLKPR, который никто не запрещает устанавливать программно в 1, 2, 4, 8, 16, 32, 64, 128 и 256.

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

  • 2 недели спустя...

Есть оболочки с ручным выбором частоты програмирования? Случайно выставил работу attiny2313 от внутреннего генератора на частоту 16 kHz (int RC 128 kHz + DIV8). Программа работает, но программатор (USBASP) не видит чип, джампер slow не помогает, я так понимаю нужно снизить скорость до 2-4 kHz , но как?

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

1 час назад, Jeniok сказал:

...программатор (USBASP) не видит чип, джампер slow не помогает, я так понимаю нужно снизить скорость до 2-4 kHz , но как?

"Пересесть" на другой программатор.

avrisp.jpg.41e427014be614611063fe1474e8f864.jpg

 

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

Эхх, опять програматор собирать, хотя может обойдусь каким нибудь fuse bit doctor' ом. Мне всегда свистка usbasp хватало, собирать очередной програматор...

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

  • 4 недели спустя...

Подскажите,пожалуйста.

Если я сделаю так 

uint32_t col=15;

for (uint8_t i=0  ;   i < col  ;  i++)

{

      const uint8_t index=(i*col)+7 ;

после каждого прохода (i=0, i=1, i=2 и тд) цикла,index будет увеличиваться(как я понимаю переинициализироваться  ) или пока цикл не закончится, index будет иметь значение (0*15)+7=7

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

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

Ребят может кто поможет. Нашел схемку RGB контролера для внедрения в приборную панель автомобиля, вот и я решил её внедрить (исходники и схема в зипе). Траванув и собрав плату, оттестив её на RGB ленте, но не приняв во внимание имеющиеся ЗИП в процессе переделки столкнулся с проблемой. По 3 каналу в силу обстоятельств, мне нужно использовать имеющиеся у меня мини светодиоды с общим КАТОДОМ. Варианта в этом случае я так понимаю два, или поменять в прошивке 

  
if (tick < red_pwm_3)
    PORTC |= (1 << LED_RED_3);
  else
    PORTC &= ~(1 << LED_RED_3);

  if (tick < green_pwm_3)
    PORTC |= (1 << LED_GREEN_3);
  else
    PORTC &= ~(1 << LED_GREEN_3);

  if (tick < blue_pwm_3)
    PORTC |= (1 << LED_BLUE_3);
  else
    PORTC &= ~(1 << LED_BLUE_3);

на 

if (tick < red_pwm_3)
    PORTC &= ~(1 << LED_RED_3);
  else
    PORTC |= (1 << LED_RED_3);

  if (tick < green_pwm_3)
    PORTC &= ~(1 << LED_GREEN_3);
  else
    PORTC |= (1 << LED_GREEN_3);    

  if (tick < blue_pwm_3)
    PORTC &= ~(1 << LED_BLUE_3);
  else
     PORTC |= (1 << LED_BLUE_3);

естественно в место N - канального,  нужно поставить P- канальный полевик. Или же воспользоваться инвертором к примеру на биполярнике и полевике, что я тоже испробовал. Но в силу обстоятельств по крывож.. ости рук и крывезны мозга, умудрился спалить мегу пока пробовал инвертировать канал. В общем, с начала я не смог переделать прошивку ибо в AVR Studio 7 выдавал две ошибки @echo Building file: $< и #include "hsv_to_rgb.h" и вроде когда, что-то стало получаться, спалил выход меги в процессе экспериментирования с P-канальным полевиком (ибо протеус эмуляцию отказывается запускать)! В общем, испробовал такие вариации схема в PDF на 3 канал - верхняя правая это штатная, верхняя левая это я пробовал без изменения прошивки, а нижняя правая это для переделанной прошивки. Но чет я далее экспериментировать очку.. боюсь в общем, ибо МК по третьему каналу "испустил сизый дым". В общем выручайте, афтомобил без приборки, может кто соберёт прошивку и нарисует схему с правильным конечным ключом. Плизз. Выручайте парни.

rgb_atmega8_v1_2.rar

New Project.PDF

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

ответ на вопрос найдешь в этой теме http://forum.cxem.net/index.php?/topic/115588-555й-таймер-не-знаю-как-правильно-подключить-устройство/&tab=comments#comment-1356203

ЗЫ и прошивку оставь в покое

 

 

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

Всем день наидобрейший. Вопрос знатокам. Делаю небольшой проект на SSD1306. Заказал в китае c SPI интерфейсом.В инете нашел что его можно смоделировать в протеусе и вот это UG-2864HSWEG01 вроде как подходит. Так вот подключил в протеусе этот экранчик, заставку с начальными координатами выводит без нареканий, нот вот дальше одна каша. В железе все даже очень хорошо.Фото прилагаю. Ну и вопрос как это победить, всё таки в протеусе отлаживать программу удобнее. 

IMG_20180920_131241.jpg

2018-09-20_13-21-58.png

2018-09-20_13-20-30.png

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

2 часа назад, Demonrostov сказал:

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

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

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

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

Странные какие то люди, в железе всё работает отлично, но жалуются на какой-то протеус... :wacko:
Да пусть он лесом идёт, если на нём ничего не работает...

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

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

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

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

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

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

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

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

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

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

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

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