Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ha rendes nyákra furatszerelten építed meg, nem lesz gond. De egy levegőben lógó tranzisztor bázissal még rádiót is lehet fogni.
Sziasztok!
Segítséget szeretnék kérni egy pic program megírásában. A feladat amit szeretnék megvalósítani vele a következő: Van egy infra fénysorompó. Az infra adót hajtom kb: 20kHz-es négyszögjellel, a vevőn kijön ez a jel és ezt vezetem rá a pic bemenetére. A pic feladata az lenne, ha ebből a négyszögjelből nem érkezik meg pár impulzus, (mert a fénysorompón nagyon gyorsan áthalad valami) akkor az egyik kimenetét bekapcsolja fél másodpercre. Erre kellene nekem egy kis program. Segítségeteket előre is köszönöm
Jó helyen jársz. Kezd a topik elejétől, megtalálsz minden infót hozzá!
Megcsináltam, de nem megy!
Mostmeg error 000h-t ír ki, kitörölve a picet 0000-kat ír ki. Megcsináltam a nyákot. a tápfesz 3,9 és 4,2V között ugrál
Akkor megint nem jó :no: Tápfeszültségnek, mint már itt kb 10 ezerszer elhangzott, 5V-nak kell lenni!
Megint nemjó a nyákod.
DE jó!
Ha a txd és a föld közé rakom a műszert világít a piros LED és stabilan megvan az 5V! De ha gépen van akkor így ingadozik
Sziasztok! Kertem arajanlatot egy nyak keszito cegtol a Potyo fele ICD2-hoz, de egyszerre csak 3 db-ot hajlandoak legyartani. 2770 Ft-db-os egysegaron, meretre vagva, furas nelkul. Elsore kicsit soknak tunik, de nem kell lakkozni meg megvilagitani meg maratni, szal keszen van. En hajlando is lennek beruhazni egyre, de azert harom nem kell. Erdekel vkit a masik ketto? Lui
Nem találod ki, hogy mi volt a hiba az égetővel!
Vettem 22pf-ot 0805-ös smd tokban, és (mint majdnem minden smd kerámia kondin) nem volt rajta felirat. A kondi viszont a műszer szerint 82nF volt . Az egész akkor esett le, amikor tárolószkóppal felvettem a data kimenő jelét . Most kiszedtem a két kondit, és tökéletesen éget ezek nélkül is. Bevallom ezt én sem találtam volna meg 10perc alatt!
Miért kellene ehhez PIC?
Miért pont 20 kHz... Szabványos infra vevőket lehet kapni 36-38-40 kHz-re is amik pont ezt tudják mint amit leírtál... Valamelyik topikba tettem fel egy komplett kapcsrajzot adót és vevőt is. Keresd meg ezt már rád bízom.
Hello mindenkinek!
Korabban mar kertem segitseget, masok szamara igen egyszeru problemara (SPI). Akkor sajnos nem ertem ra tovabbiakban ezzel foglalkozni. 16F877-el akarok kommunikalni egy MCP41010-es digi potival. Szeretnem hasznalni a beepitett SPI lehetoseget (azaz nem progibol atkuldeni az adatot ). Atneztem a doksi 9.1 fejezetet, de nem sikerult megtalalnem az elvi megoldast. Egy kis pelda progi jol jonne, hogy is van a regiszterek bellitasai, es az adatok ekuldese. CLK=RC3=18.PIN SDO=RC5=24.PIN CS= ??? hova kotom? Netan korabban mar valahol reszletesen ki volt fejtve ez a tema, elnezestkerek. ( de en nem talaltam meg ) Nagyon koszonom! Udv
CS lehet bármelyik kiválasztott láb.
Meg kell tudni az MCP41010 adatlapjából, hogy milyen Clock módban működik, és azt beállítani az SSPSTAT regiszterben. MASTER módot kell választani. A BF bit mutatja, hogy ha beérkezett egy bájt a pufferbe. Az SSPCON-ban be kell állítani a módot, ami illeszkedik az MCP41010-hez és be kell kapcsolni a modult az SSPEN bittel. Meg kell nézni a doksi 69. oldalán az SPI rajzát a sokat segít megérteni működését. A dolog pofon egyszerű, gyakorlatilag szinkronizált léptető regiszterek vannak sorba kötve. Ami az egyiken kimegy a másikba bemegy és viszont. A Küldéshez csak bele kell tenni egy bájtot a pufferbe, majd vizsgálni, hogy megérkezett e a másik eszköz által küldött bájt(BF bit). kb. ennyi. (Programot ne várj szerintem, inkább keress példákat a microchipnél.) Idézet: „CS= ??? hova kotom?” Természetes egy lábra. Chip Select mit mond neked?
Próbáltam TSOP17XX vevővel de nem működött, csak egyet villant. Megnéztem az adatlapját, minden fogadott adatcsomag közt kell lenni szünetnek. Nekem meg folyamatosan kell küldenem, ez benne a lényeg, és ha egy pillanatra is megszakad, akkor jelezzen. A 20kHz az nem számít lehet több, kevesebb.
Csinálsz egy "órakutyát" aminek a periódus ideje a 20KHz(vagy bármilyen általad választott optokapu vezérlő freki) periódus idejének felénél kicsit több, de kevesebb mint egy teljes periódusidő alatt jár le. Mikor beérkezik a 20KHz egyik fel, vagy lefutó éle(menet közben változtatni kell a bemenet élérzékenységét minden él után az ellenkezőjére), akkor ezt a számlálót törölni kell(pl. egy timer számlálója). Ha egy félperiódus kimarad, akkor a számláló nem lesz törölve, ami ezért megszakítást okoz(hat) ami indíthatja az impulzusodat. Természetesen az impulzusod újra indítható, vagy nem, attól függően mi kell neked, azaz hogyan írod meg hozzá a progit. Ennyi.
Sziasztok!
Korábban már felvetettem egy olyan problémát, hogy ha egy változó értékét megváltoztattam, akkor egyidőben megváltozott egy másik, teljesen független változóm értéke is. Akkor ideiglenesen sikerült a problémát kiküszöbölnöm egy újabb értékadással. Mégegyszer egy p18F4520-as prociról és MPLAB 7.51-ről van szó (C nyelven). Ma csak egy aprócska új eljárással akartam kiegészíteni a progit, és megint teljesen összekavarodott, egy újabb fontos változó értéke változott meg, látszólag indokolatlanul. Olyan, mintha már nem lenne elég memória és az újabb dolgok itt-ott átfednék egymás címét! Néztem futás közben a Program memoryt, ott látszólag minden rendben van. Mi lehet a baj? Tényleg kevés lehet a memória? Vagy máshol keressem a hibát? Kérlek segítsetek! Köszönettel: Zoli
Próbáld ki hogy az adott változót a rom-ban tárolod, igaz ilyenkor nem tudod változtatni, de ilyenkor a pic sem tudja változtatni....
pl: rom char a=10;
Ha esetleg mutatnál egy kódot, akkor lehet, hogy látnánk benne valami hibát. Mindenesetre próbáld a rosszul viselkedő változót volatile-ként deklarálni. Ekkor a fordító nem végez optimalizálást rajta.
Nem lehet a memória, mert a fordító azt észre kell vegye, hogy elfogyott! Én még mindig arra gondolok, hogy egy olyan megszakítás is lefut, amit nem szeretnél, vagy a megszakításkor nem jól van elmentve egy változó, vagy megszakításban is használod azt a változót amit kint is.
Hi!
Megvan!!!! Közben egy másik helyről is kaptam tippet és bejött. Az egyik műveletem "pontatlan" volt, így a char típusú változóm értékkészletén kívüli értéket kapott! Így a nagyobb értékkészlet miatt átcsúszott egy kis szemét a másik változóm címéhez! Ilyen hülyeséget! Azért köszi mindenkinek! Üdv.: Zoli
Mi volt ez a művelet, és milyen változókkal? Írd már be azt a kódrészletet.
Igen valami ilyesmi kellene, tudnál írni nekem egy ilyet? Neked gondolom nem nagy dolog megírni. Vagy esetleg valami példaprogramot? Még nem ismerem ennyire a PIC-et, csak meglévő progikat szoktam módosítgatni. Én valami olyanra gondoltam, hogy fut egy számláló, mondjuk minden ciklusban nől egyel, és van egy érték, amit ha elér, a kimenet bekapcsol. A bemenet felfutóéle pedig mindig nullázza, hogy ne tudja elérni az értéket. Valahogy úgy ahogy a WDT működik.
Lézer fénysorompó topik #99902. hsz.
(bocs linkelni nemtudom, nemtudom hogy kell)
Igen, ez jó, ezt megcsinálom, szerintem jó lesz, és olcsóbb mint a PIC. Köszi
Nem azért vagyunk itt, hogy másoknak írjunk programokat. Ha kell, akkor állj neki, és írd meg magadnak. Ahogy nézem, a megoldás menetével tisztában vagy.
szívemből szóltál...
(+azzal semmit sem lehet tanulni, ha más megcsinálja helyettünk)
Igen tisztában, én PLC-ket programozok. Ezt a fénysorompót pedig megcsinálom astabil multivibrátorral, mokus rajza alapján, remélem jó lesz. Köszönöm mindenkinek a segítséget.
|
Bejelentkezés
Hirdetés |