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

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


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

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

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

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

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

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

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

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

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

Я собрал программатор Громова (те же 5 проводков через СОМпорт), прошил мегу8 для usbasp и горя теперь не знаю. И вам того же советую :rolleyes: !

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

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

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

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

у меня от COM порт он ни на одном из компов не заработал.. а от LPT - лет 6 пользовался! пока сначала на usb Протосс не собрал, а потом купил usbasp

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

Пришлось Пентиум 2 доставать с чердака! Раритет однако! Но прошил!

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

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

Порой для этих целей проще использовать ардуинку как многофункциональное программируемое цифровое устройство, которым можно дергать ножками, а ножек у них бывает довольно много. Почему-то я уверен что под нее есть много примеров для программирования множества микросхем - и AVR и ПИКов, и 24Cxx и флеш и т.д.

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

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

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

Константа - это неизменное число.

Спасибо. Ясность ответ внес, но не полную.

константы еще называют магическими числами.

Интересно почему?)

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

void adc_init(void)//инициализация ацп
{
ADCSRA = 0x00;//
ADMUX = 0x4F;//вход 1.22 вольта(встроено), опорное 2.56 в.
ACSR  = 0x80;//выключить компаратор
ADCSRA = 0x86;//включить ацп, предделитель 1/64
}

void Readadc(void)//читаю ацп
{
ADMUX = 0x4F;// то же
ADCSRA |= 1 << ADSC;// начинаю преобразование
while(ADCSRA&(1<<ADSC)){};//жду окончания
v = ADCL;//читаю младший байт в переменную
}

теперь так выглядит настройка ацп, все равно не пашет....

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

с ебэя дорогая выйдет доставка?

Все зависит от продавца. Но там всегда указана цена и доставки в том числе, больше чем написано там платить не нужно будет.

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

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

ADMUX = 0x4F; - выбран в качестве опорного AVcc и 15-й канал мультиплексора = 0V(GND).

Что ты при этом хочешь получить в результате?

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

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

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

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

как я понял на 15-ом канале я должен измерять 0.

прерывание по завершению работы ацп есть.

может я использую переменные не того типа? и если в таком случае попробовать записывать значение через указатель?

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

ADMUX |=0b01101110;
ADCSRA |=0b10001110;
//какой-то код
ADCSRA |=1<<ADSC;
sei();
//какой-то код
ISR(ADC_vect) {v = ADCH;}
//какой-то код

0x000 represents ground - из даташита

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

Подожди пока с прерываниями, ты пока обычную работу АЦП освой. Сделай простой пример - в бесконечном цикле старт измерения, ожидание результата передача через UART обеих частей и ADCL и ADCH. Кстати, у тебя наверно из-за того что не читаешь ADCH в 10-битном режиме ADCL защелкнулось и не меняется до тех пор пока весь регистр не прочитаешь. Начни с основ... 10 бит АЦП - необходимо прочитать обе половинки 16-бит регистра. Можно читать все 16 каналов по очереди и выводить в UART в 16-ричном виде(или приравняв все коды меньше $20 пробелу), после 16-го канала вывести $0D0A тогда в терминале можно будет визуально видеть изменения в удобном виде. Если входы АЦП не подключать - они будут чутко реагировать на поднесение руки, и даже факт вставания с кресла.

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

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

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

по поводу верхнего/нижнего регистров я установил бит ADLAR.

и можно пожалуйста пример старта преобразования/ожидания/чтения

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

Я выше давал на ассемблере.

Регистрами сдвига много не посмотришь терминалкой всегда проще - там и экран поширше.

#define ADC_run SBI ADCSRA, ADSC
.macro wait_adc
SBIC ADCSRA, ADSC
RJMP PC-0x0001
.endmacro
.macro set_io ; использовать регистр ACCUM для загрузки константы в порт
LDI ACCUM, @1 ; 1 такт
OUT @0,	 ACCUM ; 1 такт
.endmacro
.DEF ACCUM = R25
; Инициализация
; Настройка USART
; Тактовая частота 7,3728Мгц.
; Делитель USART: (таблица 60 из даташита)
; 3 = 115200
; 5 = 76800
; 7 = 57600
; 11 = 38400
; 15 = 28800
; 23 = 19200
set_io UBRRH, 0
set_io UBRRL, 3					 ; Set baud rate = 57600 (Proteus поддерживает максимальную скорость 57600)
set_io UCSRB, (1<<RXEN)|(1<<TXEN)	 ; Enable receiver and transmitter
set_io UCSRC, (1<<URSEL)|(3<<UCSZ0) ; Set frame format: 8data, 1stop bit
; Настройка АЦП (стр.200 даташита)
set_io ADMUX, 0b11000000 ; Опорное напряжение - внутренний, 2.56В
set_io ADCSRA, 0b10000110 ; ADC Enable, single-conversion mode, Fadc = 7,3728Мгц/64 = 115200


; Подпрограммы
ADC_run_transmitt:
ANDI ACCUM, 0x0F	 ; Ограничим входной параметр значением 0-15
ORI ACCUM, 0b11000000
OUT ADMUX, ACCUM	 ; Выбор канала АЦП, опорное = встроен. 2.56В
ADC_run
wait_adc
IN			 ACCUM, ADCL
RCALL USART_Transmit
IN			 ACCUM, ADCH
RCALL USART_Transmit
ret
USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA,UDRE
rjmp USART_Transmit
; Put data into buffer, sends the data
out UDR, ACCUM
ret
USART_Receive:
; Wait for data to be received
sbis UCSRA, RXC
rjmp USART_Receive
; Get and return received data from buffer
in ACCUM, UDR
ret

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

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

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

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

Хм... в даташитах на датчик. Если датчик аналговый - используешь АЦП, если цифровой - соответствующий интерфейс. И то и другое описано в даташитах как на датчик так и на микроконтроллер.

Если речь идет о DS18B20 он работает по 1-wire протоколу, который не реализован в контроллере - просто его надо реализовать программно дерганием ножек. Брат ьчью-то разработку нисколько не легче чем создать свою - все равно придется разбирать как она работает и какие ресурсы использует. Если такой алгоритм будет долго держать прерывание запрещенным а в твоем проекте это недопустимо - то придется искать другой алгоритм, а поскольку они передираются друг у друга каждый раз внося свои баги - искать подходящий будешь дольше чем написать свой. Большая редкость - алгоритмы позволяющие работать с двумя и более такими датчиками на одной линии и автоматическим определением их количества.

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

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
  • Похожий контент

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