Jump to content
Sign in to follow this  
cata2

Asm to Hex

Recommended Posts

Salutari ,tot o problema de genul asta am si eu si anume sa compilez un fisier asm ca sa obtin executabilul adica hexul.Este vorba de un asm al unui invertor si eu nu stiu sa compilez fisiere asm.Deci ,daca ma puteti ajuta ,sa-mi compilati acest fisier ,v-as ramane indatorat.

 

oscilator extern cuart 6 mhz

 

 

 

 

fisier.txt

Share this post


Link to post
Share on other sites

Nu reu?esc :

 

Error - section '.cinit' can not fit the section. Section '.cinit' length=0x00000004

Errors : 1

Edited by Gabix

Share this post


Link to post
Share on other sites

incercati fisierul atasat ,cu cristal de 20 mhz

fisier _20 mhz.txt

Edited by nel65

Share this post


Link to post
Share on other sites

Buuun... La ?nceput am avut aceea?i probleme ?i cu al doilea fi?ier dar p?n? la urm? am reu?it :

----------------------------------------------------------------------

Release build of project `F:\C\Electronica\Proiecte PIC\Invertor\Invertor.mcp' succeeded.

Language tool versions: MPASMWIN.exe v5.41, mplink.exe v4.39, mplib.exe v4.39

Wed May 20 20:36:14 2015

----------------------------------------------------------------------

BUILD SUCCEEDED

 

Ce am f?cut : Se pare c? programul era prea lung ?i nu ?nc?pea ?n memorie (cred). A?a c? am scos dou? instruc?iuni NOP (nici o opera?ie). Instruc?iunile NOP erau imediat dup? o instruc?iune de salt GO TO (du-te la...) aflat? la adresa vectorului de ?ntrerupere (0x004), a?a c? nu am stricat nimic (cred). ?n orice alt? parte din program instruc?iunile NOP produc temporiz?ri elementare de un ciclu instruc?iune. De asemeni nu exista o instruc?iune ORG 0x000 (adresa de origine a programului).

Alt lucru : Programul con?ine o directiv? pentru generarea fi?ierului .HEX ?n format INHX8M. Nu ?tiu ce ?nseamn? ?i nici nu-mi bat capul s? aflu. Eu am folosit mereu INHX32, care este implicit. Am asamblat ?n ambele formate.

 

A?a c? p?n? la urm? ave?i patru variante de .HEX.

Trebuie s? schimba?i extensiile fi?ierelor din .txt ?n .HEX c? nu m? l?sa s? le ?ncarc.

Sper s? v? foloseasc? ?i invertorul s? ?nu v? sar? ?n fa???. S? m? ?ine?i la curent !

Invertor_6 MHz_INHX8M.txt

Invertor_6 MHz_INHX32.txt

Invertor_20 MHz_INHX8M.txt

Invertor_20 MHz_INHX32.txt

Share this post


Link to post
Share on other sites

mersi Gabix pentru ajutor ,am verificat toate variantele ,merg doar cele la 20 mhz ,frecventa de functionare este mai mica decat hexul original ,de 6.1 khz in loc de 6.45 khz.Nu cred ca conteaza ,insa o sa fac un prototip de invertor la putere mica ,50-100W  si vad concret cum merge.

Scopul meu era sa ridic frecventa la cel putin 16 khz insa s-a dovedit ca ma depaseste .Cu mult.

Share this post


Link to post
Share on other sites

Microcontrolerul comand? direct finalii, sau ce ave?i acolo ? ( La ?comuta?ie? nu prea m? pricep. ) Dac? da, nu-mi place. ?Analogicul? ??i are rostul lui.

C?t despre ridicarea frecven?ei, dac? este din soft, da?i detalii. Nu prea am timp, dar cine ?tie, poate identific?m buc??ica de cod care se ocup? de asta. Dac? nu, c??tig?m experien??.

Share this post


Link to post
Share on other sites

multumesc mult pentru interesul aratat,dar nu merita efortul ,am si alte variante de realizare a unui invertor sinus pur ,cu attiny13 ,atmega 8, PIC16F684 si EG 8010.

In afara de cea cu PIC16F684 ,pe toate celelalte le exploatez in prezent ,in invertoarele mele.Singura diferenta importanta intre acestea este ca EG8010 asigura stabilizarea tensiunii de 220 V.Si  cea cu PIC16F72 oferea aceasta posibilitate si in plus ,era usor de procurat,fata de 8010,care trebuie sa astept o luna sa vina din china.

Doream sa folosesc modulatorul cu F72 ,intr-un invertor cu traf pe 50 Hz ,deci fara ridicare de tensiune in prealabil,cum este la variantele cu traf pe ferita ,si in acest caz ,trebuie stabilizare oferita de acest modul.

Dar daca nu se poate cu pic ,merg pe EG 8010 si gata ,am un stoc suficient.

Share this post


Link to post
Share on other sites

Totutu?i da?i-mi schema. Am devenit curios. C?nd voi avea timp, vreau s? v?d cum func?ioneaz?.

Share this post


Link to post
Share on other sites

Este mai usor de facut de la zero un program in C, decat de modificat unul facut in asamblare si necomentat.

Tahmid are portiuni de cod in care prezinta partea de pwm si partea de feedback la el pe blog.

Trebuiesc doar unite cele doua parti si eventual adaugate alte functii pentru UPS.

Share this post


Link to post
Share on other sites

@Gabix,n-ai pentru ce , prima poza este simplificata de mine ,functioneaza asa cum am mentionat acolo.La FEED BACK este secundarul unui traf micut ,alimentat din tensiunea de iesire a invertorului.In functie de tensiunea aplicata in pin 2 ,se observa pe osciloscop modificarea factorului de umplere,care e maxim la tensiunea minima.

In pin 3 se aplica tensiunea bateriei prin acel divizor,pentru a se opri la descarcarea acesteia.Celelalte intrari (4,5,6,7) le-am pus la masa .Probabil ca bucatile de soft care se refera la aceste intrari ,ar putea fi eliminate,habar n-am .insa interes prezinta doar cele doua din pin 2 si 3.

 

@cristi7521,pai tocmai partea de feed back e cea mai importanta,dar pe mine ma depaseste .

Edited by nel65

Share this post


Link to post
Share on other sites

Daca nu e graba poate reusim sa punem la punct si partea de feedback cu 16F684 (sau cu alt microcontroller). Eu nu prea am timp liber, o sa incerc doar sa unesc portiunile de cod, sa simulez si poate faceti dvs teste practice.

Share this post


Link to post
Share on other sites

nu e nicio graba ,pentru F684 exista codul c ,l-am incercat ,merge perfect dar nu are feedback

 

http://tahmidmc.blogspot.ro/2013/02/demystifying-use-of-table-pointer-in.html

 

//Here is the code:
 
unsigned char sin_table[32]={0,25,49,73,96,118,137,
159,177,193,208,220,231,239,245,249,250,249,245,
239,231,220,208,193,177,159,137,118,96,73,49,25};
 
 
unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ;
unsigned int TBL_temp;
unsigned char DUTY_CYCLE;
 
void interrupt(){
if (TMR2IF_bit == 1){
TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
if (TBL_POINTER_NEW < TBL_POINTER_OLD){
CCP1CON.P1M1 = ~CCP1CON.P1M1; //Reverse direction of full-bridge
}
TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11;
DUTY_CYCLE = TBL_POINTER_SHIFT;
CCPR1L = sin_table[DUTY_CYCLE];
TBL_POINTER_OLD = TBL_POINTER_NEW;
TMR2IF_bit = 0;
}
}
 
void main() {
SET_FREQ = 410;
TBL_POINTER_SHIFT = 0;
TBL_POINTER_NEW = 0;
TBL_POINTER_OLD = 0;
DUTY_CYCLE = 0;
ANSEL = 0; //Disable ADC
CMCON0 = 7; //Disable Comparator
TRISC = 0x3F;
CCP1CON = 0x4C;
TMR2IF_bit = 0;
T2CON = 4; //TMR2 on, prescaler and postscaler 1:1
while (TMR2IF_bit == 0);
TMR2IF_bit = 0;
TRISC = 0;
TMR2IE_bit = 1;
GIE_bit = 1;
PEIE_bit = 1;
 
while(1);
}
post-2167-0-57425500-1432455313_thumb.png
 
post-2167-0-93585600-1432455339_thumb.png
 
 
Dupa cum se observa ,tranzistorii de sus sunt comutati cu 50 hz,eu o sa incerc sa comut laterala din stanga cu 50 hz ,QA si QB .Pe mediana QC-QD  urmeaza sa plasez filtrul de iesire LC.Puntea H alimentata cu tensiune mare ,+340V.
 
 
LE
Poate ar trebui deschis topic nou din moment ce schimbam tema topicului ,avand in vedere ca pentru acest pic avem deja codul c ?
Edited by nel65

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.