Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1303 / 1318
(#) Attila86 válasza Lamprologus hozzászólására (») Aug 27, 2019 /
 
Megdupláztam a sorokat de akkor sem megy a debugger.
(#) Hp41C válasza Attila86 hozzászólására (») Aug 27, 2019 /
 
Minden PGCx-PGDx párról lehet programozni, nyomkövetés csak arról a párról megy, amit a FICD konfigurációs regiszter ICS<1..0> bitjeivel beállítottunk.
A hozzászólás módosítva: Aug 27, 2019
(#) Attila86 válasza Attila86 hozzászólására (») Aug 27, 2019 /
 
Kicseréltem a PIC-et és megy a debugger!
(#) cross51 válasza Attila86 hozzászólására (») Aug 27, 2019 /
 
Még időben szóltál sokáig néztem volna még az errata-át hátha írnak valamit.
(#) bbalazs_ hozzászólása Szept 1, 2019 /
 
Urak, belefutottam valami durvába. PIC24FJ128GC010 az alany és egyszerű rezisztív touchscreen-t szeretnék beolvasni. A kisebb testvérén (24fj128gc006) simán megy minden. ASM-ben dolgozom.
A fő baja, hogy belefagy az interrupt bit figyelésbe, egyszerűen nem megy tovább - az interrupt bit nem billen be. Az errata említ hasonlót, de a megoldást, amit kínál, nem működik. A neten tapogatózva ugyanilyen hiba volt, megoldás nem született, illetve valami x16-ra való átállást javasoltak neki...
A fő gondom az, hogy ezen a PIC-en így nem tudok A/D konverziót csinálni egyáltalán.
Minden megoldás érdekel, de eddig bármire állítottam, nem billent be egyik flag sem. Simán várakozással kiváltva pedig egyszerűen 0-kat olvas eredményül. tehát mintha el sem kezdené...
Találkozott már valaki ilyennel?
(#) Moderátor hozzászólása bbalazs_ hozzászólására (») Szept 4, 2019
 
Akkor most próbáljuk ezt meg káromkodás nélkül megfogalmazni, jó?
(#) superuser hozzászólása Szept 4, 2019 / 3
 
Tisztelt Moderátor,

Most tényleg kitörölted az amúgy jelentős tanulsággal bíró hozzászólását egy káromkodás miatt?
(#) bbalazs_ válasza superuser hozzászólására (») Szept 4, 2019 /
 
Úgy gondolom, nem volt benne káromkodás. Hacsak nem a 'szívás' szót vette annak.
A lényeg röviden összefoglalva:
A PIC24FJ128GC010-es .gdl file-jában az AD regiszterek hibás szám alatt szerepelnek.
Igaz, én még a régi mplab-os rendszert használom.
(#) silent15 hozzászólása Okt 12, 2019 /
 
Sziasztok!

El akartam kezdeni DSPs kontrollereket használni. FFT library-t is használnám, ki akartam próbálni, hogy mindent szépen linkel e, persze nem. Először nem találta a függvényt, ekkor az xc16-ld konfigurációhoz betettem a "--library "dsp" into xc16-ld" opciót. Ekkor már megtalálta a függvényt, de kaptak az újabb hibát:
Idézet:
„c:\microchip\xc16\bin\bin\..\bin/elf-ld.exe: cannot open into: No such file or directory”


Direkt újraraktam a XC16 fordítót, úgy, hogy ne legyen space az elérési útjába, de nem változott semmi, más megoldást pedig nem találtam. Van valakinek ötlete, miért akad meg itt?

Köszönöm!

(Próbakód)
  1. //... Konfiguráció ...
  2.  
  3. #include <xc.h>
  4. #include <dsp.h>
  5.  
  6. int main(void)
  7. {    
  8.     IFFTComplexIP(0, 0, 0, 0);
  9.    
  10.     return 0;
  11. }


UI: Egy dsPIC33EV32GM002 kontrollerről lenne szó.
A hozzászólás módosítva: Okt 12, 2019
(#) tomi52 hozzászólása Okt 16, 2019 /
 
Próbált már valaki a dsPIC33CH... duál magost?
(#) maya711 hozzászólása Nov 4, 2019 /
 
Kedves Kollégák!
Van két 8-bites változó(mindkettő értéke 0...255 tartományban lehet). Egyiket kivonom a másikból, így a szintén 8 bites eredmény is 0...255 tartományban lesz. Az így keletkezett különbséget 8-bites
SIGNED -dé kéne tenni, ahol persze a 7. bit az eredmény pozitív/negatív állapotát jelzi, így az előbbi kivonás 8-bites eredménye 7-bitesre redukálódik.
Van-e valakinek erre egy jól kipróbált assembly-programja, és elküldené-e nekem?
Leginkább PIC16F1825 és 12F1840-et programozok.
Segítséget előre is köszönöm.
(#) pipi válasza maya711 hozzászólására (») Nov 4, 2019 /
 
Hali!
Nade a pl a 254 pozitívot hogy szuszakolod bele a 7 bit be?
(#) cross51 válasza silent15 hozzászólására (») Nov 4, 2019 / 1
 
Kicsit késői, de ha esetleg nem találtad meg itt írják, hogy a lipdsp.a be kell rakni a projektba.
A hozzászólás módosítva: Nov 4, 2019
(#) maya711 válasza pipi hozzászólására (») Nov 5, 2019 /
 
Mint ahogy írtam volt: "...így az előbbi kivonás 8-bites eredménye 7-bitesre redukálódik."
Ezt tudomásul veszem és nekem így megfelel.
(#) Hp41C válasza maya711 hozzászólására (») Nov 5, 2019 /
 
Bármelyik 8 bites típus adatlapjában megtalálható az Instruction set summary. Ebben a fejezetben kell megnézni a SUBWF utasítást.

subwf.JPG
    
(#) bbalazs_ válasza maya711 hozzászólására (») Nov 5, 2019 /
 
De akkor ebből hülyeség lesz.
Esetleg úgy lehetne megoldani, hogy a pontosság rovására leshifteled egyet jobbra, tudomásul véve, hogy majd ha dolgozol vele, akkor fel kell tolni egy bittel.
Vagy a legalsó bitet használod előjelnek és akkor maszkolod.
(#) maya711 válasza Hp41C hozzászólására (») Nov 6, 2019 /
 
Kösz, na de azért ilyen tanácsot kapni miután több >4kB assemblyt írtam már...
De ezt nem tudhattad, legfeljebb abból sejthetted hogy e fórum címe nem "PIC kezdőknek".
(#) maya711 válasza bbalazs_ hozzászólására (») Nov 6, 2019 /
 
Jól van, felesleges tovább agyalni, a dolgot természetesen megoldottam; mellékelem.
A problémám az, hogy csak kb. 6x6==36 esetben próbáltam ki--> nincs időm a 256x256 eset kipróbálására. Ezért keresnék egy olyan rutint ami a kért eredményt adja(akár ugyanaz mint az én megoldásom/akár más), de TELJESKÖRŰEN le van ellenőrizve. Csak ennyi kéne.
Köszönöm.
(#) Hp41C válasza maya711 hozzászólására (») Nov 6, 2019 /
 
Ha a kontroller ismeri az LSRF utasítást, akkor az ARSF -et és a SUBWFB -t is ismeri.
; 16 bit kivonás: (result+1) : (result) = (op1+1) : (op1) - (op2+1) : (op2)
movf op2,w
subwf op1,w
movwf result
movf op2+1,w
subwfb op1+1,w
movwf result+1

; 16 bites előjeles szám osztása 2 -vel
asrf result+1,f
rrf result,f
A hozzászólás módosítva: Nov 6, 2019
(#) maya711 válasza Hp41C hozzászólására (») Nov 7, 2019 /
 
OK, de :
1./ a kérésem szerint én nem 16-biteseket vonnék ki egymásból, majd alakítanám. Talán nem voltam eléggé pontos, újrafogalmazom. Van A és B 8-bites nem-SIGNED változó, vagyis mindegyik felveheti a 0...255 értéket. Képezve az E=A-B kivonást(még mindig UNSIGNED-módon), a keletkezett érték -255...255 között lenne, de persze ebből binárisban/hexben megintcsak 0...255 látszik. Ám a kivonásnál keletkeznie kellett/kéne egy jelzésnek arról hogy az eredmény pozitív-e vagy negatív. Ennek segítségével állítja elő az ÉN programom a kívánt előjeles eredményt, persze a 0.-bit elvesztésével, mivelhogy az 1 db előjel-bitet (hagyományosa /szabványosan) a 7. biten tárolja. De vadásznék egy bármilyen más, ám teljeskörűen leellenőrzött rutinra, ami azt teszi amit kértem.
2./ biztos, hogy az előjeles szám osztása 2-vel az általad írott szerint jól működik? Kipróbáltad? Mivelhogy az ASRF utasítás az MSB-bájt 7. bitjét(vagyis az előjel-bitet) a 6. bitre is letolja. De lehet hogy OK.
(#) Hp41C válasza maya711 hozzászólására (») Nov 7, 2019 /
 
1./ A subwfb utasítást azért vezették be, hogy egyszerűbbé tegyék a számítást. Sajnos csak field regiszterrel működő verziója van (a sublwb hiányzik). Az alacsonyabb helyi értéken elvégzett művelet eredményeként keletkező átvitelt (borrow) is figyelembe veszi. Esetedben a felső byte-ok helyett 0 -t használva előáll a két 8 bites érték különbsége 16 (illetve 9) biten. A következő 16 bites léptetés a 15. bitet viszi a hányados 15 és 14. bitjeire, a 8. bitet a 7. -ra, (a 0. -at a C -be). Így a kivonás felének előjele a 7. bitre kerül.

2./ ... az ASRF utasítás az MSB-bájt 7. bitjét (vagyis az előjel-bitet) a 6. bitre is letolja...
Mit is kellene csinálni? Egy pozitív szám fele is pozitív, egy negatív szám fele is negatív.
Inkább úgy fogalmaznék, hogy a 7. bitre a kiindulási szám előjelét teszi.
(#) maya711 válasza maya711 hozzászólására (») Nov 8, 2019 /
 
2./ kipróbáltam néhány számon: tényleg helyesen osztja az előjeles számokon az ASRF(+rrf) utasítás. És ezáltal rájöttem hogy mért van az utasításkészletben az ASRF.
De használható a 2-es hatványaival való osztásra is(pl. 16-tal).
Csak előjeles számokra hibátlan, mert nem-előjeles esetén hülyeséget ad akkor ha a 7. (1-bájtosnál) vagy a 15.(2-bájtosnál) biten 1-es van.
Köszönöm, ez hasznos volt. Mindjárt rövidítem is a programomban a 16-tal való osztó-rutint, ami eddig SWAPF és ANDLW utasításokkal végezte azt.
(#) Kovidivi válasza maya711 hozzászólására (») Nov 8, 2019 /
 
Miért kell assembly-ben a problémát megoldani? Időzítési a probléma, vagy nagyon kevés a prog. mem? Spórolni kell a memóriával is, hogy 8bites változókkal oldod meg 16bit helyett?
A hozzászólás módosítva: Nov 8, 2019
(#) Hp41C válasza maya711 hozzászólására (») Nov 8, 2019 /
 
Az asrf utasítást az előjeles számokhoz találták ki. A sima 16F -en csak két utasításból lehetett megvalósítani : rlf op+1,w; rrf op+1,f majd rrf op,f.

Lehet több bittel történő léptetésre is használni, hiszen egy pozitív szám negyede/nyolcada/... is pozitív, egy negatív szám negyede/nyolcada/... is negatív.
(#) Koncsar hozzászólása Nov 9, 2019 /
 
Sziasztok!
Nem tudjátok véletlenül, hogy a PIC12F683 nak mekkora a belső órajele?
(#) Bakman válasza Koncsar hozzászólására (») Nov 9, 2019 /
 
Beállítás kérdése, lásd melléklet.
(#) Koncsar válasza Bakman hozzászólására (») Nov 9, 2019 /
 
Köszi. Segítenél Flowcode 6 ban, hogy tudnám 8MHz re beállítani?
(#) Koncsar válasza attika hozzászólására (») Nov 9, 2019 /
 

Gondolod, hogy már nem néztem bele? Próbáltam gyorsan megtalálni, de nem sikerült. Köszi.
(#) Koncsar válasza Koncsar hozzászólására (») Nov 9, 2019 /
 
Ez így jó lehet?
(#) zenetom válasza Koncsar hozzászólására (») Nov 9, 2019 /
 
Itt szerintem gyorsabban kapsz választ:
Folyamatábrás mikrokontroller programozás Flowcode-dal
Következő: »»   1303 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem