You are here

PIC16F1825-ból kiolvasott HEX file visszafordítása asm-re

46 posts / 0 new
Last post
Jaca
Jaca picture
*****

Sziasztok!

Egy brushless motorvezérlő (konvektor ventilátor) a fenti PIC-kel van megcsinálva. A tartalom nem volt levédve, így ki tudtam olvasni. 
Elvileg PWM-mel kellene vezérelni, egy optocsatolón keresztül, viszont a furcsaság, hogy maga a pwm jel nincs átalakítva DC-re.
Pár Hz-es jellel ugyan elindul, de nagyon bizonytalanul. 
Semmi extra nincs benne, egy FET-es híd, két hídmeghajtó IC, két hall szenzor. 
A picdisasm sajnos nem ismeri ezt a típust. A chatgpt majdnem eljutott a megoldásig, csak elértem az adatkezelési limitet :(

Tudna segíteni valaki? 
Üdv: Jácint

File attachment: 
Comments
imrus101
imrus101 picture

Hali!

Próbáld ki a Ghidrát: https://github.com/NationalSecurityAgency/ghidra/releases
Tud hex fájlból asm-et, sőt C kódot is generálni az asm-ből.
(Kipróbáltam, de eléggé nagy katyvasz lett a C kód, de az asm kódban is vannak fura részletek. Régen használtam PIC-et, akkor sem sokat, nem vagyok járatos benne)

imrus101

0

vacisa
vacisa picture

PIC programban keresed, hogy a kimenő PWM jel miért nincs átalakitva ?
​​​​​​​MIért kellene a PWM jelet DC-re alakitani, a driver IC bemenete nem PWM ?

 

0

Jaca
Jaca picture
*****

Szia!
Nincs driver ic. A pic vezérli a hidat. A benenetére kap pwm-et, hogy hány százalékon menjen a motor. 

0

kovacsna
kovacsna picture
*

Szia!

Sehol nem írtad, de melyik pinre megy a PWM?

KN
​​​​​

0

Jaca
Jaca picture
*****

Szia!

RC1 a PWM, és a poti, aminek csak a helye van meg a panelon, az RC0-ra menne. 

0

kovacsna
kovacsna picture
*

Szia!

Mivel RC1 az nem interrupt bemenet, de a programban a globális interrupt engedélyezve van, így sanszos , hogy pin changre le is fut. PWM bemenet esetén adja magát, hogy interruptot használjon az ember. 
Tovább nem bogarásztam mobilról a kolléga által betett kódot.
Két megoldás van. Az egyik , hogy az interrupt bemeneteket használja vmire. Az adatlapból láthatod, ha így van.
A progiban meg kell keresni, hogy mire van indítva az interrupt. Ha van hall elem a ventiben, mint írtad, akkor lehet arra.
A másik, amit írtam, hogy pin changre fut le, és timerral méri a frekit a felfutó és a lefutó él között, meg a második felfutó élnél is.
Így tudja frekit, meg kitöltési tényezőt.
Nem nagyon ismerem a PIC lelkét, én AVR ezek inkább, de csoda nincs.
Ez teória, szóval tessék így is kezelni.

KN
 

0

PElek
PElek picture

Sziasztok

Két kérdés merült fel bennem, egy konvektor ventilátor vezérléshez ennyire megbonyolitott frekvencia mérő bemenetre lenne szükség, hogy egy kontroller kimenetén megjelenjen pwm jel? Hol van a konvektor elektronikának ez az első tagja, és miért nem vizsgálható a kontroller RC1-re kötött jele? 
 

0

Jaca
Jaca picture
*****

Szia!

Maga a motor egy univerzális kefe nélküli motor. Nem a konvektrohoz fejlesztették. Tettem már fel linket is róla. Vélhetően azért van elbonyolítva a kitöltési tényező mérése, hogy bizonyos tartományban bármilyen frekvenciájú jelet tudjon fogadni, gondolom ezlért nem RC-tag és analóg bemenet fogadja. 
Ez a motor független a konvektortól, ez kap egy kettőhúszat, meg egy PWM jelet, és forog. 
https://www.everelgroup.com/en/energy-saver-o-58-brushless-industrial-mo...
 

0

proba
proba picture

Nézegetve a motorod rajzát, ott előre hátra forgónak van írva. Ha ez igaz, az irányt is a PWM jelnek kellene tartalmaznia. Ha te szimmetrikus négyszöggel "tápláltad" lehet nem tudta merre induljon. Így valami nem szimmetrikus négyszögjellel próbálkoznék.

0

Jaca
Jaca picture
*****

Próbáltam, de arra sem reagált. Valami rossz benne, mert új motorral ment a konvektor. 

0

PElek
PElek picture

Ha egy új motorral megy akkor meg kell nézni egy szkoppal hova milyen jel érkezik.
MIlyen jel van a PIC RC1 bemeneten és milyen a motor hid felé a kimeneten.
Ha meg van a PIC RC1 bemeneten a jel és nincs PIC kimeneten a hidra jel akkor a PIC hibás.
Le lehet egyszerüen szakaszolni a hibát.

Ha te most csak egy motort akarsz meginditani, akkor vagy az adatlapjából megnézed milyel jel kell, vagy a működő vezérlést nézed meg..
Ez a két mérés mindenképpen járhatóbb mint egy visszafejtett programot bogarászni.
Alapesetben 50KHz -100KHz pwm

0

Jaca
Jaca picture
*****

Szia!
A jó motort biztos nem kapom meg, és nem is szedném szét. 

0

PElek
PElek picture

A kontroller és a hid a motor része ?
Mi van nálad, egy motor csak vagy az egész elektronika ?
Nem vagy túl bőbeszédű, minden kérdésre a motort emlegeted.
Kicsit ködös, ha van egy konvektor amiben a motor elromlott és másik motorral megy, akkor miért kell egy motort vezérlő áramkörben lévő pic programját megfejteni ha annak bemenete / kimenete mérhető. Ha egy másik motor működik vele, akkor annak hibája nincs.
Működéshez egy adott frekvencián pwm állítanak be effektiv feszültséget a motornak.
Erre léteznek egyszerűbb és komolyabb motorvezérlők is.
Ha azt a motort akarod életrekellteni amit kicseréltek mert nem működött, az nem hiszem hogy fog menni.

0

Jaca
Jaca picture
*****

Szia!
A kis motoron van egy elektromika, ami áll 4 fetből, két hi/lowside fetmeghajtóból, 2 hall elem a pic, meg a bemenetén egy opto.
Ez így egy egység, ezt cserélték.
Mivel mutat életjelet, forgásra is lehetett valamennyire bírni, és hibás alkatrészt sem találtam, de kiolvasható volt a pic, így gondoltam, ha tudom, mit akar csinálni, és hogyan, azt is megtalálom, miért nem teszi a dolgát. Ha nem sérült a program, akkor csak kibukik, mi nem jó a panelon.

File csatolás: 

0

proba
proba picture

A léptetős motorok akkor szoktak "dadogni"  (a nem elektronika hibásak)  ha valamiért lassabban tudnak lépni mint ahogyan a vezérlés szeretné. ( esetleg olaj a tengelyre? Ventiknél gyakori hiba...)  Esetleg a kvarc nem megy rendesen....

0

PElek
PElek picture

Ok, szóval egyben van minden.Nem egyszerű, de ha mindenképpen foglalkozol vele, én 5KHz -től 10KHz-ig 50% duty próbálnám az opto bemenetét, közben a hidra tennék szkopot. Ha nincs generátor, egy 555 is jó lehet, vagy egy másik kontrollerrel meghajtani 1KHz-es lépésekkel, de túl sok a változó, szerencse kell hozzá szerintem.

0

Jaca
Jaca picture
*****

Szia!
Van szignál generátor is, szkóp is. Már beszéltük, mivel a motor két irányba is tud forogni, az 50%-k nem biztos, hogy nyerő. 

0

proba
proba picture

Ebben az esetben nem visszafejtéssel kezdeném. Az összes perifériát megnézném teszi e a dolgát, ha nem, akkor megvan az ok. Ha igen, a PIC van megzavarodva, ergó kár értelmezni ami benne van, mert hülyeség.Pont most futottam bele egy olyanba, amiben minden 8. byte törlődött. ( igaz az butább volt). Ha értelmezni akarod, akkor inkább a működőt kellene tesztelgetni. 

3

vacisa
vacisa picture

:Én nem tudom elképzelni, ?
Ha a PIC hajtja a hidat, akkor mit csinál a két hídmeghajtó IC, ?
Gondolom a  PIC ad ki PWM-et és azzal vezérli a a két hídmeghajtó IC -t 
MI a hidmeghajtó IC tipusa ?

0

Jaca
Jaca picture
*****

A két meghajtó az fet high and lowside driver. Bocs, ha rosszul írtam  A pic kapcsolgatja a feteket a hall sensorok jele alapján, mint pl a pc ventilátorokban. A bejövő pwm csak a sebességre utaló infót adja, van,olyan is, ami 0-10V ot fogad. 

0

vacisa
vacisa picture

Kezdem érteni, ha a PIC ADC bemeneten megkapja amit kell, viszont nincs kimenet, akkor valószinűleg az ADC bemenet kapott egyet és halott a kontroller.
4.5V-nál többet nem fog szeretni az ADC bemeneten.
 

0

Jaca
Jaca picture
*****

Az adatlapjáról idézve:
Everel has released the new EC brushless motors series which features a wide range of application characteristics and options. Motor can be controlled via PWM, 0-10 V, or fixed multiple speeds (up to 3). The enhanced versions, which integrate more advanced electronics, allow further motor speed control options and possibility of reversing the rotation. Various sensor (e.g. Humidity, flow, presence) can be integrated in the same bord. Possibility of Firmware customization. Motor efficiency up to 60%.

De ez csak PWM-et kapott, azt is egy optocsatolón keresztül. 
Félig halott a cucc. Ha csak ráadom a villanyt, nyugiban van.
Ha meghajtom az OPTO-t 5Hz-es négyszöggel, akkor pörög pár fordulatot, és megáll, majd ezt ismételgeti kis szünetekkel.
De volt olyan, hogy egész sokáig pörgött. Hogy mekkora freki kell az opto bemenetére, azt nem tudom, ezért akarom megnézni a program felépítését. Lehet, hogy méri, mekkora a periódus idő, és méri, meddig magas a szint, és így állapítja meg a kitöltési tényezőt. De ha sikerül visszafejteni a progit, akkor talán azt is látom, miért áll meg.

0

agressiv
agressiv picture
*

Az 5Hz biztos, hogy nagyon kevés 1KHz-el próbálkoznék minimum.

0

Jaca
Jaca picture
*****

Igen, én is így gondolom, csak akkor el sem indult.

0

agressiv
agressiv picture
*

És, ha folyamatosan magas szintet adsz neki?

0

Jaca
Jaca picture
*****

Arra se reagál. Ezért próbálom visszafejteni a HEX file-t. 

0

proba
proba picture

Annó piccel csináltam elég meredek szűrőt. ebből kiindulva egy hanggenerátorral azért végigtekerném (0-10khz) , hátha kiderül milyen frekvenciát szeret. 
B variáció, ha megvan ami vezérli, egyszerűen megnézni a kommunikációt. 
Ami a visszafejtés mellett szól, lehet a vezérlőjel nem is PWM, hanem valamiféle adatfolyam,  mert egy PWM-hez minek is pic.... 

1

Jaca
Jaca picture
*****

https://elektrotanya.com/comment/553799#comment-553799

Itt idéztem az adatlapból, biztosan PWM. Egy konvektor ventije, és abban romlott el, a konvektoros faszi is mondta, hogy PWM-et kap, frekit hangenerátorral próbálgattam. 
A pic a PWM értékét méri, vagy az opcionális analógot potiról (a helye rajt van a panelen). Aztán azért is kell a PIC, mert nem csak vezérel, hanem figyeli is, hogy pörög-e a motor. 
A program azért nagy, mert a fele kb RETLW, ami a mért időből gondolom a fordulatot adja vissza. 

0

agressiv
agressiv picture
*

Oké, de nekem van ennél sokkal bonyolultabb ventilátorvezérlő programom is és megnézve a HEX-tartalmát, még az is kissebb.

0

Jaca
Jaca picture
*****

Még én se tudom mitől nagy, de nagy része táblázat. Én is írtam már hosszú programot copy paste-val, mer hely volt, és nem kellett gondolkodni.

1

bakkerman
bakkerman picture

Lehet hogy sinus tábla vagy egyéb a jelalakhoz amit generál.

0

vacisa
vacisa picture

Nem kilóra megy wink

1

agressiv
agressiv picture
*

Ha a gépi kód nagyobb az azért egyértelmű.

0

vacisa
vacisa picture

Ugyan azt a programot meg lehet irni kisebb méretben is meg nagyobb méretben is.
Attól fűgg aki irja mennyire képes kezelni a hardvert, mennyire tud strukturáltan programozni mennyire szeret szemetelni.
Te meg összehasonlítottad ráadásul egy más programmal ami nyilván nem egyezik ezzel a programmal.
Egyértelműen feleslegesen.

0

agressiv
agressiv picture
*

Ebben van valami, ráadásul a program relatíve nagy, ahhoz képest, hogy csak PWM alapján motort vezérel.

0

agressiv
agressiv picture
*

Érdekes, újraírni a programot nem opció?

2

zus
zus picture

Sose fogod tudni korrektül visszafejteni a hex file-t. Az ilyesmi a DOS-os PC korszakban se ment, ahol pedig nagyon ment az assembly programozás (csak ott az EXE, a COM, meg az OBJ file-ok voltak a visszafejtés tárgyai). Nekem is volt akkor ezerféle disassembly programom. Elég volt az ilyen visszafejtés során egy rosszul értelmezett cimkén elcsúszni és aztán már más lett az eredmény.

Máskülönben a PIC-es PWM jel az nem egy négyszögjel sorozat, aminek a kitöltési tényezője változik ?

0

bakkerman
bakkerman picture

Azért az MPLAB korrektül megcsinálta, csak ember legyen aki végigrágja magát rajta. Ha az életem múlna rajta biztos menne, de így, mazochista művelet. Ahogy mondod, van annak már vagy 40 éve mikor ilyenre vállalkoztam...ZX Spectrum kód Z80 disassemblálás. :)

0

Jaca
Jaca picture
*****

A pwm jel kintről jön egy opton keresztül. Annyit látok, a compare modullal nézi a kitöltését. 
De volt már sikeres visszafeltésem, a picdisasm nagyon jól adja vissza, csak ezt a tipust nem ismeri.

0

ty
ty picture

Válassz másik típust, ugyanebből a családból.

Jó eséllyel azonos az utasításkészlet. Regiszterek címét meg látod, hogy mi az eltérés.

0

bakkerman
bakkerman picture

Hi
MPLABX-be beimportálod a HEX-et (persze kreálsz neki egy projektet). Majd a Windows menüben a "Target memory viwe" és a "Program memory" kiválasztva. Ott a nézetben kiválasztod a Format: Code -t, és megjelenik a hex disassemblálva. Ezt ki tudod küldeni filebe. (jobb gomb, "Out to file")

B

0

Jaca
Jaca picture
*****

Szia!

Nincs fent az MPlab :(

0

bakkerman
bakkerman picture

ez lett

File csatolás: 

0

csakyt
csakyt picture

Szia.
Kiváncsiságból megpróbáltam én is úgy visszafejteni ahogy leírtad. nekem teljesen más jött ki. Tulajdon képp semmi. Mit ronthattam el?
Bocs. Közbe rájöttem a hibára.

0

Jaca
Jaca picture
*****

Köszönöm!

0

Sponsored links