Sari la conținut
ELFORUM - Forumul electronistilor

ajutor MPLAB


Vizitator johnny

Postări Recomandate

Vizitator johnny

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
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

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

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
Vizitator johnny

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

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

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

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

Apropo," modulele" de care vorbeste Cirip in ultimul mesaj sunt cumva Macrourile

Nu 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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări