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

Зажигание На Ардуино


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

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

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

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

Обмен данными с компом, если пишешь на ассемблере.

;*****************************************************************
; Подпрограмма передачи байта в буфер UART_OUT из регистра tmp3 *
;*****************************************************************
.cseg
MovsBuf:
push ZL ;Сохранение содержимого регистров в стеке
push ZH
push tmp1
;
cbi UCSRB,UDRIE ;Запрещение прерывания UDRE (взаимоисключение программ
 ;имеющих доступ к одному буферу
lds ZL,UART_OUT_T ;Считать указатель хвоста очереди
inc ZL ;Увеличить его на 1
andi ZL,$0f ;Если величина указателя больше 15, вернуться к началу буфера
lds tmp1,UART_OUT_H ;Считать указатель головы очереди
cp ZL,tmp1 ;Сравнить адрес головы и новый адрес хвоста
brne Movs1 ;Если они еще не равны (буфер еще не заполнен), перейти
; sbr bufstat,full_b ;Иначе сообщить головной программе, что буфер переполнен
 ;и последний байт в него не записан
rjmp EndMovs ;и выйти из подпрограммы
;
Movs1:
sts UART_OUT_T,ZL ;Сохранить в памяти новое значение указателя хвоста
; cbr bufstat,full_b ;Сообщить головной программе, что запись байта в буфер успешна
clr ZH ;Очистить старший байт регистра указателя RAM
dec ZL
andi ZL,$0f
subi ZL,-UART_OUT ;Добавить адрес начала буфера UART_OUT к значению указателя хвоста
st Z,tmp3 ;Записать байт в буфер
;
EndMovs:
sbi UCSRB,UDRIE ;Разрешить прерывание UDRE
;
pop tmp1 ;Восстановить из стека значения регистров
pop ZH
pop ZL
ret
;
;*****************************************************************
; Подпрограмма обработки прерывания от UDRE при передаче данных *
;*****************************************************************
;
TransInt:
push ZL ;Сохранить содержимое регистров в стеке
push ZH
push tmp1
in tmp1,sreg
push tmp1
;
lds ZL,UART_OUT_H ;Считать указатель головы очереди
clr ZH
subi ZL,-UART_OUT ;Вычислить абсолютный адрес первого в очереди байта
ld tmp1,Z ;Считать из буфера этот байт
out UDR,tmp1 ;Вывести его в UART
;
lds ZL,UART_OUT_H ;Не стал ли буфер теперь пустым?
;
inc ZL
andi ZL,$0f
lds ZH,UART_OUT_T
cp ZL,ZH
brne Trans1 ;Если еще нет, перейти на Trans1
;
cbi UCSRB,UDRIE ;Если буфер пуст, запретить дальнейшие прерывания
 ;по флагу UDRE (передатчик пуст)
Trans1:
sts UART_OUT_H,ZL ;Сохранить в памяти новое значение указателя головы очереди
;
pop tmp1 ;Восстановить из стека значения регистров
out sreg,tmp1
pop tmp1
pop ZH
pop ZL
reti
;
;*********************************************************************
;Подпрограмма обработки прерывания при поступлении очередного байта *
;в приемник UART			 *
;*********************************************************************
;
ReceiveInt:
push ZL ;Сохранить содержимое регистров в стеке
push ZH
push tmp1
in tmp1,sreg
push tmp1
;
in tmp1,UDR ;Считать байт из регистра данных приемника
;
lds ZL,UART_IN_T ;Увеличить количество считанных байт на один
inc ZL
cpi ZL,17 ;Если считанных байт более 16
brcc Receive1 ;то выход
;
sts UART_IN_T,ZL ;Сохранить количество считанных байт
dec ZL ;Уменьшить так как был inc ZL
clr ZH
subi ZL,-UART_IN ;Вычислить адрес места байта в буфере приема
st Z,tmp1 ;Записать байт в буфер приема
;
Receive1:
pop tmp1 ;Восстановить значения регистров из стека
out sreg,tmp1
pop ZH
pop ZL
reti

.dseg
;
UART_OUT: .byte 16 ;Адрес буфера передачи UART в RAM, должен быть кратен 16
;
UART_IN: .byte 16 ;Адрес буфера приема UART в памяти
UART_IN_T: .byte 1 ;Адрес указателя на хвост очереди UART_IN
;
UART_OUT_T: .byte 1 ;Адрес указателя на хвост очереди UART_OUT
UART_OUT_H: .byte 1 ;Адрес указателя на голову очереди UART_OUT



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

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

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

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

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

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

Обмен данными с компом...

Спасибо, буду разбираться.

Для Алекс (извиняюсь, глючит шифт, буду писать кириллицей где возможно) программа теста

оп-па, сообщение: Вам запрещено загружать файлы с таким расширением

Попробую как текст, но нужно потом расширение заменить на .HEX

BALK01.txt

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

Сделано из предположения, что бут не перестраивает частоту и вообще не оставляет никаких следов в настройках перефирии. :)

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

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

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

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

На атмеге 328 не будет работать, когда начнешь использовать прерывания, у нее вектор прерывания из двух слов: вместо rjmp нужно jmp.

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

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

Итак докладаю.

Макетный франкенштейн собран. Прошивка удачно залита. При подаче питания оба СД начинают синхронно мигать с указанным интервалом. При нажатии на любую кнопку темп мигания удваивается. Замечаний в работе нет (видео делать?)

На А0 подключен переменный резистор 20К (с одного края на нем "-", с другого "+", правильно?)

ПС: КТ315 не нашел, лезть на чердак за барахлом для разборки не охота. Использовал С945 (2шт.).

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

Ну и хорошо, заливается и частота 16 МГц. Хотя я осторожно отношусь к максимальным частотам при работе на морозе или жаре. Интересно, по маркировке контроллера можно увидеть температурный диапазон, индастриал или нет.

Основная битва (или ботва :)) из-за того, что мои программы и программатор на такие большие памяти не были рассчитаны, приходится корректировать и внимательно отслеживать разницу от Меги8. Спасибо за подсказку по JUMP, если кто что заметит - подавайте сигнал.

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

Тем не менее, очень желательно бы сделать генератор импульсов подобных Холлу на микросхеме или чем угодно для проверок. Одну А. можно было носить на машину, вторая для проверок на столе.

п.с. Если транзистор не хуже КТ315 по основным параметрам, почему бы и нет.

Потенциометр надеюсь заведен через резистор, как выше говорил, можно поставит еще 1...10 мкФ конденсатор на вывод потенциометра чтоб не шуршало.

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

Я гдето читал, что ноги ардуины, на которой тесты проводят, напрямую включать не желательно, по известным причинам. А т.к. там всего 5В, то достаточно сопр. 150 ом. Я где нет резистора понаставил 200 ом. (4,7 кОм не ставил, по-моему много, но ели вы настаиваете - поставлю хоть сколько ).

И еще, L7805 в качестве источника 5В в борт сети жигулей справится или чего другое сделать?

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

Вспышек нет. Ни чего нет.

Ну и хорошо, заливается и частота 16 МГц. Хотя я осторожно отношусь к максимальным частотам при работе на морозе или жаре.

Опять же, я читал, что М328 может работать на частоте до 20 Мгц.
Ссылка на комментарий
Поделиться на другие сайты

И еще, лм 7805 в качестве источника 5В в борт сети жигулей справится или чего другое сделать?

Ноги тянут 50 мА в номинале (не все одновременно, конечно), но есть одно НО - в схеме присутствует 12 В и если случайно через 200 Ом оно попадет на вход, то через внутренний диод потечет 35 ма на шину +5 В, а диод этот слабенький, я больше 1 мА не рисковал через него пускать. Исходя из этого указаны номиналы.

В паузах читайте техописание, не обязательно Меги 328, все АВРы в электрическом плане одинаковые почти. На своей желательно посмотреть маркировку и даташит на конкретную м\с. Вот тут плавно переходим к стабилизатору.

Неизвестно как настроен внутренний контроль питания, а соответственно сброс, поэтому нужно будет проверить плату пониженным напряжением. В моем похожем устройстве стоял 7805, были сбросы при холодном пуске, хотя на столе работало до +5 вольт (внутрений сброс по питанию был прошит на 2,5 вольта. До конца не разобрался, но похоже неудачное место запитки - врезка в провода на датчика Холла. Купил стабилизатор с низким падением, но до установки не дошло.

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

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

банкер

6 векторов прерываний сделал jmp, остальные сделал reti, а reti это одно слова вместо двух, первые 4 вектора еще сработают, а начиная с 5 все адреса векторов сдвинуты.

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

....Тем не менее, очень желательно бы сделать генератор импульсов подобных Холлу на микросхеме или чем угодно для проверок. Одну А. можно было носить на машину, вторая для проверок на столе...

Для машины вторую ардуину сделаю, правда не сегодня.

А вот с генератором импульсов подобных Холлу сложнее. Есть в наличии NE555 из неё получится?

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

...reti это одно слова вместо двух...

Там jmpы заменены парами reti.

Есть в наличии NE555 из неё получится?

Вполне, я таким и имитировал сигнал Холла, нужна схема с коротким нулем и регулированием периода 1:10. Кнопкой не получится имитировать сигнал,кроме пуска на дохлом аккумуляторе. Кривую УОЗ для газа тоже поискать.

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

...Нужна схема с коротким нулем и регулированием периода 1:10....

Со схемой с коротким нулем и регулированием периода 1:10 на NE555 пока определиться не могу, то схема хороша да деталей таких нет, то что-то мне не нравится. Если ткнете в какую попроще, буду признателен, нет - буду выкладывать что нарыл на согласование :)

Как например вот такая?

081fddc3a880a8f0fa2f4812b1c6ef59c3f250235427578.jpg

В описании пишут : "...В этой схеме, отношение длительностей импульс/пауза, определяется отношением резисторов R9/R10 и очень мало зависит от частоты входных импульсов..." (может вЫходных импульсов?)

... Кривую УОЗ для газа тоже поискать...

Про кривую в нетах пишут, что вот эта самое оно (нас интересует метан):

45663a6feb83efa8dbc8d9ad52fc3a965eb33e235411438.jpg

Есть еще похожий, типа с более плавными кривыми, но думаю нет смысла.

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

Пусть генератор будет симметричным, 555-ая, переменный резистор и конденсатор - вся схема. Расчет частоты на память не помню.

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

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

BALK04.TXT

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

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

... Мне более важно - оно мигает или нет от кнопок.

Проверил. Ответ отрицательный - оно не мигает от кнопок.

(для перестраховки залил снова первую прошивку, где периодичность меняется от нажатия, там все гуд. Потом снова залил эту последнюю - не мигает от кнопок)

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

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

Проверить эту -BALK05.TXT

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

Мне не понравилось, когда сразу замигало, плохой признак. Значит грабли чуть дальше первого шага лежали. Бум смотреть.

Н-да, а когда-то была Нова пошта -(

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

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

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

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

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

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

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

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

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

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

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

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