Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Igen, köszi, Én is most jutottam el pont idáig, hogy megnézem a TRISA-t, de akkor ezek szerint jó nyomon jártam én is. Köszönöm szépen, mindjárt nekiesek.
Na sikeresen kiheréltem vicsys progiját, a kijelzőn már csak a CSOHO felirat és mellé a fok jelenik meg, már csak azt nem tudom, hogy maga a fok hol a fenében van számolva.
Ja TRISA állítás bejött, ég a led, most már csak a hőfoktól kell függővé tenni, hogy kap e ott 5V-ot vagy nem.
Igen, az assembler a fordító, az assemly maga a nyelv.
Töltsd le az MPLAB-ot a microchip-től, ingyenes. Kezdheted a tanulást a belinkelt anyaggal, de ne válasz 16F-et, mert nem érdemes. Nem olcsóbb és sokkal nehezebb programozni. Ha már a 18F-ek mennek, akkor ráérsz szenvedni a bankokkal, lapokkal!
Ehh, ezt a 16f84A-t nem lehet nyomkövetni, de mindjárt kicserélem egy 16f628A-ra(ha van itthon), lábkiosztás stimmel, csak a 628-as többet tud, de gondolom ha nem használom a plusz tudást, akkor csak elzörög a sima 84A kódjával.
Egyszerűen nem találom a hőfokot az asm kódban, pedig azt hittem megvan (DS_RAM0), de nem nyert.
Hát így külön nem tudok de én írtam már ilyen programot egy fedélzeti komputerbe(ami kész, csak még nem építettem be). Ha eseteg írni akarsz progit, akkor esetleg néhány ötletet tudok adni. Egyébként nem nagy kaland, sokkal fontosabb, hogy a járműben legyen jeladó!
Sajna még nem értem, a pic lelkivilágát, ezért is kerestem. Pic es dolgot már építettem, de az más tészta.
Vicsys tachométer módosításával lehetséges-e Persze 4MHz-es qvarc-al Hall ic van, mint jeladó (TLE4905L), 16F84A és 2*16 lcd van kéznél. Feszültségmérés, az mennyire macerás ? 20 - 30 V
Igen ez egy jó kiindulás, csak a kapott értékeket kell átgyúrni.
A feszmérés 16F84A-val problémás, mert nincs benne AD, csak komparátor. Külső AD csatlakoztatásával megoldható, de akkor inkább másik PIC-et kell választani, mert az olcsóbb.
Másik pic, akkor ugrik a "kindulási alap"
Tudom a 16f628 hassonló, csak azom foglalt. Így egyenlőre pihen a dolog Azért, köszi
Sziasztok!
Szeretném a segítségeteket kérni. Építettem egy kacsolást hőmérséklet mérésre. ( PIC18LF2525, 4MHz rezonátor,eeprom , szenzor ,led és egy nyomógomb ) Az áramkör 3v üzemel ill. üzemelne. Csak akkor hajlandó elindulni a pic ha az RB porton valamelyik lábat alacsony szintre húzom. Az RB portra csak a nyomógomb kapcsolódik (RB4) a többi láb szabad ill az RB7,RB6 a programozáshoz ki van vezetve tüskesorra. Az áramkört ICD2 programozom akkor semmi gond minden ok. Programozás után csak akkor hajlandó menni ha valamelyik RB portot alacsony szintre húzom. Miért Van valami ötletetek? A válaszokat előre is köszönöm.
Az alacsony feszültségű programozást (LVP) letiltottad?
Fene megeszi, a 628-as sem debugolható rendesen. Ha valaki időmilliomos megtenné, hogy megmondja, hogy a vicsys féle hőmérőben melyik a hőfok decimálisan, azt megköszönném.
Igen le van tiltva az LVP. A programot CCS C ben írom.
A RB4 bemenet és a többi RB prort kimenetnek van beállítva. konfig: #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOCPD,NOSTVREN,NODEBUG,NOWRT,NOWRTD #fuses NOEBTR,NOCPB,NOEBTRB,NOWRTC,NOWRTB,NOPBADEN,MCLR,NOLVP #use delay(clock=4000000)
köszi
ez az oldal sztem jó is lesz, hogy megértsem a dolgokat bár lehetne kevésbé rózsaszín a háttér, mert 4 oldal végigolvasása után már kicsit fáj a szeme, és a szépérzékem is erősen romlott ettől a takonyrózsaszíntől
Egyedül az RA0 port AD a többi digit kimenet.
Hali!
Összeütöttem 18F2321-re egy soros kommunikációval (RS232) használható bootloadert. Úgy néz ki, egész jól működik, a használatához nincs szükség PC oldalon semmi másra, csak egy soros terminálprogramra (pl. Hyperterm), és a megfelelően lefordított .hex filera. Akit érdekel, esetleg nézze meg, véleményeket, további ötleteket szívesen veszek. Bővebben: Link
Mit jelent, hogy "nem megy"? Decoupling kondi ott van a Vdd-Vss kozott?Allandoan resetalodik a pic, vagy mi tortenik pontosan? WDT, BOR stb reset nem lehetseges veletlenul? Vagy akar valami stak over/underflow stb ami az RB4 allasatol fugg?
Ki kellene tenni egy-ket portra "debug jeleket" es megnezni scoppal hogy mi az abra, vagy pl resetre ratenni egy ledet, hogyha X tupisu reset van akkor gyujtsa ki a pirosat, ha Y akkor a zoldet stb. Amugy valosznuleg konyebben lehetne segiteni ha lenne kapcsolasi rajz meg forras kod, ezek nelkul max tapogatozni lehet a sotetben. Udv, Tamas
Csak akkor fut a PIC-en a program ha az RB prort valamelyik lábát alacsony szintre húzom (a Vss rákötöm). Az áramkörben az RB porton csak az RB4 használom a többit nem.
Akkor maskepp kerdezem:
1. Milyen oscillatorrol megy a cuccod? Kulso? Belso? Kvartz? Porog az ora? (ha belso, akkor tedd ki labra es ugy nezd meg scoppal) 2. Ha porog az oscillator, akkor a. MCLR fel van huzva, nincs allandoan reseten az MCU? b. Allandoan reset all elo valami miatt? c. Valahol vegtelen ciklusba kerul? d. Timer vagy mas megszakitas nem ter vissza? 3. Vdd es Vid mennyi? Mekkora zaj van a Vdd-n amugy? (erre sem valaszoltal: 100nF van a Vdd es Vss kozott kozel a pic labaihoz?) 4. RB4-en (mivel csak azt hasznalod) mi van ha nem huzod le? (semmit sem meselsz az aramkorrol...). 5. Mennyi a tapod terhelhetosege es ehhez kepest mennyit eszik az aramkorod? Igy vaktaban kb ennyit tudok segiteni, de szerintem ha ezekre a kerdesekre megvan a valaszod akkor a megoldas is nagy valoszinuseggel. Udv, Tamas
Hát küzdök mint állat ezzel a hőmérős cuccal.
elméletileg ide mindíg befut dscalcmax movf DS_RAM0,W movwf HOFOK movf DS_SIGNMAXTMP,W btfss STATUS,Z goto maxisminus maxisplus movf DS_RAM1,W btfss STATUS,Z return ; case 1 movf DS_MAXTMP,W ; case 0 subwf DS_RAM0,W btfss STATUS,C return goto copyacttomax maxisminus movf DS_RAM1,W btfsc STATUS,Z goto copyacttomax ; case 2 movf DS_MAXTMP,W ; case 3 subwf DS_RAM0,W btfsc STATUS,C return copyacttomax movf DS_RAM0,W movwf DS_MAXTMP movf DS_RAM1,W movwf DS_SIGNMAXTMP return ez a kódrész a max hőmérsékletet számolja, és ha az új érték nagyobb mint az eddigi, akkor az új érték kerül a a maxba. Az első két sort én raktam bele, elméletileg egy HOFOK nevű változóma rakja a DS_RAM0-át merthogy ugye az a hőfok. a kód végén meg van egy ilyen: movlw d'30' subwf HOFOK,W btfss STATUS,C goto bekap BCF PORTA,3 goto tovabb bekap bsf PORTA,3 tovabb goto loop end ez meg ugye kivonja a HOFOK-ból a 30-at, ha nincs átvitel, azaz a HOFOK >=30-al akkor ugrik a bekapra és kigyújtja a ledet (meghúz a relé, és keringetia vizet a szivattyú), ha meg 30 alá megy a HOFOK, akkor ugye átcsordul, és eloltja a ledet, (nem húz a relé) A jelenség az, hogy tök mindegy hány fokot mutat a kijelző, a led folyamatosan ég, azaz a HOFOK valtozó folyamatosan 30 felett van, miközben a kijelzőn most is 25 fok van. Segítsetek légyszi, mondjátok meg, mit rontottam el, mert én már a szememet kinéztem de hibát ebben nem látok. Az utolsó goto loop az ide ugrik vissza, tehát ez a dscalcmax minden ciklusban meghivodik: loop movlw 1 ; set bit 1 of LCD_ACTDS movwf LCD_ACTDS call dstemperature ; get temperature values of first ds1820 call dsminusconvertion movlw DS_MIN0 ; minmax calculation call dsminmax2tmp ; since we have not enough ram space call dscalcmax ; ITT HÍVÓDIK MEG call dscalcmin ; minmax calculation areas movlw DS_MIN0 call dstmp2minmax . . .
Hali!
Megvettem a Vörös féle pic csomagot és volna vele egy kis gondom! Ime: A Pic prog v1.0-át használok! A beállitásokat a Pic kezdőknek című kiadvány alapján állitottam be. Rákattinva az írásra, a művelet elkezdödik majd egy kis idő múlva félbeszakad. Az írás folyamán az Állapot mező: törlés... kód+id törölve Kontroll:0000 Itt félbe is szakad, majd egy hiba üzenet jelenik meg! Ez a következő: Íráshiba 0000 Írt: 0000 Adat: 3FFF Mit tegyek ilyenkor? Már probálkoztam egy-két dologgal, de nem sikerült megoldanom a problémát
nem olvastam vissza, de ha ds1820 vagy ds18s20-al méred a hőfokot, akkor valahogy teszteld le, hogy nem-e folyamatosan 85 fokot kapsz vissza, mert akkor vmi el van szúrva a kommunikációnál
1. Bankok rendben vannak? Minden változó azonos bankban van?
2. Volt már 30 fok feletti hőmérsékleted? Mert szerintem az a feltételrendszer máshogy működik, mint ahogy írtad. A subwf a W-t vonja ki a regiszterből, és akkor áll be a carry, ha a HOFOK nagyobb vagy egyenlő volt a W-nél, azaz a 30-nál. így HOFOK>=30 esetén hajtódik végre a BCF, HOFOK<30 esetén a BSF a kérdéses portbitre. Mintha pont fordítva akartad volna, nem?
Kijelzőn szépen megy a hőfok, ha megfogom az érzékelőt akkor 30 fok fölé megy.
A subwf tényleg a w-t vonja ki, és mivel a w-be dec 30-at töltöttem movlw d'30' ezért kéne ekkor nem túlcsordulni ha 30 fölött van a csőhőfok, és ilyenkor ugrik a bekapcsolra, ami ugye most egy ledet hajt csak. Carry akkor lesz, ha mondjuk a hofok 25. ekkor ugye ebből kivonja a 30-at és máris carry
mondom kijelzőn most is 28 fok van, led meg ég mint állat!
Ezt nem értem! Ha a kijelzőn tényleg extrém magas hőfokok lennének, még azt mondanám, jól megy, de nem, kasán változik, fel tudom tolni a kézmeleggel 30 fok fölé, led meg vidáman ég, mintha semmi nem történne. |
Bejelentkezés
Hirdetés |