Szerző |
Üzenet |
SleepyOne
vas-tag
Csatlakozott: csüt. márc. 08, 2007 19:51 Hozzászólások: 6
|
Tisztelt Fórumozók!
Elnézést, hogyha rossz topicba írom a nyűgöm, elösszőr vagyok itt. Olyan problémával fordulnék felétek, hogy egy CCS C-ben megírt kód nem igazán azt csinálja amit kéne.
Nemtudom, hogy itt használt-e valaki C compilert. A jelenség az, hogy RS232-őn próbálok kommunikálni a processzorral. Szkóppal végigmértem, a jelszintek megvannak, a bitek is átmásznak rendesen. Egy MPLAB-ICD debugger panelem van, amibe egy 16F877-es processzort raktam. Egy MAX232-es chipet is felraktam rá, ami ugye a soros kommunikációhoz kellett.
A probléma a következő. A processzorról, az átküldött karakter, vagy szöveg, megjelenik a PC-n. De ha PCről próbálok küldeni egy karaktert, akkor azt nem akarja vissza "echo"-zni a processzor.
A PC-n lévő C kód reményeim szerint jó, mert egy másik PCbe bekötve, egy RS232 sniffer programmal nézve megjelent a küldött karakter.
Ha a PCről kiküldök egy karaktert, akkor a megszakítás rész elindul, a LED kigyullad a próba panelen. Csak épp nem küldi vissza az elküldött karaktert. És amíg nincs kiküldve az a bit, addig meg a printf függvény rendesen átküldi az üzenetet.
Már végignyálaztam az egész CCS fórumot, találtam is ilyen hibát, de sehol se láttam megoldást. Nagy segítség lenne ha valaki tudna egy kis útmutatást adni.
Mellékelem a kódot, amit futtatok a PIC-ben:
Kód: #include <16F877.h> #fuses hs,NOWDT,NOPROTECT,NOLVP #use delay(clock=19660800) #use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7, ERRORS)
#int_rda void rda_isr(void) {
char x; x=getc(); delay_ms(2000);
putc(x);
output_high(pin_c0);
}
//======================== void main() {
enable_interrupts(INT_RDA); enable_interrupts(GLOBAL);
while(1) { printf("Test! \n"); delay_ms(1000); }
}
|
csüt. márc. 08, 2007 20:04 |
|
|
újfiu
ezüst tag
Csatlakozott: szer. jan. 03, 2007 15:26 Hozzászólások: 30
|
Kicsit komolyabbra véve....
sajnos mostanában nem volt időm foglalkozni a progival, de tény, hogy szimulációig nem jutottam, mert az üzenetnél elakadtam és meg akartam oldani a problémát....
Íme az ominózus sor:
Message(302) Register in operand not in bank 0. Ensure that bank bits are correct.
amennyiben ez csak egy figyelmeztetés arra nézve, hogy az általam meghívott register eléréséhez bankot kell váltanom és a progi nem nézi, hogy megtettem-e csak azt, hogy kell. akkor minden világos!!!!!
Remélem, hogy így van.
akkor ezek szerint minden rendben.
Jöhet a szimuláció.
Ha valaki elmagyarázza végre, hogy mi az..... )))
Köszi a segítséget!!
bocsi, hogy csak ritkán vagyok, de mással kell foglalkozzak!
Bár szerintem a többség itt nem olyan szomorú most... )))
|
hétf. márc. 05, 2007 17:51 |
|
|
újfiu
ezüst tag
Csatlakozott: szer. jan. 03, 2007 15:26 Hozzászólások: 30
|
Sziasztok!
Már csak egy kérdésem van!!!
Mi az a szimulációóóóó????
)))
PPPP
|
hétf. márc. 05, 2007 17:47 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
watt írta: persze lehetne oda 6-ot is írni, és működne, gondolom... Elég jó esélye van, mivel a GPIO valójában 6-ot jelent, és az MPLAB is kicseréli 6-ra, mielőtt hex-et csinál belőle.
|
szomb. márc. 03, 2007 11:02 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Látszik, hogy nem programoztam még 12F-et !
Megjegyzem ebből sem látszik(mármint a 6-ból), hogy a 6 = GPIO, persze lehetne oda 6-ot is írni, és működne, gondolom...
|
szomb. márc. 03, 2007 10:54 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
watt írta: Ebből kellett volna kitalálni? Nem. A végén ha megnézed a TRIS utasítást az "Instruction Set Summary" részben, akkor ott áll, hogy "TRIS f", ahol az f értéke 6 vagy 7. Na innen lehet kitalálni, hogy miért 6 vagy 7 (12F508 és 509-nél csak 6, tehát GPIO).
|
szomb. márc. 03, 2007 10:47 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Pedig GOTO Adatlap. Gondolod nem néztem? De biztosan vaksi vagyok ezért nem találtam! Ebből kellett volna kitalálni? Idézet: The Output Driver Control register is loaded with the contents of the W register by executing the TRIS f instruction.
Az "f" ebben az esetben a GPIO, ha jól sejtem. Még jó, hogy egyszerűen fogalmaznak, nehogy megértse az, aki gyengébb angolból!
|
szomb. márc. 03, 2007 10:36 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
watt írta: TRIS GPIO Agyam eldobom! Én is köszönöm, mert nem tudom mikorra jöttem volna rá! Pedig GOTO Adatlap. Gyanús volt, hogy a TRISGPIO regiszternek nincs memóriacíme, így nem írható bele semmi movwf utasítással. Tehát csak meg kellett találni a mikéntet. Hasonlóképpen írható az OPTION regiszter is. Ezek csak írható regiszterek, nem lehet a tartalmukat olvasni.
|
szomb. márc. 03, 2007 0:41 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
TRIS GPIO
Agyam eldobom! Én is köszönöm, mert nem tudom mikorra jöttem volna rá!
|
pén. márc. 02, 2007 21:58 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Sziasztok!
Potyo!
Hálám örökké üldözni fog!
Sikerült beforgatni, a szimulátor szerint minden ok!
Mégegyszer köszi mindenkinek!!!
Szidom
|
pén. márc. 02, 2007 20:30 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Elmeséljem, hogy ahhoz, hogy a tris biteket pl. 0b00011001 állapotba hozzuk, ahhoz a következő utasításokat kell kiadni
Kód: MOVLW b'00011001' TRIS GPIO
|
pén. márc. 02, 2007 20:18 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Most el kell mennem, eddig nem jöttem rá, pedig a speciális regiszterek között ott van a TRISIO, nézd meg a View menüben. 22 előtt nem leszek itthon...
|
pén. márc. 02, 2007 19:48 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Ezer hála és köszönet!!!
|
pén. márc. 02, 2007 19:43 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Nem, de kipróbáltam és a TRIS hatására nem töltötte fel a TRISIO-t. Nem tudom hogyan kéne hívni hogy az MPLAB megegye és a megfelelő címre tegye a beállítást. Próbálom megkeresni, de még a lst fájlban sincs TRIS-re utaló címke.
|
pén. márc. 02, 2007 19:38 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Szia Watt!
Így gondoltad?
LIST P=12f509
#INCLUDE "P12F509.INC"
__CONFIG _CP_OFF&_WDT_OFF&_IntRC_OSC
CBLOCK 0x0C
T1
T2
ENDC
ORG 0
MOVLW B'00010111'
VISSZA: MOVLW B'000010'
MOVWF GPIO
CALL DELAY
MOVLW B'000010'
MOVWF GPIO
CALL DELAY
MOVLW B'000100'
MOVWF GPIO
CALL DELAY
MOVLW B'010000'
MOVWF GPIO
CALL DELAY
MOVLW B'100000'
MOVWF GPIO
CALL DELAY
GOTO VISSZA
DELAY: MOVLW d'2'
MOVWF T1
DEL: MOVLW d'5'
MOVWF T2
DEL1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ T2,f
GOTO DEL1
DECFSZ T1,f
GOTO DEL
RETURN
END
Így nem ír hibát, de akkor mikor kell a trisgpio -t használni?
Szidom
|
pén. márc. 02, 2007 19:34 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
|
pén. márc. 02, 2007 19:11 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Sziasztok!
Ezer hála és köszönet mindenkinek!
Módosítottam a progit, de az mpasm -nek most sem tetszik!
Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p12F509 "asm2.asm" /l"asm2.lst" /e"asm2.err" Error[113] H:\ASM2.ASM 13 : Symbol not previously defined (TRISGPIO) Warning[227] H:\ASM2.ASM 47 : Substituting RETLW 0 for RETURN pseudo-op Halting build on first failure as requested. BUILD FAILED: Fri Mar 02 16:50:34 2007
Nem értem mi a baja a TRISGPIO -val.
|
pén. márc. 02, 2007 16:58 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Nincs. Itt a 0-ás bank 32bájt hosszú(0-1F), és ennek az első felében van néhány regiszter, köztük a GPORT-is, a TRIS-is és a változókból is csak kettő van a 1C-n és 1D-n, tehát minden a 0. bankban van ennél a programnál.
|
pén. márc. 02, 2007 12:18 |
|
|
atta
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 228
|
Szia watt,
Itt nincs külön bankban a TRIS és a PORT regiszter?
atta
|
pén. márc. 02, 2007 10:42 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Kód: START BSF STATUS,C ;BANK1 Ezt nem értem miért írtad, sok vizet nem zavar, de az biztos, hogy nem a BANK1-et választja ki, amire amúgy nincs szükség, mert minden regiszter amit használsz a programban a BANK0-ban van. Esetleg egy CLRF FSR szóba jöhet, alap induláshoz, már csak azért is, mert az adatlap Reset utáni alapállapotnak a 6., 5. FSR bankváltó biteket b'10' állapotnak írja, ami a BANK1-et választaná ki. szerk: Most olvasom, hogy a 6. bit nem használatos, mindig 1. Csak az 5. bit aktív, amivel ki lehet választani az a két bankot, tehát a reset állapot a 0-s bankot választja ki, ami rendben van. Persze az FSR törlése nem árthat! A másik baj ez: Idézet: Kód: MOVLW B'001111' MOVWF TRISGPIO
Itt azokat a lábakat, amiket utána a programban használsz, mind bemenetnek konfigoltad. 0= Out, 1=In, még beszédes is a jel!
Itt még gond lehet az is, hogy a GP3 láb csak bemenet lehet, ezért másikat kell választanod a 4. LED-nek.
Egyelőre ennyi, ha még mindig nem megy, akkor keresgélek még, de elvileg mennie kéne.
|
pén. márc. 02, 2007 6:17 |
|
|
atta
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 228
|
Kód: ORG 0 START BSF STATUS,C ;BANK1 MOVLW B'001111' MOVWF TRISGPIO Ide kell egy bankváltás (szerintem) Kód: VISSZA: MOVLW B'000001' MOVWF GPIO CALL DELAY MOVLW B'000010' MOVWF GPIO ....................
|
csüt. márc. 01, 2007 23:23 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Sziasztok!
Watt!
Köszönöm az infót próbálok keresni valami olvasnivalót, mert egyenlőre nem megy a dolog.
Próbáltam saját progit írni ami a belső oscillátot használja, és a kimeneteken ledeket villogtat, de nem sikerült. Tudom hogy hülye vagyok de nem értem miért nem sikerül a fordítás.
Ha nem gond feldobom a félkész progit, ha valakinek van ideje kérem segítsen! Hálám örökké üldözni fogja!
Kód: LIST P=12f509 #INCLUDE "P12F509.INC" __CONFIG _CP_OFF&_WDT_OFF&_IntRC_OSC CBLOCK 0x0C T1 T2 ENDC
ORG 0 START BSF STATUS,C ;BANK1 MOVLW B'001111' MOVWF TRISGPIO VISSZA: MOVLW B'000001' MOVWF GPIO CALL DELAY MOVLW B'000010' MOVWF GPIO CALL DELAY MOVLW B'000100' MOVWF GPIO CALL DELAY MOVLW B'010000' MOVWF GPIO CALL DELAY MOVLW B'100000' MOVWF GPIO CALL DELAY GOTO VISSZA
DELAY: MOVLW d'150' MOVWF T1 DEL: MOVLW d'255' MOVWF T2 DEL1: NOP NOP NOP NOP NOP NOP NOP NOP DECFSZ T2,f GOTO DEL1 DECFSZ T1,f GOTO DEL RETURN END
Lehet hogy az egész baromság?
Köszi
|
csüt. márc. 01, 2007 20:56 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
ditax
A legtöbb esetben az szokott gond lenni, hogy a PIC-ben nem állítasz be minden perifériát úgy, hogy az ne zavarjon be. Ilyenek a komparátorok, A/D-k, párhuzamos port kezelő. Valamint a megszakítások letiltása sem egyértelmű, ha nem teszed meg a program futtatása előtt. Érdemes egy tiszta lapot készíteni, és utána megírni a fő rutinokat. 16F-eknél befigyel még a bankok kérdése a RAM-nál, amit ha nem jól kezelsz gondot okozhat.
írdj le egy részletet, mi megy szimulűtor alatt ami nem megy a PIC-ben. használd a
|
csüt. márc. 01, 2007 15:51 |
|
|
MotoHacker
gyémánt tag
Csatlakozott: pén. jan. 28, 2005 20:39 Hozzászólások: 3683 Tartózkodási hely: Bp
|
A leggyorsabb A-D konverterek párhuzamosak,minden kvantált értékre egy külön komparátor van.
Ezt a "felezgetős" eljárást szukcesszív aproximációnak hívják,tulajdonképpen lépcsős közelítés semmi más.
Igazából egyébként ennek a két átalakításnak van ma egyedül "érteme",a többi nyugodtan "muzeálisnak" tekinthető.
(ezek általában kondenzátorra,VCO-ra,idő vagy frekvenciamérésre épültek)
|
csüt. márc. 01, 2007 14:56 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
WATT, MotoHacker köszi a választ, ezt a megoldást kerestem. Ezt használják gyors A/D convertereknél is, nem?
Egyébként nyugodtan akár növekvő sorrendbe is rendezhetőek az állandók.
Kösz!
|
csüt. márc. 01, 2007 14:45 |
|
|
ditax
ezüst tag
Csatlakozott: kedd aug. 01, 2006 6:27 Hozzászólások: 39 Tartózkodási hely: BUDAPEST
|
WATT köszi
DE
a személyesre nem Rád gondoltam, le írnám hogy más is tanuljon belőle de tudod itt amikor csak levelez az emberfia ....de ezek olyan bonyolult dolgok, hogy bele fáradtam az ön tanításba.
Azt meg komolyan gondoltam, ha valaki személyesen .... meg is "jutalmaznám"
egyébként: olyan alapvető dolgoknál akadtam el (sok szünet után), hogy, pl. a BTFSC...a szimulátorban meg szépen át ugorja mintha amit figyel nem is lenne ott. Szóval ilyenek, meg hasonlóak bosszantanak manapság.
Ha ennél is e1xűbbet írok, szekszuál elindulni, természetesen a szimulátoron gyönyörűen megy, pl. csökkentem az x rekeszt és a csökkentet értéket mindig kiratom 1 7szegmensesre, a valóságban....
Na kb röviden ennyiről lenne szó.
üdv KK
|
csüt. márc. 01, 2007 14:22 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
MH
Idézet: Dehogyis:D ..egy számsorozat mindig növekvő sorrendbe tehető. Igazad van. Erre az indexelésre nem gondoltam.
ditax
Nem néztem mostanában a ládámat, de személyesen nem hiszem, hogy tudok segíteni, csak virtuálisan.
Szerintem érdemes lenne ide írnod a kérdésedet, mert sokan örülnének neki, ha valaki jókat tudna kérdezni!
|
csüt. márc. 01, 2007 14:05 |
|
|
ditax
ezüst tag
Csatlakozott: kedd aug. 01, 2006 6:27 Hozzászólások: 39 Tartózkodási hely: BUDAPEST
|
WAT-nak, és mindenkinek
Sziasztok.
Wat, nem kaptál emailt?
Kesresek valakit aki SZEMÉLYESEN tudna segíteni PIC-ben
Köszi előre is
KK
|
csüt. márc. 01, 2007 13:48 |
|
|
MotoHacker
gyémánt tag
Csatlakozott: pén. jan. 28, 2005 20:39 Hozzászólások: 3683 Tartózkodási hely: Bp
|
Dehogyis:D ..egy számsorozat mindig növekvő sorrendbe tehető.
Az eredeti sorrendet egy második indextáblázattal szokták reprodukálni,tehát ha az 5.elem volt valami az eredeti ("kaotikus"-más szepont szerint rendezett) sorban,ami most az első,akkor az indextáblázatunk első értéke 5,és így tovább.
Ez egy plusz indexelt olvasás,és 256 memóriahely,ami "kibogozza" a sorbarendezett táblázatot.
A sorbarendezésnek azért van értelmemert így gyorsan megvizsgálható,hogy a közéspő értéknél nagyobb-e...ha igen,újabb vizsgálat arra,hogy annak a fél sorozatnak a középső értékével mi van..és így tovább...egészen a pontos(leghasonlóbb) értékek megkapásáig,ez 256elem esetén pont 8 darab összehasonlítás,meg az indexelt olvasás ami az eredeti helyet megadja...ha a két érték indexe kell(hisz tök eltérő helyen is lehettek) ami a számot közelíti,akkor két olvasás az indextáblából.
Mellesleg a különbség sem érdektelen,legfelejbb másodlagos most.
Létezik olyan matematikai eljárás ami épphogy értékek különbségeire alapszik(pl ez egyfajta tömörítés is).
Könnyen lehet,hogy az algoritmus itt is felgyorsítható azzal,hogy nem a számokkal,hanem különbségekkel dolgozunk(tulajdonképpen ez kicsit olyan,mintha integrálnánk a függvényt)
...ehhez én már nem vagyok elég okos,egy prog.mat.-os biztos találna még egyszerűbb és elegánsabb módszert.
|
csüt. márc. 01, 2007 13:18 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Adott egy 13 bites változó (16 biten tárolva), és 256 db. szintén 13 bites állandó. Hogyan tudom eldönteni, hogy a változóm, melyik állandóhoz esik a legközelebb, (vagy melyik álladó van a sorban alatta v. fölötte)? Össze kell hasonlítani őket! Idézet: Két egymás melletti állandó között a legnagyobb különbség D'78' Ez nem érdekes. Idézet: Nincs idő (rosz esetben) 40 16 bites öszeadásra + 256 db 16 bites öszehasonlításra, és nincs szabad 8kbyte memória (táblázatból kikereséshez)
Ha az állandók növekvő sorrendben vannak, akkor közelítéses módszerrel az összehasonlítások számát jelentősen le lehet csökkenteni. Ha az állandók nem rendezhetők sorba, akkor sajnos 256 összehasonlítás marad. De mi lehet az, amit ilyen körmönfont módon kell megoldani? Ja és mihez kéne 8k memória?
|
csüt. márc. 01, 2007 6:00 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Létezik olyan progi amivel a pic-böl letöltött hex-et vissza tudom fejteni asm-be? Igen. MPLAB. A program memória ablakban, hexa nézetben az egér jobb gombjával be lehet inportálni hex-et. Ezután átváltani szimbolikus nézetre és ott lesz a kód. DE! Nem lesznek beszédes címkék, csak a címek jelennek meg, valamint nem lesznek megjegyzések. Nos ezek nélkül nagyon nehéz visszafejteni egy kódot, én még nem tudtam rávenni magam erre sose. De ha muszáj, akkor nem lehetetlen. Idézet: kifejtenéd nekem szájba rágós módon ?
Nem tudom mire gondolsz! Megtalálod az adatlapban azokat az elemeket amiket említettem. Beállítod ahogy írtam és a PIC 4MHz-el fog ketyegni, ha bekapcsolod. Javaslom, hogy keress irodalmat, ha ennyi nem elég a megértéshez! Létezik magyar nyelvű adatlap is a 16F84-hez(az alapokhoz jó), nem tudom hol, keress rá a google-val, az sokat segíthet egyébként is.
|
csüt. márc. 01, 2007 5:50 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Sziasztok még egy kérdés!
Létezik olyan progi amivel a pic-böl letöltött hex-et vissza tudom fejteni asm-be?
Köszi
|
szer. feb. 28, 2007 21:49 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
Sziasztok!
Ismét van egy kis PIC aritmetikai problémám.
Adott egy 13 bites változó (16 biten tárolva), és 256 db. szintén 13 bites állandó.
Hogyan tudom eldönteni, hogy a változóm, melyik állandóhoz esik a legközelebb, (vagy melyik álladó van a sorban alatta v. fölötte)?
Két egymás melletti állandó között a legnagyobb különbség D'78'
Nincs idő (rosz esetben) 40 16 bites öszeadásra + 256 db 16 bites öszehasonlításra, és nincs szabad 8kbyte memória (táblázatból kikereséshez)
Szerintetek megoldható, vagy ezt az utat adjam fel?
|
szer. feb. 28, 2007 21:46 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Köszönöm a villámgyors választ!
De mint írtam kezdő vagyok(nagyon)
kifejtenéd nekem szájba rágós módon ?
Előre is köszönöm!
|
szer. feb. 28, 2007 21:44 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
1MHz-el sehogy, de...
A konfigurációs szóban beállítod a FOSC2, FOSC1, FOSC0 biteket 100-ra (ekkor az RB4-et is tudod majd használni), ezzel bekapcsoltad a 4MHz-es belső oszcit. Ezután olyan progit írsz, ami a 4MHz-et veszi időalapnak nem az 1MHz-et. Ennyi.
Az OSCCAL regiszterrel finomítani tudod a 4MHz-et, ha szükséges, elég finom lépésekben.
|
szer. feb. 28, 2007 21:08 |
|
|
szidom
ezüst tag
Csatlakozott: vas. feb. 04, 2007 18:42 Hozzászólások: 52 Tartózkodási hely: Szombathely
|
Sziasztok!
Bocs ha rossz helyre írok, de kezdő vagyok!
El tudná nekem valaki érthetően magyarázni hogy lehet 12f509-es pic-en belső órajelet használni nekem tetsző frekin (1 MHZ)?
Előre is köszi!!!
Szidom
|
szer. feb. 28, 2007 20:33 |
|
|
zoox
ezüst tag
Csatlakozott: hétf. dec. 18, 2006 23:51 Hozzászólások: 38 Tartózkodási hely: Jászárokszállás
|
Én is ezekre gondoltam(de hátha???.Mivel az elektronika már készen van igy inkább az akut választom.
Köszi
|
vas. feb. 25, 2007 18:50 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Úgy tudom, hogy csak a 18F-eknél lehet programból a program memóriát módosítani. A 16F-eknél nincs erre utasítás. Neked az alternatíva az akku beszerelése, vagy egy eeprom-os típusra való csere.
|
szomb. feb. 24, 2007 15:17 |
|
|
zoox
ezüst tag
Csatlakozott: hétf. dec. 18, 2006 23:51 Hozzászólások: 38 Tartózkodási hely: Jászárokszállás
|
Sziasztok!
Lenne egy balga kérdésem.Építek egy 2-digites hőmérőt aminek 2 bemenete van és vezérel 2 relét ami kölönbözö hömérsékletekre kapcsol be és ki,eddig ez megy is ,de a kapcsolási hömérsékletet idönként változtatni kell ,de a pic kiválasztásakor nem figyeltem hogy van e EEPROM a pic-be (PIC16f716) . Az a kérdésem hogy lehet e olyat csinálni valami trükkel hogy ha programmembe lehet-e úgy tárolni egy értéket hogy ki-be kapcsolás után ne felejtse el.
(félek hogy a válasz az hogy NEM)
|
pén. feb. 23, 2007 21:56 |
|
|
MotoHacker
gyémánt tag
Csatlakozott: pén. jan. 28, 2005 20:39 Hozzászólások: 3683 Tartózkodási hely: Bp
|
Általában az álvéletlen is megteszi,nem kell ennyire belebonyolódni.
Fényújságnál szerettem volna egy véletlenszerű "hangyafoci" effektet,de az álvéletlen nagyon jól látszott,nem tünt kaotikusnak.
Erre fogtam és saját karaktertáblázatomat használtam segédeszköznek,egy onnan indexelt értékkel egy másik véletlent előállítva,majd a kettőt XOR-olva már teljesen kaotikusnak tüntek a kapott értékek.
De vannak más módszerek is jó álvéletlen szám előállítására,a mostani PIC-ek szóhosszúságával és matematikai képességeivel ez nem lehet probléma.
|
csüt. feb. 22, 2007 17:39 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Analog bemenetre rátenni egy zajt, majd beolvasni a pillanatnyi értéket. Valós véletlenszám. Ha a zaj átlagot adna, akkor egy fűrészjelet, amit integrálni lehetne négyszögből, amit a PIC állítana elő....
|
csüt. feb. 22, 2007 17:05 |
|
|
titila
vas-tag
Csatlakozott: szer. feb. 21, 2007 7:45 Hozzászólások: 7
|
Sziasztok!
Nincs valakinek ötletete 16F hez véletlenszám generátorra?
|
csüt. feb. 22, 2007 15:57 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Legközelebb ekkora projecthez 18F-et használok, de ezt mostmár beletákolom ebbe Ismerős helyzet!
|
csüt. feb. 22, 2007 8:02 |
|
|
titila
vas-tag
Csatlakozott: szer. feb. 21, 2007 7:45 Hozzászólások: 7
|
Hi!
Egy zenekari fényeffekt processzort. Hát igen a progi közel felét a lapozóbitek állítgatása teszi ki... Legközelebb ekkora projecthez 18F-et használok, de ezt mostmár beletákolom ebbe
Üdv!
|
csüt. feb. 22, 2007 6:50 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Elfelejtettem az interrupt rutinban törölni a regiszterek mentése után a pclath reget... Igen ilyet én is csináltam már. Mert ugyan a megszakításkor eltárolódik a lap is a visszatéréshez, de magától nem állítódik át, mert a megszakítás lekezelése akár ugyanazon(itt a 2.) lapon is lehet, tehát erről nekünk kell gondoskodni a megszakítás lekezelésekor. Én azért nem szeretem a 16F-eket, mert egy idő után az egész progi PAGESEL-ből áll! Egyébként nem jártam messze a valóságtól, csak egy lépéssel később történt meg a PAGESEL hiánya! Idézet: Köszi a pozitív hozzáállásért! Igyekszünk! Mit építesz?
|
csüt. feb. 22, 2007 5:42 |
|
|
titila
vas-tag
Csatlakozott: szer. feb. 21, 2007 7:45 Hozzászólások: 7
|
Hali!
Megtaláltam a bugot!!!!! Ó én balgatag jószág! Elfelejtettem az interrupt rutinban törölni a regiszterek mentése után a pclath reget... Köszi a pozitív hozzáállásért! Még úgyis írok...
|
szer. feb. 21, 2007 22:55 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
kszabi írta: HI mindenki Ha tud valaki olyan szimulácios progirol ami tudja a ds pic-eket és lehet lcd-t csatlakoztatni ,akkor légyszi irjon. Elöre is köszi a sgitséget.
Ha proteus szerű programra gondolsz, szerintem olyan nem létezik dspic támogatással.
Üdv!
|
szer. feb. 21, 2007 22:38 |
|
|
titila
vas-tag
Csatlakozott: szer. feb. 21, 2007 7:45 Hozzászólások: 7
|
Ez után betettem egy nyomógombtól függő végtelen ciklust. Csak ez van utána. Innen csak az interruptra tug ugrani... talán ott lehet a hiba? A pikantéria a dologban, hogy a lap elején(0x800) meg működik a t1con írása minden probléma nélkül...
|
szer. feb. 21, 2007 20:53 |
|
|
titila
vas-tag
Csatlakozott: szer. feb. 21, 2007 7:45 Hozzászólások: 7
|
Nem háborodtam fel, csak leírtam, mert biztos félreérthető volt.
|
szer. feb. 21, 2007 20:49 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Tisztában vagyok vele, hogy mi a különbség az adat és a programmemória között. Ennek örülök, de nem sok okod van a felháborodásra e miatt: Idézet: ha a programmemória második lapján bekapcsolom a Timer1-et Tehát nem a lapján, hanem a Idézet: programmemória 2. lapjáról
Na de túl van tárgyalva.
A kérdéseden még el kell töprengjek, mert ilyennel még nem találkoztam.
Nem lehet, hogy nem ettől száll el, hanem ezután van valami ugró utasítás, ami az előző lapra mutat és nem váltasz előtte lapot?
|
szer. feb. 21, 2007 19:28 |
|
|