Vizitator johnny Postat Februarie 21, 2005 Partajează Postat Februarie 21, 2005 SALUT !am shi eu o mare rugaminte, vreau sa invat shi eu programare dar m-am lovit de o problema: Am incercat sa respect pasii din tutorial dar cand i-am dat build all mi-a afisat mesajul asta:MPLINK 3.90.01, LinkerCopyright © 2005 Microchip Technology Inc.Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x00000010Errors : 1mesajul asta l-a afisat cand am incercat cu 16f84 si 16f628(pt astea am gasit documentatie si sant si mai ieftine) .Cu procesorul din tutorial PIC18F452 a mers.care este chestia?MPLAB-UL este versiunea7.01 Link spre comentariu
cirip Postat Februarie 21, 2005 Partajează Postat Februarie 21, 2005 Probabil ca nu se potriveste alocarea memoriei.Daca ai pus F84, ai inclus si fisierul 16F84.inc sau asa ceva?A setat corect tipul procesorului in IDE?Adresa de start ptr intrerupere este acceasi la 16F84 si la 18F452? Banuiesc ca nu. Nu am lucrat cu 18F452.De asemenea, nu cred ca poti pune direct cod de 18F sa ruleze pe 16F. Cele doua nu sunt compatibile. Cauta un programel exemplu ptr 16F84.Cirip Link spre comentariu
aghora17 Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 ce treaba are mplink in povestea ta?in mod normal ar trebui sa ai numai fisierul asm bagat undeva acolo la files in program manager sau cum so fi chemand. in rest totul sa fie gol.ai incercat cu wizardul? Link spre comentariu
cirip Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 Mi-a sarit si mie in ochi linkerul, dar probabil ca tutorialul arata cum sa compileze module obiect, nu numai cod absolut.Mi-a stat pe limba sa-i spun ca incepe cu ceva complicat, dar daca tutorialul asa e, mai rau il incurc daca vin cu idei diferite. Ai dreptate agora, era mai usor sa inceapa cu cod absolut.Mi-a dat si un PM si l-am rugat sa trimita un link la tutorial, ca sa vedem ce e acolo.Cirip Link spre comentariu
aghora17 Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 eu nici pana in ziua de azi nu am reusit sa folosesc linkerul.pentru incepatori recomand lejer cod absolut. Link spre comentariu
Vizitator johnny Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 Ce este codul absolut? se refera la limbajul de programare sau la codul binar cu care lucreaza microcontrolerul? ;daca am inteles eu bine sant destui programatori care lucreaza direct in hexazecimal,dar mie mi-sa parut destul de dificil si limbajul de programare deci va dati seama ca pt mine codul hexa sau altul asemanator sant mult prea mult deocamdata. Link spre comentariu
aghora17 Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 cod absolut este caracteristic unui mod de lucru in care lucrezi in general cu un singur fisier, asm, in care toate adresele sunt bine definite (exemplu "xvar equ 0x0f") si eventual un header in care sunt puse diverse variabile pentru a usura citirea codului. Aici, in mod explicit, variabila xvar este stocata la adresa 0x0f. Tot in cazul codului explicit, organizarea codului se face cu ajutoarul directivei org.exemplu:org 0x06startcod...endcea de a doua varianta implica crearea de librarii de functii (presupunem ca ai o rutina de comanda pt un lcd, si nu ai chef sa o rescrii de fiecare data pentru fiecare aplicatie si nici nu vrei sa dai copy paste, pentru ca oricum trebuie sa modifici alocarea variabilelor in registri, deoarece arhitectura microcontrolerului pentru care a fost creata procedura nu corespunde cu cea pentru care lucrezi acum. de aceea creezi o librarie in care introduci aceasta functie. e un fel de dll sau unit in pascal). atunci, in librarie nu se mai declara explicit adresele pentru fiecare variabila necesara ci se specifica doar ca xvar in cazul nostru este o variabila nealocata.cand se pune cap la cap proiectul, trebuie specificata libraria (aici intervine mplib) si modul in care se leaga libraria (de fapt functiile necesare din ea), cu partile de cod (asm, care de data aceasta nu mai sunt declarate cu org, ci sunt declarate doar ca fiind cod si atat. (imi cer scuze pentru lipsa de exemple, dar nu le stiu pe de rost)), cu ajutorul lui mplink, caruia trebuie sa i se specifice cum sa aranjeze codul, si ce sa faca cu libraria.ei, in acest punct, unde trebuia sa scriu scriptul pt mplink, m-am blocat. daca cineva a folosit cu succes mplink, il rog sa continue povestea mea de aici.iar despre partea cu aia care citesc direct in hexa, cred ca e o pierdere de vreme chiar daca este posibila. Link spre comentariu
cirip Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 As mai adauga ca daca nu vrei sa folosesti un singur fisier sursa de tip macaroana sau sir de carnati (la surse de cateva pagini devine incomod) poti sparge sursa in module pe care le incluzi (cauta comanda de preprocesor #include) in fisierul care contine bucla principala.De asemenea, poti face alocare automata a adreselor din RAM (variabilele) la etichetele simbolice folosind directiva cblock (Cauta in help)Dar cred ca deja vorbesc de OZN-uri. Nu te speria. Incepe cu un program f simplu, cum ar fi :bucla addlw 0x1 goto buclasi vezi pe simulator cum se incrementeaza w-ul.A! Si asa cum iti ziceam si in mesajul personal, eu nu am folosit niciodata linkerul in proiectele mele personale. Am folosit include-uri ca sa descongestionez sursa si sa o fac mai usor de urmarit. O alta sugestie este sa comentezi cu generozitate sursele. Peste 3 luni nu vei mai stii ce ai facut acolo.Bafta!Cirip Link spre comentariu
Vizitator johnny Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 Hai ca am inceput sa inteleg cate ceva: va multumesc frumos pt sfaturi si daca imi mai'' prind urechile'' pe undeva ,pot apela la ajutorul vostru?. Apropo," modulele" de care vorbeste Cirip in ultimul mesaj sunt cumva Macrourile (scuzati-mi ignoranta) Link spre comentariu
cirip Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 Apropo," modulele" de care vorbeste Cirip in ultimul mesaj sunt cumva MacrourileNu neaparat. Pot fi sectiuni de cod, subrutine, care pot contine si macrouri (nu pesti ). Modulele sunt blocuri functionale care are sens sa le separi. De ex ai o rutina de comunicare cu un afisaj LCD. Toata rutina aia o poti face intr-un fisier separat, de ex. lcd.inc (sau lcd.asm) pe care il incluzi in programul principal cu directiva #include lcd.inc . Ideea e ca nu te incurci cu surse de 1Km cand ai de modificat ceva.Daca mai intrebari/nelamuriri, hai incoa'!Cirip Link spre comentariu
Vizitator johnny Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 OK merci! Link spre comentariu
aghora17 Postat Februarie 23, 2005 Partajează Postat Februarie 23, 2005 vezi ca pe pagina mea de web sunt doua exemple destul de clare si simple cu inmultire si impartire pe 8 biti. dupa ce incepi sa misti putin, or sa-ti fie de folos. ai acolo toata sursa pt mplab. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum