Fórum témák
» Több friss téma |
Miért nincs értelme mellé a PIC-nek? Igazából mindkettő megoldás érdekelne, a wifis és a lan-os is.
Egy ESP modul önmagában is képes megoldani ezt a feladatot, nem kell hozzá PIC.
Bővebben: Link
Igen, ezen gondolkodtam már, hgoy a PIC megfelelő-e. Előtte Ardiuno és a Raspberry is szóba jött. De Raspberry drága és sok funkciót nem használ. Arduino is jó lehet, viszont ethernet, wifi és rfid modullal eddig sokkal drágábbnak tűnt, mint PIC-kel megvalósítva.
Pl: NodeMcu ? ... 2 Euro ... Arduino IDE alól programozható ... rfid modult ugyan úgy rá lehet kötni mint a PIC-re, és rajta van a wifi is ...
Köszönöm, ezzel még nem találkoztam egyáltalán. Ami esetleg érdekelne vele kapcsolatban, hogy vn saját memóriája, ahova fix adatokat kiírhatok és megmarad áramszünet esetén?
Én még nem használtam ... de hirtelen ezt találtam: Bővebben: Link
De ezt már az Arduino, vagy az ESP8266 wifi modul topikban kéne folytatni... A hozzászólás módosítva: Okt 7, 2020
Az ESP01 modul memóriája cserélhetö akár 32MB flash memóriára.
Ha csak adatgyűjtés a cél, még Basic is fellelhető.
Igen, eléggé elmentünk a témától, elolvasom a linkeket és elképzelhető, hogy ejtem a pic-et. Illetve átmegyek a megfelelő topicba.
A LAN-os megoldás lehet PIC plusz ethernet chip, pl amit írtam enc28j60, vagy más. Ehhez a linkelt MLA-ban találsz TCP/IP lib-et. Ugyanezen chipek mehetnek PIC helyett akár arduinoval vagy ahogy írtad raspberryvel, vagy valamilyen ARM-el is. A WiFi-s megoldás lehet amit linkeltél is, PIC plusz ESP, de ha nem ragaszkodsz a PIC-hez az ESP elég sokmindent tud kezelni a WiFin kívül is egymagában. Ha meg kevés lenne az ESP8266 (kezdésnek nem valószínű) akkor ott az ESP32. Ha NodeMCU-t veszel(mindkettőből van NodeMCU verzió) akkor nem kell semmi átalakító csak egy mikroUSB kábel a programozáshoz. Ami a nem felejtő memóriát illeti az minden mikrovezérlőben van, lévén, hogy a programmemória is az. Ha más nincs is rajta abból lehet használni mindig. Manapság viszont már minden mikrovezérlőn található külön erre a célra kialakított memória rész. Általában nem EEPROM hanem FLASH. Ahogy neduddgi írta az ESP modulon cserélhető is egy kis forrasztással, de általában felesleges. Valamint partícionálható is. A sima modulokat nem tudom fejből, a NodeMCU-n általában 4GB flash van.
Természetesen van, és pl. NodeMCU modult Lua vagy microPython nyelven programozva fájlokat is létrehozhatsz illetve beolvashatsz.
Sziasztok!
A 12F675-nek szeretném letiltani az analóg lábait. Ehhez elég az ANSEL regiszter alsó 3 bitjét 0-ra állítani, vagy kell még valamit az ADCON0 regiszterbe is írni? A többi lábat amit nem használok magas vagy alacsony szintre állítsam? Előre is köszi a segítséget!
ANSEL alsó négy bitje érdekes. Az ANSEL összes bitje lehet nulla. Az ADCON regiszter induláskor nullákkal van feltöltve, azzal nem kell foglalkoznod.
OK. Köszönöm. Még egy dolgot nem értek.
A CONFIG-ban belső oszcillátorra állítottam, és az OSCCAL beállt 10000000 -ra. Azt mondja az adatlap hogy ez egy középfrekvencia, és még hogy belső oszcillátor esetén fix 4MHz a freki. Van még két lehetőség a maximum és a minimum frekvencia. Ez mennyi és mit jelent pontosan? Vagy ezt csak külső oszcillátor esetén lehet használni?
Az OSCCAL segítségével a belső órajelet lehet kalibrálni 4 MHz-re, ezt meg lehet csinálni pl. a PICKit2-vel is. Ez csak a belső órajelre vonatkozik, a külsőt, legyen az bármilyen típusú, nem tudja befolyásolni. Állítólag az OSCTUNE regiszterrel kb. ±10 %-os értéket lehet elérni, OSCCAL regiszterhez nem találtam adatot. Éppenséggel le lehet mérni. Fix kitöltésű PWM, max. és min. OSCCAL értékekkel frekvenciamérés, aztán majd kisül belőle valami.
Én úgy tudom (lehet, hogy hibásan), az OSCCAL-t igazábol nem illik piszkálni. Kalibrálod és kész, rábólintasz, hogy innentől a belső órajel 4 MHz-es. Más szerepe van, mint az OSCTUNE regiszternek, már amelyik kontrollerben van ilyen.
Értem, köszi. Csak furcsa volt hogy nincs konkrétan meghatározva a frekvencia mint a többi PIC-nél. Azért annyira nem harcolok hogy lemérjem a max. min. OSCCAL értékeket, csak nem értettem a helyzetet, de elfogadom hogy a belsőoszcillátor fix 4MHz, és nem is piszkálom. Itt nincs OSCTUNE.
Az időzítéssel kapcsolatban is van amit nem értek, de előtte azért átnézem mégegyszer hátha megértem . Ha nem akkor jövök.
Köszönöm a sok információt. Megnézem mindegyik lehetőséget és a számomra legmegfelelőbbel megpróbálkozom. Valószínűleg fogok még kérdezni az adott topicban.
Halvány emlékeim szerint az analóg komparátort is le kell tiltani (CMCON = 7), ha pusztán digitális ki/bemenetek kellenek. Bővebben: Link
Próbálom a Timer1-et beállítani de nem teljesen tiszta minden. Bemásolom az eddigi kódom, majd nézzétek meg hogy jó-e:
Csak magamnak részleteztem ennyire tanulás céljából. Tudom hogy sokkal egyszerűbben is meg lehet oldani, de nekem ez így most átláthatóbb mintha binárisan adtam volna meg a T1CON-t. Az egyik kérdésem az lenne, hogy a Timer1 beállításai így jók-e? A másik hogy ha megszakítás érkezik akkor a PIR1 - TMR1IF bitet kell ellenőrizni? Vagyis nem non-stop pörgetek egy while-t, hanem ha megszakítás történik akkor a proci "szól" a programnak és lefut egy szubrutin ahol ellenőrzöm a TMR1IF bitet?
Eddig jónak tűnik. A megszakítást nem figyelni kell non-stop, különben másra nem jut idő, hanem egy szubrutint kell írni rá, ami lefut, ha a megszakítás bekövetkezik. Egy jó ismertetőt találsz pl. itt: How to use pic microcontroller timers as a interrupt. Kb. mindegy, milyen kontrollerre íródtak a példák, legfeljebb át kell forgatni adott PIC-re a regiszterek neveit, bitjeit. A megszakításban kell ellenőrizni a bitet hogy tudd, honnan jött a megszakítás. Kb. az összes megszakítás így működik, pepitában.
A "proci szól a programnak" kicsit faramuci kifejezés, mert a processzor hajtja végre a programba folgalt lépéseket.
Értem, köszönöm. A linket olvasgattam és az lenne a kérdésem, hogy az interrupt()-ot mi hívja meg? Mert a main() -ben nincs függvényhívás.
Azt a programrészletet a kontroller végrehajta megszakítás esetén "automatikusan", de hogy pontosan mi zajlik a háttérben, nem tudom, ennyire nem merültem bele a témába.
Ok. Köszi. Akkor nem kell semmi spéci "valami beágyazott" deklaráció? Csak simán írok egy interrupt függvényt és a proci automatikusan végrehajtja?
Szia!
Idézet: „Akkor nem kell semmi spéci "valami beágyazott" deklaráció?” Az engedélyezett (--> engedélyezni kell!) megszakítás(ok) az esemény bekövetkeztekor a program végrehajtását egy előre meghatározott memóriacímre (PIC15F675-nél ez a 4-es memória!) irányítják át és az ott talált programot kezdik el futtatni egészen a RETFIE utasításig, aminek a hatására visszatérnek a megszakítás bekövetkeztekor következő végrehajtandó utasításra, azaz a korábbi helyen folytatódik a program. Fontos azonban, hogy a megszakítás során ugyanazokat a regisztereket és parancsokat használod, mint a főprogramban ( azaz a mikrokontroller regisztereit és utasításkészletét!), ezért általában meg fognak változni bizonyos regisztereknek vagy biteknek az értéke ! Ha olyan változik meg, amit a főprogramodban is használsz, akkor a megszakításba történő belépésnél ezeket először el kell mentened, valamint a megszakítás végén a mentésből vissza kell töltened,! A megszakítás abban különbözik alapvetően a szubrutintól, hogy nem tudod, hogy a főprogram melyik részén következik be, így az általa megváltoztatott változók a további működést befolyásolják, míg a szubrutint Te hívod adott pillanatban meg és így tudod a hatásait ! Nem tudom milyen C fordítót használsz, de a 4-es megszakításhoz tartozó memóriahelyet ismerik, csak tudatni kell velük, hogy a függvény, amit írsz, az megszakításhoz tartozik, valamint a 12F675 csak egyszintű megszakítást ismer, így ha több forrás is kiválthat megszakítást, akkor a megszakításfüggvény (Interrupt Service Routine --> ISR ) elején kell eldöntened a megfelelő bitek segítségével, hogy honnan érkezett a kérés! szerk.: a fordítód megszakításra vonatkozó leírását, példáit nézd át! Remélem érthető volt... !? A hozzászólás módosítva: Okt 8, 2020
Szia!
Bocsi a késői válaszért de most jutottam gépközelbe. Ezt azért még egy kicsit tanulgatnom kell, de amit írtál azért nagyjából értem, köszönöm. Átnéznem még az adatlapját de már kezd tisztulni a dolog. MPLABX-et használok és XC8 a fordító. Köszi mégegyszer.
Üdv Mindenkinek!
Van egy MAX7219 7 seg kijelzőm ami mutatja az adó által küldött kinti hőmérsékletet. Szeretnék a kijelzőre küldeni egy "fok" és egy nagy"C" karaktert is a hőmérséklet után, de nem tudom hogy kell generálni. Az előre programozott karakterek helyére is lehetne( H,E,L,P...), ezek nem kellenek. Most ezt a programot használom:Bővebben: Link Előre is köszi. Idézet: „Szeretnék a kijelzőre küldeni egy "fok" és egy nagy"C" karaktert is a hőmérséklet után, de nem tudom hogy kell generálni.” Sehogy A kódolás az IC -ben fixen be van építve.
Ha nem akarod szétszedni akkor sehogy, ahogy Hp41C is írta.
Hát, köszi. Akkor nem marad más megoldás, teszek rá 6 db külön kijelzőt( az első a minusz jelnek kell). Az utolsó 2-re küldök 2 "8"-ast, a felesleges lábakat levágom.
Most találtam:Bővebben: Link A hozzászólás módosítva: Okt 13, 2020
Bármit meg tud jeleníteni, csak a Decode müzemmódot kell kikapcsolni, így a szegmensek bitenként vezérelhetőek.
|
Bejelentkezés
Hirdetés |