Fórum témák
» Több friss téma |
Fórum » MikroPascal kérdések
Témaindító: bozsokiandras, idő: Máj 15, 2006
Témakörök:
Alapesetben így kell:
Nem árt még a porta.0-t pergésmentesíteni egy boolean változó beiktatásával. A hozzászólás módosítva: Márc 17, 2014
Üdv. ( PIC16F887)
Szimulátorba betöltöttem, forditás után folyamatosan villognak a led-ek. Nekem is ugyan ez a hiba jött ki. Amikor én ezt megirtam, termlészetesen nem münködött . Ezt használtam forrásnak. (csatolt fájl eredeti) De ezzel sem ment. Napersze átirtam benne amit kell. asm-ben is megirom, aztán majd kiderül gyorsan hogy mi kell még hozzá hogy münködjön. Ma este átteszem a programot PIC16F84-re is, és megnézem hogy ott mit csinál vele. Hali A hozzászólás módosítva: Márc 17, 2014
Kapcsolásoddal lesz szerintem a baj.
Pl, ha minden porta és porte bemenet, akkor ezeknek a nem használt lábait nem árt 10k ellenállással testre, vagy tápra kötni. A nyomógomb bekötésénél szintén kell a helyesen bekötött ellenállás. adcon0 és adcon1 regisztereket állítsd még nullára. A hozzászólás módosítva: Márc 17, 2014
ansel és anselh regisztereket is állítsd nullára.
Ezzel az AN lábakat analógról digitálisra váltod át.
Szia, csatoltam a programot.
Nem írtad, hogy aktív alacsony vagy magas a gomb, én alacsonyra írtam. (tehát kell egy felhúzó ellenállás a PORTA0-ra) Üdv. A hozzászólás módosítva: Márc 17, 2014
Sziasztok.
Az én progim-ból sok minden hiányzott még. A PORTA0 lábon van egy 10K ellenállás.Bővebben: Gomb 10K ohm asm-ben megirtam, ott egy kicsit könyebb volt a dolog. De igy is jó. Most nézem hogy mi micsoda az mpas-fájlban. hali
Sziasztok!
Használt már valaki tcp connectet? Egy 18f67j60 at programozok mikropascalban : Net_Ethernet_Intern_connectTCP(ip, port_remote, port_local, socket) -tel próbálkozok kapcsolódni. Lehallgatva a hálózatot látszik, hogy ki megy a kérés a tcp szerver felé, a szerver válaszol is, de nem kapcsolódik valamiért a pic. Valakinek sikerült ezt használni?
Sziasztok!
Tanácstalan lettem a Sleep parancs használatával kapcsolatban. Azt tapasztaltam, hogy ha alvó módba akarok tenni egy külső kvarcról (T1OSO/T1OSI lábak) üzemelő órát, akkor a programom fő része továbbra is fut, és frissíti az LCD szövegét. Készítettem a hiba megtalálásához egy teszt kódot és Proteusz kapcsolást. Itt beállítottam egy Timer1 időzítést és a főprogramban villogtatok egy ledet, majd azonnal alvómódba teszem a mikrokontrollert. A Timer1-nek valójában nincs is köze a villogtatáshoz, annak csak a háttérben kellene futnia. Ennek ellenére azt tapasztalom, hogy ha a Timer1 inicializálva van, akkor a led a sleep mód ellenére is villog, ha viszont kikapcsoloma Timer1-et, akkor megmarad az utolsó állapotában, tehát valóban "elalszik" a mikrokontroller (16F886). Ennek így kell működnie, vagy én követek el valami hibát? Idézet: „INTCON.INTE := 1;” A külső RB0 megszakítás bekapcsolva, az RB0 láb bemenet. Fix logikai szint van rá kapcsolva? A hozzászólás módosítva: Ápr 7, 2014
Azzal szeretném felébreszteni a PIC-et, azért állítottam 1-re.
Ha testre kötöm akkor is fennáll a probléma. Arra gyanakszok, hogy a többi lábára kapott impulzus miatt esik mindig ki az alvó módból, és mivel külső kvarcot használok órának, ezért az RC1/T1OSI lábra folyamatosan kapja a jeleket. Ha átállítom a Timer1-et belső órára, és kiveszem a kvarcot az áramkörből, akkor mintha működne rendesen. A hozzászólás módosítva: Ápr 7, 2014
Mit lehet ez ellen tenni?
Nem lehet alvó módba tenni a PIC-et, ha használom a Timer1 órát?
Sleep módból a következők tudják felébreszteni a 16F88x -et:
Külső reset, watchdog, RB0 - INT bemenet, Timer1 átfordulás (aszinkron számláló), ECCP capture esemény, A/D konverzió vége, EEProm írás vége, komparátor kimenet változás, változás figyelő (IOC), Eusart break és I2C slave állapotváltás. Az teheti meg, amelyik működése engedélyezett és megszakítás engedélyező bitje is 1 értékű (kivéve watchdog és reset). Lehet a timer1 -et használni sleep alatt: aszinkron szálmálóként letiltott megszakításkéréssel vagy a megszakítás kérésére újrainicializálva és űjra sleep állapotba küldeéssel. Az utóbbi esetben a főprogramnak meg kell különböztetni a timer1 átfordulást a tényleges felébresztéstől.
Szép napot kedves fórumozók!
Van-e itt egy kedves társunk, aki programozó, és akad 10 perc szabadideje? Mert ha lenne egy ilyen kolléga, akkor kellene 1 kis segítség. Van egy program, amiben 1D tömb van, és nekem nehézséget okoz. Pascal-os program(mit tehetek, ezt tanítják), s ellenőrző lesz belőle, de sehogyan sem értem a működését az első ciklus után. Szóval kellene egy nagyon egyszerű nyelven fogalmazott magyarázat, hogy mi miért van, minek mi a szerepe, de jól érthetően! A program szövege nagyon egyszerű: Idézet: „Beolvasni n elemét a tömbnek, sorbarendezni őket csökkenő sorrendben, s e rendezett elemeket kimutatni egy új sorban, elválasztva üres hellyel!” Mellékeltem a Pascal filet, remélem mielőbb kapok segítséget. Sokatoknak ez rutinmunka, nekem életmentés! Üdv!
Szia!
Ez az un. buborék rendezés. Működése röviden: Kettős ciklussal a kisebb értékű elemet előrébb helyezzük. Ha lefut a kettő sciklus, az elemek nagyság szerint rendezett sorban lesznek a tömbben. Részletesebben: Egy ciklussal végigvizgáljuk a tömb elemeit a 0 indextól az (n-1) indexig (azért nem n -ig, mert a soron levő elem utáni elemeket is vizgáljuk). A belső ciklusban az első ciklus által kiválasztott elemet követő elemekre megvizsgáljuk, hogy kisebb-e, mint az első ciklus által kiválasztott elem. Ha kisebb az első ciklus által kiválasztott elemmel felcseréljük. Így a belső ciklus utolsó lefutása után a tömbben levő legkisebb értékű elem a tömb legelső indexű elemébe kerül. Ekkor a külső ciklus változóját növeljük - azaz a további feladat olyan, mintha az 1 indextől egy elemmel kisebb tömböt rendeznénk...
Köszönöm, ez egy kicsit bonyolult még így is, de remélem meg fogom érteni...
Sziasztok!
18f4520-ra szeretnék több megszakítást csinálni. Az egyik a tmr0 1 sec megszakítással,ez adja az időzítéseknek a számlálandó impulzusokat. A másik, az ra5 és re0 lábakon levő nyomógombok együttes lenyomása adna egy megszakítást és belépne egy menübe, a harmadik az az rb0-rb1-rb2 lábakon létrejött szintváltozás adna megszakítást és attól függően, hogy melyik lábon történt változás (pl: zárlati esemény), az lcd-n megjelenik a kiváltó esemény. A timer megszakítás működik, de a menübe lépés megszakítása még nem. Így azt úgy oldottam meg, hogy a timer megszakításba tettem az ra5 és re0 lábak figyelését és az esemény egy regiszter egy bitjét állítja át és ezt a bitet main programban vizsgálva tudok a menübe lépni, de úgy érzem ez nem elegáns, a zárlat figyelésről nem is beszélve .
itt az a progi ami nem működik
A hozzászólás módosítva: Szept 10, 2014
A port interrupt torleshez elobb egy port olvasast kell csinalni.
Szia!
Ezen pontosan mit ertsek? Mit olvasok és mit torlok? Egy kis pelda jol jonne.
Sziasztok!
Szeretném megkérdezni, hogy foglalkozott-e már valaki grafikus kijelzővel. Valamiért nem sikerül használni az xGLCD unit függvényeit. Köszönettel:gapati
A nyomógombok állapotát ne az interrupt-ban vizsgáld, hanem a fő programrészben, pergésmentesítéssel.
Egyébként nem látok porta.5 és porte.0 lábakra hivatkozást a kódodban.
Azt kell erteni ezen, hogy mikor valtozas van a porton, es bebillen az IT flag (RBIF), elobb irni, vagy olvasni kell a portot, hogy torolhesd a flagot. mikropascal-ban nem programozok, tehat igy peldat sem tudok prezentalni. Viszont esetleg valami C forrast tudok feltenni holnap. Abbol lathato lesz hogyan is van ez. Talaltam egy peldat a mikroE oldalon:
A hozzászólás módosítva: Szept 12, 2014
Sziasztok!
Én rögtön az elején törlöm, mivel ha fontos az időzítés, akkor így pontosan egyformák lesznek az idők. Aztán rutánna jöhet a többi tendő, persze az inerrupt a lehető legrövidebb legyen. (Bocs, hogy én nem a PORTB IT flag-re adok példát, de szerintem ott is mükszik.)
A billentyü lekérdezést a főprogramba végezd:
Üdv:gapati
Sziasztok!
Szeretnék functiot írni, azzal a céllal, hogy a program különböző helyén keletkező szöveget, kiírassak lcd-re.
fordításnál kiakad a fordító: 61 343 Complex type parameter must be passed by reference proba.mpas 61 304 Syntax error: Expected ")" but "n1" found proba.mpas 61 304 Syntax error: Expected ":" but "," found proba.mpas 61 337 Unknown type "n2" proba.mpas 61 304 Syntax error: Expected ";" but ":" found proba.mpas 61 304 Syntax error: Expected "begin" but "byte" found proba.mpas 61 373 Routine 'kiir' is missing implementation proba.mpas 61 304 Syntax error: Expected ";" but "byte" found proba.mpas 61 304 Syntax error: Expected "." but ")" found proba.mpas 0 102 Finished (with errors): 12 okt. 2014, 17:49:24 proba.mpppi Hogy lehet ezt megoldani? A hozzászólás módosítva: Okt 12, 2014
A stringet külön deklaráld változóként, ill, ha értéket nem ad vissza a funkció, akkor egy procedure is elegendő;
Hali!
Letöltöttem az ingyenes verziót, amiben 2k program korlát van. Mennyire optimalizál a fordítója?
Maximálisan. Csak programkorlát van benne, egyébként full verzió.
|
Bejelentkezés
Hirdetés |