Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nincs most előttem PIC18F25K80 leírás, de ha van ilyen benne, akkor nem engedélyezted a CCP4 és TMR4 modult a PMDx regiszterekben.
Köszönöm a segítséget, megtaláltam a hiba okát. A CCP modul regiszterei (CCP5CON, stb.) másik bankban vannak, lapot kellett csak váltani.
Segítséget kérnék.
Eddig ccs-ben programoztam leginkább, most szeretnék áttérni xc8-ra. De nem megy zökkenőmentesen a dolog. Valaki megnézné a két linkelt kódot? Az egyik ccs-ben a másik xc8-ban van. A ccs tökéletesen működik, a kijelző megy, az xc8-as kód nem jó, és nem tudok rájönni mi a baja. A program fut az xc8-as kódban is, mert a led villog ahogy kell, de a kijelzőn semmi nem jelenik meg. A programokat megvágtam a lényegtelen részeket az átláthatóság kedvéért kitöröltem. Előre is köszönöm, ha segít valaki.
C-ben kezdo vagyok, XC8-ban meg nincs is gyakorlatom, de az nem lehet gond, hogy pl a delay-nel a CCS compilerben megszokott kettos alahuzassal kezdted? (ha jol tudom jopar dolog, baratsagosabb CCS-ben, pl timer setup, viszont nem ANSI C kompatibilis)
Ettol fuggetlenul, mi volt szamodra az ok valtani CCS-rol XC8-ra?
Ellenőrizd le szimulációban(állítsd be az oszci értékét pontosan!), hogy a várakozások megfelelőek-e!
Ellenőrizd le azt is, hogy jó frekin ketyeg a PIC(konfiguráció)! A hozzászólás módosítva: Jún 25, 2014
A ledet figyelve, az 1 másodperc megvan, tehát pontos.
Elvileg a konfig jó, 20Mhz-es quartz-al megy így 48Mhz lesz. #pragma config PLLDIV = 5 // need 5 for 20MHz xtal #pragma config CPUDIV = OSC1_PLL2 // CPU Clock = 96 MHz/2 = 48 MHz #pragma config FOSC = HSPLL_HS // High Speed Crystal with PLL enabled #define _XTAL_FREQ 48000000 De igazad van, még nem próbáltam szimulátorban. Megnézem.
Sziasztok!
Nem vagyok biztos benne, hogy ez megugorja a haladó topic szintjét, de íme a problémám, ítéljétek meg Ti! Építettem egy motorvezérlő kapcsolást és hozzá írtam programot egy 18f14k50-es szörnyetegre. A lényeg az, hogy egy négyszög jelből, amit egy gyári távirányítótól kapok, csinálok szoftveresen pwm-et és hajtom a motort. Van egy másik jelem is, ezzel egy másik motort hajtok, hasonló módon. A problémám az, hogy amint rákapcsolom a motort a tápra elszáll a pic. Általában újra indul, de mindenképpen megkergül. Ha ellenálláson keresztül teszem ezt, akkor egy bizonyos ellenállás felett nem jelentkezik a probléma, de akkor gyakorlatilag lépésben megy csak a motor, ami nem opció.(4.7V-nál jobban nem húzza le a tápot a motor) pár technikai adat: -MCLR letitva -nem használt lábak outputon -BOR letiltva -WDT letiltva -tápon 1-1 470n-s kondi -4db AA akkuról kapja a tápot, kb 5V-ot Olvastam céltopicot az ügyben, 0 sikerrel. Ha valakinek van ötlete, azt szívesen venném, de én már kezdek letenni a dologról, (holott nagyon fontos lenne :\ ) mivel olvastam olyat is, hogy a pic, de legalábbis a 18-as család nem elég stabil induktív fogyasztót megenni. Ha ez igaz és nem csak én vagyok rettentő béna, akkor javasoljatok kérlek valami alternatív mikrovezérlőt, ami stabil akkor is, ha 2-3 motor megy a tápjáról! (pic előnyben, mert azt tudom programozni, de ha nem opció, akkor mindegy, csak stabil legyen) Köszönöm előre is minden kedves, segítőkész fórumtársamnak a válaszokat! Szép napot! A hozzászólás módosítva: Jún 26, 2014
Szia!
Nem induktív terheléssel (pl. izzó) jól működik? Egy kapcsolási rajz, és egy fénykép az áramkörről sokat segítene.
Motor kivezetései között (mint induktív fogyasztóknál szokás) védődióda?
A motort közvetlenül a PIC-el hajtod, vagy ésszel és van meghajtó tranyó is közben? Jó lenne kicsit többet tudni a kapcsolásról, mert elég kevés infót adtál meg. Más is csinált már PIC-el motorvezérlést, nem lehetetlen.
*válasz AZoli-nak is.
-Nem induktív fogyasztóval működik -Nincs védődióda -Nem a pic-kel hajtom meg a motort egyelőre, csak ugyanarra a tápra kötöm diretben a motort, így is szétcseszi. -Kapcsolás szerintem nem releváns, mert kb nincs. Van egy bemenet, ami egy négyszög jel. Azt feldolgozza a pic, aztán egy kimenetre kinyomja amit kimatekozott, jellemzően egy pwm jelet. Ha nincs motor rákötve a tápra direktben, akkor szkóppal ki tudom mérni a pwm-et, kiválóan működik. Ha a PWM-mel kapcsolok egy tranyót, akkor kis zavarral ugyan, de meghajt egy motort. Viszont ha simán, a pictől függetlenül rákötök a tápra egy motort, akkor meghülyül. Sőőt, akkor is, ha egy tőle független tápra, de hozzá közel.
- a PIC reset lába fel van kötve tápra 10k ellenállással?
- a (PIC) táplábai között ott vannak a 100n-s kondik? - elég stabil a (PIC) tápja? - a nem használt lábakat állítsd kimenetre és állíts be rajtuk valamilyen biztos logikai szintet.
1. Motor 2 kivezetése közé dióda. Mint tudjuk minden tekercs visszarúg.
2. Pic tápjára szűrés. Lehetőleg LC-szűrő. Esetleg tranziens szupresszor dióda is. Ezek után lehet tovább bocolgatni, de ennyi szűrés nem árt. És amiket matheattila irt az első 2 pontban azokat is vedd hozza. A hozzászólás módosítva: Jún 26, 2014
Nem akarok ünneprontó lenni, csak megjegyzem, hogy ez a kérdés nem hogy nem haladó, de nem is PIC kérdés. Ez elektronikai alapok kérdés, áramkörtevezési kérdés. A PIC csak e felett lenne kérdés, ha lenne...
Ezzel vitatkoznék, ugyanis konkrétan egy pic mikrovezérlőt zavar a motor, és oké, hogy nem volt tökéletes az áramköröm, de úgy vélem, hogy nem csak áramkör tervezési kérdés.
Másrészről pedig azért haladóba írtam, mert kezdő topicban jóeséllyel végig kellene 4-5 hsz-en keresztül menni azon, hogy stabil-e a táp, hogy van-e MCLR és, hogy nem-e elfelejtettem felprogramozni a pic-et használat előtt... Gondoltam ezt megspórolom, de akkor elnézést kérek Tőled, legközelebb jobban megválasztom a topicot. Egyébként most úgy tűnik, hogy az 500ft-os kínai motor az oka. Kicseréltem egy régi magnóotorra és semmi tünetet nem produkál. Köszi a segítséget srácok!
Vitatkozni lehet, csak nincs igazad... Az áramköröd vacak, ha bármi bezavarja. 60A-s motort is vezérlek...
A hozzászólás módosítva: Jún 27, 2014
Egyetértek wattal, nem a motor hibája, és mindíg meg fogják kérdezni a tápot és a MCLR-t ha nem adsz kellő információt.Nem tudhatjuk mennyire vagy otthon a témában, és még ha nagyon akkor is a profik is szoktak hibázni.
Üdvözlök mindenkit.
Nem vagyok nagy fórumlakó, de végső elkeseredésemben hozzátok fordulok. Már a létező összes angol nyelvű tutorialt átnéztem... Lenne egy feladat amit meg kellene oldanom. Hőmérséklet adatokat kellene két PIC között küldözgetnem aszinkron soros porton keresztül. Fentről lefelé mennek a vezérlés utasítások, stb, lentről felfelé meg az aktuális környezeti értékek, amiket mérek. Kérdés tehát: Létezik olyan megoldás amivel megoldható az oda-vissza kommunikáció úgy hogy közben mind a két oldal futtatja a saját programját? Valaki tudna nekem tippet adni, hogy hogy érdemes kezelni egy ilyen kommunikációt. (lehetőleg megszakításban, de figyelnem kell arra, hogy a lenti egységben rengeteg periféria megszakítás lesz(CCP, TIMER1, AD, stb)) Köszönöm.
Már a létező összes angol nyelvű tutorialt átnéztem...
Akkor bizonyára ezt is: UBW USART Tx/Rx Interrupt code for review/inclusion Én ennek alapján csináltam meg az UART kezelést a PICula projekt-ben. Az ne zavarjon, hogy én nem két PIC, hanem a PIC és a számítógép között kommunikálok égy USB-UART/TTL átalakítón keresztül. (A forráskódok a letölthető code_examples.zip csomagban vannak...)
A kijelző életre kelt, de még nem tökéletes.
A pozicionálást a kijelzőn érinti ez a hiba. CCS-ben egy _mul és make8 függvénnyel számoltam dolgokat, ami XC8-ban természetesen nincs. CCS-ben:
XC8-ban ezzel próbálkozom:
Elvileg a két kód azonos, de mégsem jó. A kijelzőn a 0,8,16,stb oszlopok feketék maradnak. Mit rontok el?
Közben rájöttem Én voltam a hülye. A fenti kód jól működik. Egy elírás volt a kód másik részében.
Már csak a szöveg kiírásával bajlódom, minden páros sor nem látható valamiért a szövegben.
Sziasztok!
Előre is bocs, ha rossz helyre írok, de a kérdésemben PIC is szerepel Szóval adott egy PIC ami sorosan kiküld egy számot. Ezt a számot kellene egy egyre bővülő listában tárolni. A lista egy webszerveren van... messze a PIC-től. Van erre valakinek elképzelése, hogy hogyan kell ilyet csinálni? Vagy AP vagy mobilnet lehetőség van.... Bármi érdekel amit tudtok mondani! Üdv TheSaint
Webszerveren adatbázisszervert is futtatni, és adatbázisban tárolni. Pl. MySQL/MariaDB szinte mindenhol van. Ha épp nincs, akkor meg SQLite adatbázis, ahhoz nem kell szerver, csak egy fájl az egész. Végső megoldás az egyszerű szöveges fájlban tárolás, de én minimum az SQLite-ot javasolnám.
Szia! Hát igen, egy file az egész, aztán majd egy másik PHP szétválogatja. De hogy kerül a PIC soros kimenetről egy másik országban lévő szerverre, bele abba bizonyos file-ba?
Van olyan PIC, ami Ethernet vezérlővel is rendelkezik, hálózatra kapcsolódhat.
Van olyan Ethernet vezérlő, amelyet a PIC (na, nem a legkisebb) SPI-n vagy soros porton vezérlni tud. Van olyan olcsó router (pl. TP-Link WR703N), amelyben a firmware lecserélhető OpenWRT oprendszerre, s a PIC soros porton vagy USB-n csatlakozhat hozzá, a routeren meg egy szkript átveszi és továbbítja az adatot. Tovább is van, mondjam még?
Igen, mert engem nagyon érdekelne. Ugye nem gond? Végül is jó lenne hallani (olvasni) egy guru véleményét, hogy egy ilyen fapados feladatot, hogyan lehet könnyen, gyorsan, egyszerűen megoldani. Előre is köszi a fáradságot.
És még egy pár embert Vicsysen kívül, köztük engem is érdekel
Én nem vagyok sem guru, sem a téma szakértője, ezért a lehető legegyszerűbb (értsd: a legkevesebb szellemi erőfeszítést) kívánó megoldást valósítottam meg.
TP-Link WR703N router 20$ körüli áron beszerezhető az E-bay vagy az Aliexpress kínálatában. Szép, kínai nyelvű grafikus felülete van, már ez az élmány megéri a pénzt! Itt olvasható egy útmutató az OpenWRT telepítéséhez. Telepíteni kell az USB-UART konverterek használatához szükséges kernel modulokat: (pl. kmod-usb-serial-acm, kmod-usb-serial-ftdi, kmod-usb-serial-pl2303, kmod-usb-serial-cp2102 stb.). A csomagkezelő neve opkg, és "opkg update" után így megy a telepítés: opkg install kmod-usb-serial-acm ésatöbbi. Vesz az ember egy USB-UART átalakítót (pl. Nokia Ca-42 kábel, FTDI-TTL kábel, vagy PL2303 kábel, stb). Ezzel a router a megfelelő kernel modul telepítése után tud kommunikálni. Vagy a /dev/ttyUSB0 vagy a /dev/ttyACM0 név alatt fog megjelenni az eszköz. Hozzákötjük a PIC UART kimenetét (némi előrelátást igényel, hogy a PIC jelszintjéhez illeszkedő USB-UART/TTL átalakítót szerezzünk be (5V vagy 3,3V, ízlés szerint). A routeren OpenWRT alatt létrehozunk egy Lua szkriptet, ami fogadja soros porton az adatot és továbbítja a szervernek. Webszerver POST vagy GET metódussal környékezhető meg. Én egy ThingSpeak klienst dobtam össze, ott a POST metódus az elegánsabb megoldás. Az általam használt szkript soronként két adatot (relatív páratartalom és hőmérséklet) fogad és továbbít. Mivel nem PIC-kel, hanem MSP430-cal építettem meg a kapcsolást, ebben a topikban olvasható a részletes(ebb) leírása. Összegezve: ez a megoldás hardveresen a szükségesnél bonyolultabb, ugyanakkor minimális fejlesztéssel megoldható vele a feladat, s különösebben drágának sem mondható. Hadveresen egyszerűbb egy Ethernet vezérlővel ellátott PIC (erről Watt fórumtársunk tudna többet mondani), de ott vért izzad az ember, mire a Microchip TCP/IP stack segítségével összehozza a programot. |
Bejelentkezés
Hirdetés |