Fórum témák
» Több friss téma |
Szia! Bocsi! Igen láttam csak belegabalyodtam a kódba. Egyébként assemblyben biztos, hogy lehet ilyet csinálni? A "dw" mit jelent? nem rémlik, hogy láttam volna korábban...
A hozzászólás módosítva: Nov 25, 2014
Ez csak egy egyszerű assembly makró, amivel előre lehet definiálni egy táblázatot a programmemóriában. Feltételezem, elég lehet a feladatra 16/32 fix érték. Az A/D átalakítás eredményéből szerintem mindenképpen érdemes az alacsonyabb értékű biteket nullázni.
A dw egy szóban (két egymás utáni bájtban) helyez el értéket. A hozzászólás módosítva: Nov 25, 2014
Valami nem stimmel a belinkelt forrással..
Nem lehet fordítani és átírni pedig nem szeretném az egészet.. Szerintem alapból is hibás...
Nem látom át valamiért... A táblázatot értem, a dw-t is értem már, de a dw sorában lévő többit nem értem.
Ez mit is csinál tulajdonképpen?
Előre kiszámolja a periódusidőt. Mivel korlátai vannak a MASM matematikai képességeinek (csak integer kifejezést tud) át kellett rendezni a képletet.
periódusidő= 1/fordulatszám (másodpercenként) mikroszekundum. Azért kell 60-al osztani, mert a percenkénti fordulatszámot ismerjük. Levegőpontosan könnyű lenne, de nekünk alkalmazkodni kell a lehetőségekhez. A hozzászólás módosítva: Nov 25, 2014
Hát akkor hagyd az egészet ha hibás...
Hát ez egész más megvilágításba helyezi a dolgokat. Nem is tudtam ilyet lehet csinálni, én eddig kínlódtam az osztórutinokkal, de ezek szerint nincs is rá szükség??? Valahol lehet találni leírást róla, hogy milyen matek kifejezéseket, hogyan lehet megvalósítani? EZT találtam, de nem látom benne, csak a dw-t.
Nem hittem volna, hogy ekkora probléma... Mégiscsak kénytelen leszek megoldani cmosokkal...
3.4 és 3.5 fejezet. A 69. oldalon vannak a kifejezésekben használható műveletek felsorolva. Vigyázni kell vele, mert a programbeli címkék csak korlátozottan használhatók fel.
Mekkora királyság! Még azt kérdezném, hogy meddig lehet ezzel elmenni? Mármint arra gondolok, hogy ha jól értem a dolgot akkor a decimális 100000 amit írtál a képletbe az már nem fér bele az egy szóba sem. Mekkora a legnagyobb érték amit kezelni tud?
Az biztos, hogy a kifejezés eredménye 8, vagy 16 bites lehet. 32 bites, előjel nélküli szám lehet egy közbenső érték. (3.4 fejezet)
Hát most már biztos az agyadra mentem, de egyet még muszáj kérdeznem, mert nem fogok tudni aludni Az osztás, szorzásnál a tagok lehetnek változók is vagy csak konstansok?
Lehet ciklusokat szervezni, azoknak a változói szerepelhetnek a kifejezésekben, de ezzel nem foglalkoztam. A kifejezésekben a változók címe (cimkéje) szerepelhet, az értéke nem.
(Ha az agyamra mennél, azt észre fogod venni.) A hozzászólás módosítva: Nov 25, 2014
Egyszerűsítsünk: valtozo1 * valtozo2 ezt így lehet? Az eredményt hova teszi? W-be?
Na ez az, amit nem tud megcsinálni.
Olyan értékek használhatók fel a kifejezésekben, amik a fordítás, de legkésőbb a szerkesztés idejekor ismertek. Ha ez nem dönthető el egyértelműen, elkezd pampogni. A hozzászólás módosítva: Nov 25, 2014
Ezeket a számításokat nem a PIC végzi el, hanem a fordító program, és az eredményt fordítja bele a programba .
A fenébe! Na sebaj, így is haladtam valamit. Köszi!
Igen most már tiszta, csak gondoltam itt is lehet olyat mint magasabb szintű nyelven írt programoknál láttam, hogy csak beírja hasonló módon a képletet a forrásba és kész. De hát bilibe lógott a kezem.
Biztos nem lehet olyan nagy probléma, de úgy foglalkozni valamivel, hogy alapjaiban sem jó, és ráadásul nem tudni pontosan milyen környezetben és milyen fordítóval dolgot az eredeti író.
Tele van ASM kóddal is a C forrás ami azért kicsit furcsa. Legfőképpen a regiszterek beállítását bízta ASM-re az egyéb sallangot meg C-ben írta, elvileg.. A másik gond pedig, hogy a fórdító alapból, önmagába nem is ismerte fel a PIC-et. Ráadásul mikor már megtaláltam, hogy melyik állomány tartozik hozzá, kiderült, hogy a regiszterek és port megnevezések teljesen mások.. Szóval ezt, így csak sok idő és energia lenne újra írni és persze ismerni kellene azt is, hogy mihez kell és mit kellene valójában tudnia.., na meg persze, hogy ez eredetileg jó e volt Hidd el, ha nem kellene előröl átírnom már rég kész lenne...
Mit kellene ennek a kütyünek csinálni? (Emlékeim szerint van egy hasonló projektem.)
Köszi hogy foglalkozol vele
Gyakorlatilag van egy digitális effektprocesszor modulom, ami tud 16 effektet (chorus, flanger, visszhang, stb..) Ezek címzéséhez kellene valami. A dolgot meg lehetne oldani egy mechanikus gray-kód 16 állású kapcsolóval is. Az effektet én viszont lábpedálba szeretném építeni, ahol egy up/down kapcsolóval lehetne a szükséges pozicióba állítani. A legszebb persze az lenne, ha egy vagy két 7szegmenses kijelző mutatná, hol áll a számlálás 0-15ig. Ez a linkelt kapcsolás 4 leddel mutatja, kicsit fapados megoldás, de kézenfekvőnek bizonyult.
Mondtam én, hogy volt egy hasonló projekt... Folytathatjuk privátban is, vagy keressünk neki egy topikot.
Sziasztok!
Van egy kis problémám egy LED villogtató programmal. A BTG PORTB0,1 hatására a PORTB kimenete a szimlátorban billeg, de a Proteusban állandóan magas szinten marad. A sima BSF BCF kombinációval megy a proteus szimulátorában is. Nem tudom hogy hol hibáztam, tudnátok segíteni?
Milyen nyelven van a programod, és milyen mikrovezérlőre?
Mérd meg a feszültséget az RB0 lábon. Ha van oszcilloszkópod, nézd meg a szinteket. Valamiért alacsony szintet olvas be a kontroller. A porton a kiadott magas szint feszültsége nem éri el a bemeneti magas szint minimális feszültségét. Analóg mód nincs kikapcsolva erre a lábra.
Ha használható a btg utasítás, akkor a LATB regiszter is használható. A btg LATB0, ACCESS utasítással biztos villogna. A hozzászólás módosítva: Nov 26, 2014
Szia, ha csak a B0 melletti kis piros négyzetet látod az nem azt jelenti, hogy csak logikai 1 van rajta...
Köss rá egy oszcilloszkópot és ott majd megválik, hogy villog vagy nem
Szia!
Sikerült elindítani. A LATB-s megoldás volt a kulcs. PIC18F2455-ös vezélrőn tanulok, most lehet hogy hülyeséget fogok írni de a PORTB- csak kiolvasásra volna alkalmas a LATB pedig kiírásra? |
Bejelentkezés
Hirdetés |