Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1179 / 1320
(#) helektro válasza Attila86 hozzászólására (») Jún 17, 2014 /
 
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.
(#) Attila86 válasza ktamas66 hozzászólására (») Jún 17, 2014 /
 
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.
(#) sirály12 hozzászólása Jún 24, 2014 /
 
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.
(#) Saggitarius válasza sirály12 hozzászólására (») Jún 25, 2014 /
 
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?
(#) watt válasza sirály12 hozzászólására (») Jún 25, 2014 /
 
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
(#) sirály12 válasza Saggitarius hozzászólására (») Jún 25, 2014 /
 
A delay szerintem nem gond, a led ami be van kötve és a főprogramból kapcsolgatom, az jól megy. Az 1 mp is megvan.

A ccs nem támogatja a nagyobb piceket, nekem pedig többféle picre (pic18f,pic32mx, ...)is kellene ugyanazt a programot megírni. Ezért döntöttem az xc8 mellett.
(#) sirály12 válasza watt hozzászólására (») 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.
(#) HerrTopi hozzászólása Jún 26, 2014 /
 
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
(#) AZoli válasza HerrTopi hozzászólására (») 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.
(#) usane válasza HerrTopi hozzászólására (») Jún 26, 2014 /
 
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.
(#) HerrTopi válasza usane hozzászólására (») Jún 26, 2014 /
 
*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.
(#) matheattila válasza HerrTopi hozzászólására (») Jún 26, 2014 /
 
- 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.
(#) usane válasza HerrTopi hozzászólására (») Jún 26, 2014 /
 
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
(#) watt válasza HerrTopi hozzászólására (») Jún 26, 2014 / 1
 
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...
(#) HerrTopi válasza watt hozzászólására (») Jún 26, 2014 /
 
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!
(#) watt válasza HerrTopi hozzászólására (») Jún 27, 2014 /
 
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
(#) usane válasza HerrTopi hozzászólására (») 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.
(#) foldvarid hozzászólása Jún 27, 2014 /
 
Ü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.
(#) icserny válasza foldvarid hozzászólására (») Jún 27, 2014 / 1
 
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...)
(#) foldvarid válasza icserny hozzászólására (») Jún 27, 2014 /
 
Köszönöm a hasznos választ!
(#) sirály12 hozzászólása Jún 28, 2014 /
 
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:
  1. int16 pos;
  2.    int8 LA, UA;
  3.    pos = (_mul(y, 480)+x)/8;
  4.    LA = make8(pos, 0);
  5.    UA = make8(pos, 1);


XC8-ban ezzel próbálkozom:
  1. long pos, LA, UA;
  2.    pos = (( y * 480 ) + x ) / 8;
  3.    LA = ((pos >> 0) & 0xff);
  4.    UA = ((pos >> 8) & 0xff);


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?
(#) sirály12 válasza sirály12 hozzászólására (») Jún 28, 2014 /
 
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.
(#) The_Saint hozzászólása Júl 2, 2014 /
 
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
(#) potyo válasza The_Saint hozzászólására (») Júl 2, 2014 /
 
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.
(#) The_Saint válasza potyo hozzászólására (») Júl 2, 2014 /
 
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?
(#) potyo válasza The_Saint hozzászólására (») Júl 2, 2014 /
 
Ez inkább ennek a topiknak a témája
(#) icserny válasza The_Saint hozzászólására (») Júl 2, 2014 /
 
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?
(#) vicsys válasza icserny hozzászólására (») Júl 2, 2014 /
 
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.
(#) usane válasza icserny hozzászólására (») Júl 2, 2014 /
 
És még egy pár embert Vicsysen kívül, köztük engem is érdekel
(#) icserny válasza vicsys hozzászólására (») Júl 2, 2014 / 1
 
É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.
Következő: »»   1179 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem