Fórum témák
» Több friss téma |
Szia!
Bár bagatelnek tűnik, de a PIC táp lábán közvetlenül van 100nF kondi? üdv.:Foxi A hozzászólás módosítva: Nov 12, 2020
Milyen tápról járatod, amikor nem a PICkit -ről jár? A táp szűrése megfelelő? BOR le van tiltva?
A MCLR lábról kösd le a kondenzátort - egy próbát megér. A hozzászólás módosítva: Nov 12, 2020
Ahogy írták tápszűrés lesz valószínűleg, plusz a reset gombra minek a kondi? Az is bezavarhat.
Szia, Köszönöm tippet, a BOR volt ON-ba állítva, ez okozta a problémát.
Ez egyben azt is jelenti, hogy vagy nem jól van beállítva a BOR vagy nagyon instabil a tápfeszültség.
Sziasztok! Ismét felakadtam. Egy kis programot hoztam össze. Működik, ha a 0-ás porton letelik az időzítés, akkor az 1-es porton világít a LED. Azt szeretném hogy az 1-es portra kötött LED villogjon. Már egy hete próbálkozok, de nem sikerül. Előre is nagyon köszönöm a segítséget!
Akkor a teszted szerint a külső táp a rossz/bizonytalan.
Elnézést, rosszul írtam! A PORT 0-ás bitjén letelik az időzítés, akkor az 1-es bitje magas szinten van, azt szeretném ha változó szintű /villogó/ jel jönne ki. Köszönettel!
A kondi is okozhatja a MCLR-en. Ha hamarabb feláll a PIC mint az feltöltődik akkor a feltöltődésíg lehet, hogy olyan alacsony a feszültég a lábon ami már a BOR alatt van.
Hali!
Csak a GP1-en lévő LED-nek kellene villognia? Mert jelen esetben, amíg nyomod a gombot, addig a GP0-n lévő LED 2mp-ig világít, majd a GP1-en lévő LED-re kapcsol, ami 0.5mp-ig világít. Ezután kezdődik előröl. Nem nagyon ismerem a MikroC-t, de a Microchip XC8-nál, ha nem/nem jól adod meg a frekit amin jár a PIC (pl.: #define _XTAL_FREQ 8000000), akkor a delay_ms funkció nem fog jól működni.
Sziasztok!
Szeretném megkérdezni, hogy PIC16F887 -nél az RA2 és RA3 portokról sehogyan nem lehett megszakítást kezdeményezni?
Csak a komparátor modulon keresztül. RA2 - CN2IN+, RA3 - CN1IN+
Szia eSDi! Köszi az infót! Jelenleg úgy működik, hogy gomb nyomásra indul, ha a GP0-án letelik az időzítés, akkor a GP1-en jön ki magas szint addig míg újra nem indítom. Igaz, hogy csak Proteusban próbáltam. Minden jót!
Szia!
Van még egy megoldás. Mivel a timer0-val rendszeres megszakítást generálok más célra, bizonyos rövid időközönként figyelem a két port állapotát és kiértékelés után egy másik portot vezérlek, mintha megszakítás történt volna.
Szia!
Idézet: „Mivel a timer0-val rendszeres megszakítást generálok más célra, bizonyos rövid időközönként figyelem a két port állapotát és kiértékelés után egy másik portot vezérlek, mintha megszakítás történt volna.” Ez nem megszakítás ( a kérdésed arra irányult, nem alternatív megoldást kerestél!), mert a megszakításnak az a lényege, hogy valamilyen esemény bekövetkeztekor AUTOMATIKUSAN belép egy programhelyre, nem kell egyéb, előzetesen elvégzett utasítás! Az más kérdés, hogy Te így is megoldod a feladatot, de ezt ne nevezzük megszakításnak ! A hozzászólás módosítva: Nov 16, 2020
Szia!
Igazad van! Erre utaltam a hozzászólás végén Idézet: „...mintha megszakítás történt volna.””
Sziasztok!
Ismét van egy kérdésem. LCD-re íratnék locsolással kapcsolatos kiíratni valókat itt a kód és kapott lcd kép
Vagyis a felső sor végén az "1" előtt van egy áltatalam nem kívánt karakter meg a legvégén is. A hozzászólás módosítva: Nov 20, 2020
Akkor csinál ilyet a kijelző, amikor vagy túl hosszúak a vezetékek, a nem használt bemenetek nincsenek GND-re kötve, a tápfeszültség bizonytalan vagy az időzítések határértéken vannak valahol. Nálad az első három valamelyike/kombinációja a valószínűbb.
A hozzászólás módosítva: Nov 20, 2020
Milyen programnyelvet használsz?
Az LCD_out() rendesen kiírja a szöveget, ha az konstans (program memóriában tárolt). Ugyan ezt az LCD_out() -ot használod a txt1[] kiíratására is (ram -ban tárolt adat). Az első sor kiíratása csak 18 karaktert ír ki, a 19. és a 20. -at nem írja felül.
Ha valamilyen C nyelv: A csatornaszám karakterekre bontása után hiányzik a string lezárása: txt1[2] = 0; A hozzászólás módosítva: Nov 20, 2020
Szia!
A nem használt bemenetek földelve vannak, a tápfesz stabilizátorról megy a pic tápfesz lábain 100nF kondenzátorok. A hosszú vezetékek meg relatív. Mint látható az alapkiírásoknál nincs gond, csak a változások kiírásánál.
Sziasztok!
A A PPSLOCKED mit jelent pontosan és mire jó? Nagyjából értem a jelentését de nem vagyok benne biztos és nem értem mire használható. Előre is köszi a segítséget!
A programnyelv mikroc. A változó dekralálásakor előzőleg a txt1[2];
Most úgy csináltam, hogy txt1[]=" ";, vagyis értéket kapott, a csatornaszám kiírítása után elmaradt a nem kért karakter. De az elején még ott van A hozzászólás módosítva: Nov 20, 2020
Ebben a sorban mind a 24 karakter helyére írj, a végén írj betűközöket.
Mit is csinál a
sor. Fogja a betűköz kódját (0x20) és beírja a txt1 kezdőcímére: txt1[0] = 0x20; Mivel a karakterlánc végére ért a txt1 következő helyére beírja a string végjelet: txt1[1] = 0x00;
Ezek a sorok módosítják a txt1[0] és txt1[1] értékét, azaz felülírtad a string végjelet. Ezért kellene a deklarációt
-ra változtatni, a számolás során a txt1[2] = 0x00; sort beszúrni a LCD_out(1,21,txt1); sor elé. Most már csak azt kéne tudni, mennyi is a csat értéke. Ha csat/10+48 = 0x5E = 94 és csat%10 + 48 = 49, akkor csat csak 461 lehet... Debugger szimulátor módban, töréspont beállítása a számolás első sorára, a program indítása. Amikor megáll a törésponton, a txt1 felvétele a Watch ablakba. Lépésenként vizsgálható hogyan is alakul az érték a txt1 byte -jaiban... A hozzászólás módosítva: Nov 20, 2020
A kritikus részlet most így hibátlan:
vagyis a csatornaszámot karakterenként íratom ki. Mivel tudom, hogy a csatornaszám nem foglalhat több helyet, mint kettő helyiérték azaz 16-ot, így elegendő két elemű tömböt lefoglalnom. A hozzászólás módosítva: Nov 20, 2020
Nem is kell hozzá a tömb:
Sziasztok!
Szeretnék megszakítást kiváltani pic16f887 RB1 portról, nyomógob használatával. A nyomógomb az RB1 lábat h-ról l-ba viszi. Ehhez milyen regisztereket kell beállítani? Addig eljutottam, hogy az IOCB regiszter 1-es bitjét 1 be kell állítani és nyilván a TRISB-RB1-et 1 be, Van még valami?
Ezeket a biteket kell bekapcsolni: INTCON/GIE, INTCON/RBIE, IOCB/IOCB1. Az RB1-es lábra csak IOC megszakítást lehet beállítani, tehát mind L->H, mind H->L átmenetkor keletkezni fog megszakítás.
A megszakítás-kezelésben kiolvasod az RB1 állapotát (PORTB regiszter) és ha az 0, végrehajtod a feladatot. Ha 1, akkor csak az INTCON/RBIF bitet törlöd a feladat kihagyásával. |
Bejelentkezés
Hirdetés |