 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Ned Nov 04, 2012 2:18 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Ned Nov 04, 2012 10:30 pm Naslov sporočila: |
|
|
Kroko, se zahvaljujem za ideje in se hkrati opravičujem, če s "kakšno užgem mimo", ker sem namreč C-jevski samouk z ne ravno dolgim stažem.
Preučil sem .map datoteko in ugotovil, da sem USB Framework ponekod uporabil "malo po domače". Spremenljivke sem namreč vrinil na mesto, kjer je
#pragma udata USB_VARIABLES=0x500
in mi jih je tudi nametalo na zaščiteno usb5 območje.
Sedaj sem to uredil, kot naj bi bilo predvideno in mi sedaj udata spremenljivke nameče na 0x100+ in zanimivo udata1 na 0x060+, kar je sicer malo čudno...
Naslednjo nerodno rabo USB Framework-a pa ugotavljam, da sem si sam ustvaril "main.h" in vanj stlačil nekaj definicij ter tudi nekaj prototip definicij, nekaj pa tudi v .c in moram to "pošlihtat"-vrstni red utegne biti pomemben....
Ugotovil sem pa tudi, da če prevajam brez
#include <math.h>,
potem sistem sicer še vedno ne deluje stabilno, a precej bolje ????.
Glede dodatnih .c, .h: Ali so spremenljivke v napr. "spremenljivke.c" samodejno lahko uporabljene tudi v "main.c" ?
Hvala in lp
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Ned Nov 04, 2012 11:10 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Pon Nov 05, 2012 9:28 pm Naslov sporočila: |
|
|
Tole s spremenljivkami .c, .h sem uporabil, a žal to ne reši problema z "zmedo v matematiki". Zelo poučno in ob priliki uporabno, a se v tem primeru hex praktično ne razlikuje od "udata1" verzije.
Uporabljam USB framework 2.9d (GenericHID) in MCHPUSB Bootloader in očitno ob večjem projektu tukaj "nekaj zaškripa".
Bom probal ubrati pristop "s kakšne druge strani"...
Vsakršni predlogi so dobrodošli
HVALA IN LP
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Tor Nov 06, 2012 12:43 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Tor Nov 06, 2012 7:31 pm Naslov sporočila: |
|
|
Tole .krn pa ne poznam. Da slučajno ne misliš .lkr ?
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Tor Nov 06, 2012 9:05 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Sre Nov 07, 2012 12:53 am Naslov sporočila: |
|
|
Ta je zraven zaradi Bootloaderja: rm18f4550 - MCHPUSB Bootload.lkr
Koda: |
// FileName: rm18f4550.lkr
// Sample linker command file for 18F4550 with Bootloader
//
//Change History:
// Rev Date Description
// 1.0 10/30/2004 Initial release
LIBPATH .
FILES c018i.o
FILES clib.lib
FILES p18F4550.lib
CODEPAGE NAME=boot START=0x0 END=0x7FF PROTECTED
CODEPAGE NAME=vectors START=0x800 END=0x0x829 PROTECTED
CODEPAGE NAME=page START=0x82A END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
STACK SIZE=0x100 RAM=gpr3
SECTION NAME=USB_VARS RAM=usb4
|
Sicer sem nekje prebral, da je že precej "brez zveze" kar se tiče USB-ja (usb4-7), saj se resnično večina usb spremenljivk "nameče" v free ram, namesto v predviden PROTECTED.
Zato sem z #pragma udata usb7=0x700 in #pragma udata usb6=0x600 tja shranil svoje spremenljivke in je vse 100% v svojih bankah.
Skoraj prepričan sem, da ni problem v spremenljivkah in tudi ne sw stacku, ki sem ga tudi že povečal na dve banki, pa ni nič spremenilo.
Moram iti testirat po verzijah nazaj in tako probat najti vzrok.
LP
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Sre Nov 07, 2012 1:29 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Sre Nov 07, 2012 11:32 pm Naslov sporočila: |
|
|
Uporabljen je originalen "rm18f4550 - MCHPUSB Bootload.lkr" ter le z "#pragma udata udata1".
Matematične funkcije so v neuporabljeni proceduri.
Prilagam to .map datoteko.
LP
Opis: |
USB_HID_2.7_RC_PPM_Autopilot.map |
|
 Download |
Ime datoteke: |
USB_HID_2.7_RC_PPM_Autopilot.map.txt |
Velikost datoteke: |
227.51 KB |
Downloadano: |
2 krat |
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Čet Nov 08, 2012 1:01 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Čet Nov 08, 2012 7:08 pm Naslov sporočila: |
|
|
Sem tudi sam že opazil, a je "active_protocol" dolg le 1byte:
Koda: |
/** VARIABLES ******************************************************/
#if defined(COMPILER_MPLAB_C18)
#pragma udata
#endif
BYTE idle_rate;
BYTE active_protocol; // [0] Boot Protocol [1] Report Protocol |
Zadevo moram še bolj "razšraufati"...
Sedaj sem nekako ugotovil, da verjetno USB in I2C delujeta brez večjih problemov, saj gredo na PC pravilno podatki iz merilnika pospeška, kompasa, barometra ter ADC-jev.
Težava je večinoma v girskopu, ki se mu čisto "utrga".
Le-ta bere podatke (42bytov) preko I2C iz 1k velikega fifo registra, kar pa omogoča v gyro prednaložen 2k dolg program.
Moram preveriti naslednje verjetnosti za težave:
- ali se vpis programa v gyro izvrši pravilno
- ali kaj ovira branje iz fifo registra (ne sme priti do over ali under-flow-a)
Kot že rečeno, težave povzroči prisotnost matematičnih float (math.c) funkcij, pa četudi se le nahajajo v neuporabljeni proceduri.
Sumil sem tudi, da je zmanjkalo programskega spomina, a mi tudi z upoštevanjem Bootloaderja, ostane skoraj 2k.
Javim ko kaj najdem...
HVALA IN LP
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Ned Nov 11, 2012 6:58 pm Naslov sporočila: |
|
|
Vse kaže, da je kriva počasnost float matematike, kar razumem, pa vendar mi ni jasno, da uposni uC tudi, če funkcije niso uporabljene - so le prisotne v nekativni proceduri.
Zadevo je "vrnilo v igro" pospešitev U2C vodila na največjo hitrost, pa tudi odjem iz FIFO baferja sem dodelal, da ne prihaja do napak zaradi upočasnitve.
Zaradi "klobasaste" formule:
Koda: |
Yt = mx*sin(amy)*sin(amx)+my*cos(amy)-mz*sin(amy)*cos(amx); |
pa mi je po nekaj sekundah zaštekal uC.
Rešil sem to tako, da sem formulo razbil na tri dele in deluje BP.
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|