HK-40A BSEC прошивка под heli или изучаем atmega8

avisenja

Купил когда-то такой регуль - HK-40A BSEC, в инструкции обещалось, что подходит под вертоль, но по факту оказалось - нет плавного

разгона ротора.😦

Вот теперь решил написать свою прошивку😵, не стал мучить родной проц, и сразу перепаял новую мегу. ШИМ вроде прописал,

измерение ППМ то-же (пока без калибровок, бибикалок и прочей лабуды), а вот с синхронизацией переключения обмоток - запутался

(может потому - что не знаю атмеги, всё больше пикушники).

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

Надо ещё делать всякий мелкий сервис:
контроль разряда акку
температуру перегрева
и т.д.
торможение и реверс мне - НЕ НУ ЖЕН

Вопрос к бывалым:
Как правильно настраивать прерывание для компаратора?

;================================================
; obrabotka preryvania ot kompapatora
;================================================
comp_y:
cbi PORTB, 0 ; FetAL_Off
cbi PORTC, 4 ; FetBL_Off
cbi PORTD, 5 ; FetCL_Off

cbi ACSR, ACI ; sbros flag prer komp
rcall P_1 ; korotkaja pauza

sbic ACSR, ACO ; komp 0/1 ?
sbi PORTB, 1 ; test

sbi ACSR, ACD ; otkl komp
cbi ACSR, ACIE ; otkl prer komp
ldi temp1, 0xFF ;
out TCNT0, temp1 ; zagruzka timer0
ldi temp1, 0b00000001 ; start cikla
out TCCR0, temp1 ;

cbi PORTB, 1 ; test
reti ; vozvrat

;==================================================

Кому интересно - присоединяйтесь, может вместе чего толкового слудим:)

Aleksey_Gorelikov

Бернард Конзе выложил исходники рега еще лет 8 назад. Можно у него подглядывать. На квадракоптерные прошивки тожоже ссылки на форуме встречаются…

avisenja

Иногда посматриваю на энти исходы;), но может чего и не вижу, не знаю, асм меги и пика разный, я за последние 3 месяца возни с мегами если в общей сложности - недельку😒 с ней позанимался, и то хорошо.
Контроллеры в квадратиках больше работают на быструю отработку изменения частоты вращения - и это оправданно, на связь через уарт или и2с, не контролируя напряжение и температуру, много бибиков:) прописано, есть реверс. Но при этом, пренебрегая потерей времени - синхронизацию ловят не выходя из прерывания по окончанию ШИМ, в тупую щелкая выход компаратора на - да/нет по циклу и плюс таймер на случай выхода за предел ожидаемого времени переключения обмоток.
Для вертика, главное сберечь механику, ротор то всёж - ого-го, да вы и сами знаете, чего объяснять…

Вот мой черновик(очень грязный), всё что считалось с моего проца, фото и прочая лабуда.

hk40a 1.ziphk40a 2.zip

avisenja

Разобрался с прерыванием компаратора😁, для синхронизации переключения обмоток и ещё пару ошибок в циклах выловил, да… пикушный асм намного проще!!!

Моторчик начал крутиться уже вполне прилично.

avisenja

Нашёл ошибку в схемке.
Вложил цифро/буквенную маркировку резисторов, мож кому пригодиться.

HobbyKing-40A my.zip

avisenja

Народ!!! Есть вопрос.
Можно сделать код короче, я плохо знаю меговский АСМ, тока учусь😵, писал по анологии с пиковским АСМом

;------------------
; delim na 6 0/1500us -> 00/FF
lsr yh ; 2
ror yl ;
lsr yh ; 4
ror yl ;
lsr yh ; 8
ror yl ;
clr i_temp1 ;
add i_temp1, yl ; +
lsr yh ; 16
ror yl ;
lsr yh ; 32
ror yl ;
add i_temp1, yl ; ++
lsr yh ; 64
ror yl ;
add i_temp1, yl ; +++
brcs int0_mnogo ; perexod ecli resultat > FF

Pantryk

Есть вариант написать это на С и посмотреть как компиляторы делают тоже самое. Мб будет компактнее. А что собственно делает этот кусок?, а то я как-то не смог расшифровать первый комментарий.

avisenja

Это пересчет длительности РРМ от 0 до 1,5мс в код для ШИМ, это не самое страшное.

youtu.be/h1E_4dqkxrE

Для любопытствующих, мой * стенд * для испытаний над донором.😃