Fórum témák
» Több friss téma |
Azért a not found-t írja ki mert a programozó nincs csatlakoztatva.Azért írja ki a procit,
mert ha nem jelölöm ki,nem tudom megnyítani a Filét.
Emlékeim szerint a PICkit2 programja többször frissült, jelenleg a 2.61 verzió körül tart. Azt nem tudom, hogy milyen változások, hibajavítások voltak az utolsó, 7-8 éves verzióig. Valószínűleg a PK2DeviceFile.dat-ot sem frissítetted.
A képeiden láthatóprogramot az eredeti CD-ről telepítetted? Help/About megmondja, mi fut a gépen. Kezdd a Tools/Check Communication paranccsal, ahogy az utolsó képen javasolja a program.
Sziasztok!
Lenne néhány kérdésem. Mit jelent a "Brown-out reset"? Mert a fordító "Barna visszaállítás" értelmezésével nem vagyok előrébb. Valamint PIC 12F1840-nél mit lehet kezdeni a Stack túlcsordulásával? Mivel nem ismeri a POP utasítást, amivel törölni lehet az utolsó bejegyzést. Márpedig nagy szükségem lenne rá, mivel a megszakítási rutinból esetenként máshová kellene küldenem a programot, és ha betelik aStack, nyom egy resetet a PIC.
A brown out reset azt jelenti hogy ha a tápfesz egy megadott érték alá csökken akkor resetben teszi/tartja a procit. Bővebben el kell olvsani az adatlapot A stack-hoz nincs köze...
Miért kellene a stack-al trükközni, C-ben a megszakításból a feltételednek megfelelően meghívod a "esetenként máshová" függvényeidet, azután kilépsz a megszakításból.... ASM-ben meg összevissza ugrálhatsz... Persze olyat meg nagyon nem illik, hogy ugyanazt a programrészt a főprogramból is meg a megszakításból is hivogatjuk...
Milyen programnyelv?
A PIC12F1840 hardver sztek 16 szintű, de azzal nem lehet mit kezdeni. Az egymásba ágyazott szubrutinhívásokat, és a megszakításokat kell limitálni. A C és hasonló nyelvek szoftver szteket kezelnek, azzal lehetne mit kezdeni, viszont ahhoz nem értek.
A két kérdésem nem kapcsolódik össze.
ASM-ben programozok, és PIC18-nál gyakran alkalmazom, hogy várakozik a program egy ponton, és egy lejáró időzítő, vagy egyéb dolog kivált egy megszakítást ami teljesen máshová küldi a programot. Ilyenkor POP-al törlöm az utolsóstack bejegyzést, és nincs gond. Persze bonyolult bitkapcsolgatások és feltételvizygálatok garmadával ez megkerülhető, mint ahogy az általad említett C-s rutin teszi, de minek bonyolítsam, ha nem muszály. Ezért kérdem, van-e rá megoldás.
PIC12 esetén az elugrást a várakozásnál kell megoldani.
Működik a dolog úgy, ahogy én akartam.
Igaz, hogy POP parancs nincs a PIC12-ben, de olyan van, hogy a konfigurációs beállításokban az STVREN-t OFF-ba állítom. Ekkor ugyanis körbeforgó tárrá teszi STACK-ot. Azaz a legrégebbi bejegytést írja felűl, és nem reseteli a PIC-et. Ez pedig nekem jelen programnál tökéletesen megfelel.
Sziasztok!
Van egy problémám, tudnátok benne segíteni? Írtam egy programot, de nem működik az órám a GPS-el. Lefagy a kijelző. GPS nélkül kiírja a pontos időt, de egy nap alatt egy fél percet siet, ezért gondoltam, hogy teszek bele GPS-t, de nem működik. PIC16F690 van az órámban, és a RB5-ön van a GPS TX lába egy 10 kohmos ellenálláson keresztül. Gondolom a programmal van a hiba.
Mikor fagy le? Mindjárt az elején? A GIE bit 1-re állítása legyen az Init() utolsó lépése, a lépés után pedig nullázd az esetleges hibát, mert a GPS modul kb. azonnal szolgáltat adatot, amint áramot kap, az UART modul hibára futhat, miközben mással szöszöl a program:
Már az elején lefagy az óra. Hogy kell nulláznom a hibát? A CREN-nel nullázok? Arra gondoltam megnézem a GPS jelet a PICkittel hogy meg van-e a jel. Meg egy plusz ledet megszakítással, hogy legalább a led kapcsolható-e. Az init-et át fogom írni.
Minden vett karakter esetén a RCSTA egyszer olvasható. A kiolvasott adatból el kell dönteni, hogy sikeres volt a vétel vagy sem.
Sikeres vétel esetén az RCREG egyszer olvasható. Hibás vétel esetén a SREN törölni kell (törli a FERR és az OERR biteket), a vett karaktert ki kell olvasni, majd újra engedélyezni a modult a SREN 1 -re állításával. Mekkora a PIC tápfeszültsége? Mekkora a GPS modulé? Elég magas a jelszint az UART számára? A hozzászólás módosítva: Nov 2, 2022
SREN: aszinkron módban nem érdekes, valószínűleg összekeverted a CREN-nel.
Idézet: Ezt nem tudtam. Olvasás után nullázódik a tartalma? „Sikeres vétel esetén az RCREG egyszer olvasható.”
Egy 78L05-ös tranzisztort tettem egy 5V-os telefontöltő után. Ezt kapja a PIC és a GPS is, bár a GPS GND lábát egy BC337-es tranzisztor kollekotára kötöttem, hogy kapcsolható legyen. Azt kipróbáltam a GPS LED világít vagy sem. Először 1 kohm volt a GPS előtt (akkor ténylegesen lefagyott a PIC), de most 10 kohm van, és nem fagyott le egyből. Most meg fogom nézni, hogy tényleg lefagy a PIC, vagy csak a kijelzés nem jó.
Nekem úgy rémlik, hogy a 7805-ös feszstab legalább 7V-ot igényel a bemeneten... Ha 5V-ot kap, akkor a kimenetén akármi lehet.
Tettem az A5-re egy LED-et, és a B4-en lévő kapcsolóval tudom kapcsolgatni megszakítás-vezérelten, de amint kapcsolok a kapcsolóval, kialszanak LED-ek a kijelzőn(a GPS-t kivettem az órából). A GIE-t lettem az init aljára. A CREN-t hova tegyem?
Az interruptba ezt írtam:
Nem tudom melyik C-ben progizol...
75. sorban (RCIF && RCIF) az egyik nem inkább RCIE? 78. sorban "RCREG;"ez milyen "utasítás"? nem lehet hogy ez már kiolvassa a vett karakter, persze nem csinál vele semmit, de később már nem tudod kiolvasni...... A megszakítás rutinban illik kivenni a karaktert a sorosból és javasolt már itt eltenni a bufferba.
UART esetében az RCREG kiolvasása törli az RCIF bitet, itt viszont neked kell törölnöd az RABIF bitet, miután olvastál vagy írtál a PORTA regiszterbe.
5V-os telefontöltő után minek még egy 5V-os stabilizátor is???
Sima C. Az MPLAB XC8-al. Átírtam az első RCIF-et RCIE-re. Írtam a programkódban az RCREG elé "return" szót, de nem fordult le a program vele.
Valószínűleg félreértetted, amit pipi írt.
A megszakítás rutinban az RCREG tartalmát mindjárt másold át valamilyen változóba, különben elvész. Valahogy így:
Akkor is "lefagy" a program, ha nem érkezik karakter az UART modulba, ebben az esetben végtelen ideig fog várakozni a getch() rész. A GPS modul kimenete 3.3 V-os, elvileg elég a jelszint ahhoz, hogy az 5 V-ról járó PIC ezt már magasnak érzékelje.
Jó volt a megszakítás rutinban kitörölni a flag-et a RABIF=0-val, így már nem fagy le a program, de a kijelző még mindig lefagy az UART hívásakor. Egyébként az UART megszakításrutinban amikor beírtam, hogy RCIF=0, de semmi reakció, a program nem fagy le, mert tudom kapcsolgatni a segéd LED-et, de a kijelző vagy lefagy, vagy minden LED világít rajta.
Ezen én is gondolkoztam. Csak azért tettem bele a stabilizátort, mert olvastam, hogy a telefontöltő feszültsége ingadozik.
Az RCIF bit csak olvasható. Akkor nullázódik, automatikusan, ha olvasod az RCREG regisztert.
A stabilizátor csak túlfeszültség ellen véd, ha lecsökken a táp, csak ront a helyzeten.
Telefonadapter (töltő) esetén LDO (például HT7333, vagy valamelyik rokona segíthet, két-háromszáz mV feszültségveszteséggel.
Köszönöm. Igen elírtam: nem SREN hanem SPEN
Idézet: „The FERR bit can be forced clear by clearing the SPEN bit of the RCSTA register which resets the EUSART. Clearing the CREN bit of the RCSTA register does not affect the FERR bit. A framing error by itself does not generate an interrupt.” Idézet: „Ezt nem tudtam. Olvasás után nullázódik a tartalma?” Nem, de ha már kész lesz a következő karakter vétele a második kiolvasásra már azt az értéket adja. Ugyanígy az RCSTA hibabitjei az RCREG kiolvasása után már a következő karakter hibái szerinti értéket adhatja. A hozzászólás módosítva: Nov 3, 2022
A 78L05 stabilizátor helyes működéséhez a kimeneti feszültségnél minimum 3V -tal magasabb bemeneti szeszültség kell.
|
Bejelentkezés
Hirdetés |