Eugen_B Postat Iulie 3, 2010 Partajează Postat Iulie 3, 2010 Salut , pe un pic 18f4450 am scris USB bootloader-ul de la microchip (varianta HID) . Bootloader-ul pare a functiona, cand tin apasat pe butonul desemnat a porni bootloader -ul , si il conectez la USB , este recunoscut , si pot folosi aplicatia lui pentru a scrie programul. Bootloader-ul ocupa portiunea de memorie 0x00h - 0xFFFh. Problema mea este ca eu vreau sa folosesc impreuna cu acest bootloader hex-uri compilate cu HI-TECH PICC18. Printre unele proiecte de la microchip (cu compilator C18 de la microchip) am vazut ca pentru a fi folosite cu bootloader se reloca vectorul de reset si cei 2 vectori de intrerupere de la adresele 0x00h , 0x08h respectiv 0x18h la adresele 0x1000h, 0x1008h respectiv 0x1018h . Cum realizez aceasta operatie in PICC18 ? Eu am incercat cu adaugarea comenzii "--codeoffset=1000" la commandline-ul linker-ului. Din fisierul *.map generat: TOTAL Name Link Load Length Space CLASS CODE reset_vec 1000 1000 4 0 intcode 1008 1008 10 0 init 1018 1018 24 0 end_init 103C 103C 12 0 text0 1210 1210 82 0 text1 104E 104E 1C2 0observ ca mi-a plasat cum trebuie vectorul de reset si intrerupere la adresele potrivite , dar problema este ca probramul nu merge. Programul este unul simplu , un buton aprinde un led , testat fara "--codeoffset=1000" si scris direct in pic , programul fiind functional. Unde gresesc ? De ce nu merge programul incarcat cu bootloader-ul ? Am incercat si cu comanda "-a1000h" impreuna cu "--codeoffset=1000" si nici asa nu merge. Daca cineva are mai multa experienta cu bootloader-e si m-ar putea ajuta , as fi recunoscator. Link spre comentariu
Eugen_B Postat Iulie 3, 2010 Autor Partajează Postat Iulie 3, 2010 Hm.. se pare ca mege programul cu bootloader, cu "--codeoffset=1000" , dar trebuie modificat hex-ul si adaugat ":020000040000FA" la inceput, altfel nu e scris.Dar acum am alta problema , intr-un program generez 4 sunete cu un squarewave cu ajutorul intreruperii unui timer , durata timerului este o diviziune a frecventei sunetelor, astfel in functie de sunetul dorit numar in functia de intrerupere diviziuni si la numarul dorit de diviziuni inversez un pin. Cand programul ruleaza fara bootloader totul merge bine , cand ruleaza cu bootloader-ul insa sunetele sunt mai inalte , si distorsionate .Inteleg ca rutina de intrerupere este intarziata de un salt de la 0x08 la 0x1008 , dar de ce sunetul este distorsionat ? (in loc doar sa fie mai inalt/ mai jos). 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