Fórum témák
» Több friss téma |
Ezt a microchip oldaláról szedtem le. Viszont olyanba is beleütköztem, hogy a timer1-est ha letíltottam akkor a timer0 sem működött. A többi timert nem is próbáltam már.
Ugyanakkor ha bármilyen megszakítást használok miközben jelen van az usb-s használat is (küldés vagy fogadás usb-n keresztül), akkor az usb csatlakozásnak vége. Még ha nem is csinálok semmit az usb-vel.
Esetleg olvasd át ezt a cikksorozatot: Bővebben: Link
És ez a topic lehet jobb lenne: Bővebben: Link
Szia!
A bootloader -es fejlesztésnek vannak hátulütői: - A fejlesztednő program (nem a bootloader) áthelyezett interrupt vektorokat használ (RM_HIGH_INTERRUPT_VECTOR és RM_LOW_INTERRUPT_VECTOR). A boot loader egy-egy ugró utasítás tesz a megszakítási vektorokhoz.
Ha a fejlesztendő programot fordítod, a bootloadert kitörölheti a MpLab a fordítás előtt. A reset vektorhoz beteszi a saját indító kódjára való ugrást. A megszakítási vektorokhoz nem tölt kódot. A helyes működéshez minden fordítás után rá kellene tölteni a booloader -t a programra - ezzel helyreállítani a reset és a megszakítási vektorok átirányítását. Egy megkerülő, gyorsító megoldás: A fejlesztendő programba is írd bele a megszakítás átirányítását (a fent idézett kódot). A fordítás működő kódot fordít, a megszakítások működni fognak. A végleges konfigurációhoz a fordítás után betöltött bootloader felülírja ezt a területet... A hozzászólás módosítva: Ápr 29, 2013
Error [1111] undefined label 'RM_HIGH_INTERRUPT_VECTOR' in '_high_ISR'
Ezt a hibát írta ki. Nincs ilyen cimke
Tedd fel az egész programot.... Tényleg nincs definiálva a cimke abban, amit feltettél...
Ennyi volt a PICKit2 programjában:
Ezt tettem bele, hogy működjön a nyomkövetés:
Az alacsony és a magas szint kiszolgálása ugyan azzal a routinnal történik a PICKit2 -ben. Persze értelemszerűen át lehet írni két kiszolgálóra is. A hozzászólás módosítva: Ápr 29, 2013
Ha áttérek a C-re, ebbe fogok megőrülni, az összevissza ugrálás...
A void IntH(void) még egy returnt is odatesz a végére
Nem ebbe fogsz beleőrülni, hanem abba, hogy nem férsz el a program vagy adatmemóriába... Főleg a fordítók ingyenes változatával -- De erről már írtam eleget... A hozzászólás módosítva: Ápr 30, 2013
Na meglett a probléma és a megoldása.
Nem a címekkel volt a baki. Zeneton kolléga rátapintott a lényegre, amikor mondta, hogy nem RETFIE-val hanem RETURN-al tér vissza. Ez azért van így mert nem megszakításként hanem sima függvényként volt értelmezve az általam megszakításnak hitt rutin. Az első projektben jól látszik, hogy a megszakítás vektorban nem átirányítom a dolgokat hanem ottan akarom elvégezni a dolgokat amit a megszakításban akarok csinálni. Oda egy az elején #pragma interrupt HighHandler megszakításvektorként definiált függvény kell, hogy legyen. Engem az tévesztett meg, hogy a demo programban volt egy függvény, hogy High_ISR és én örömömben mindent belegyúrtam , pedig ide átirányítás kell. Köszönöm nektek, hogy segítettetek és időt szántatok a problémám megoldására.
Sziasztok!
Nem tudok dűlőre jutni a Pic18F4550 processzor AN0-on való analóg méréssel. Ott kezdődött a probléma, hogy már sikeresen működik egy DHT11.es páratartalom mérő és egy BMP180 légnyomásmérő, de a két csip két különböző hőmérsékletet mér, 1-2 fok eltéréssel, és hát csak pozitív tartományban. Ezért, gondoltam megmérem egy LM335 IC-vel is. (Ezt már használtam PIC16f887-tel.) Na de nem működik. És nem mér akkor sem, ha egy potit teszek az LM335 helyére. A pic konfigja alapvetően az USB működéshez van beállítva. 20MHz-es kristályról megy, 48MHz:
Attól tartok, hogy rosszul állítom be az ADCON regisztereket. Ez a főprogram vonatkozó részlete:
Van valakinek valami ötlete, mit rontok el? köszönöm!
Ha gondolod ASM-ben tudok küldeni egy minta filet, ami néhány analóg bemenetet kiír egy 4x20-as kijelzőre. (pár perc alatt megírom) Ehhez kellene tudni melyik portot használod a kijelzőnél... 50-100db 4550-t már elhasználtam, legalább 60-70%-ra tele volt mind, máig is jól teljesítenek, nem fagytak le...Ha a sima konfigok elegek, azt is kiolvashatod belőle...
A hozzászólás módosítva: Dec 27, 2014
Bocs a késésért, közben el kellett ugranom valahova...Köldöm, Az LCD az D-porton van. (E-RD.5, RS-RD.4, Adat D.0-D.3) Első 3 analóg bemenet olvasása.
A hozzászólás módosítva: Dec 27, 2014
Ez milyen C lenne ? Probald meg az AD-t a sajat RC oszcival berugni, es csak egy meres eredmenyet irasd ki minden matematika nelkul. Mondjuk ha feltenned az egesz programot, lehet tobbet latnank.
|
Bejelentkezés
Hirdetés |