Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1036 / 1203
(#) mark.budai hozzászólása Júl 6, 2018 /
 
Sziasztok! Segítséget kell kérnem, mert már teljesen tanácstalan vagyok. Egy ideje próbálkozom rotary encoderrel MikroC-ben. Próbáltam már sima bemenet figyeléssel, próbáltam megszakítással, de nem értem el normális eredményt. Próbáltam már 5 féle enkóderrel, ezek közt volt egy optikai is. A neten fellelhető táblázatok alapján egyáltalán nem működik a dolog. Én az elején azt hittem, hogy az ezen a képen t1, t2, t3, t4-gyel jelölt időpontok ott vannak, ahol megáll az enkóder. De már csak műszerrel mérve sem ez az eredmény, léptetés közben változik a kimeneti jelalak, de ha áll az enkóder, állandóan szakadást mérek rajt. Számtalan videót és leírást megnéztem, mindenkinek olyan könnyedén megy ezt felprogramozni. Lehet, hogy már a ötödik rossz enkódert fogom ki? Ebből 3 vadi új volt, az egyik az optikai. Van valakinek egy tutira működő programja erre MikroC-ben? Legalább kipróbálni őket, hogy hol a hiba..
Köszönöm!
(#) Pali79 válasza mark.budai hozzászólására (») Júl 6, 2018 /
 
Nem valószínű, hogy rosszak az encoderekEbben a cikkben az optokapukról szóló részben van C kód. A két egymás után elhelyezett optó működésének az analógiája ráhúzható az encoderre is. Sőt az optikai encoder tulajdonképpen az is. A bekötés egyébként tuti jó?
(#) Bakman válasza mark.budai hozzászólására (») Júl 6, 2018 /
 
Közhasználatban, hobbistáknál alapvetően két típusú enkóder forog közkézen: Bővebben: Link. Ha Gray kód szerinti kimenetű az enkóder, akkor két Interrupt On Change kell, egyébként elég egy is.
(#) usane hozzászólása Júl 10, 2018 /
 
Nem biztos, hogy kezdő kérdés, de elfér itt.
A PIC32 SPI TX-bufferébe ha enhanched mode 32bit-ben megy, hogy kellene beletöltenem az adatokat, hogy működjön is. Egy 4x1 byte-os tömböt sem tudom beletölteni, hogy működjön. Mindig csak az első byte jön ki a kimeneten.
XC32, de nem a beépített spi rutin, sajátot szeretnék létrehozni.
(#) usane válasza usane hozzászólására (») Júl 10, 2018 /
 
Update: Egy 32byte méretű adat kimegy, de a 4 elemű elemenként 8 byte-os tömbnek csak az első byte-ja.
(#) cross51 válasza usane hozzászólására (») Júl 10, 2018 /
 
Nem tudom, hogy segít-e, de hátha.

SPIxCON ON = 0-nál kell írni az ENHBUF-ot
és addig írsz SPIxBUF-ba amíg az SPIxSTAT SPITBF = 0
(#) usane válasza cross51 hozzászólására (») Júl 11, 2018 /
 
Köszönöm, ezekkel tisztában vagyok. Megpróbálom érthetően megfogalmazni.
Ha egy uint32-t töltök az SPIBUF-ba az kimegy.
Viszont én valami ilyesmit szeretnék.
pl:
unsigned char array = {13,13,13,1};
Na ez nem ment be egyben. Ezt szerettem volna etetni vele egy 32 bites adatként, mondjuk pointerekkel de eddig nem sikerüt. Gondoltam mivel a tömb elemeit egymás után rakja, legalábbis az MPLAB egymás utáni címeket mutat, akkor be tudom neki adni. Valószínűleg én csinélok valamit rosszul, mert feltételezem megoldható, hogy egy tömb 4 egymás utáni elemét 32 bites egységként kezelje. És itt értem anélkül, hogy a 4x8 bitet összeraknám egy másik változóba shiftelgetéssel. Lehet esetleg struktúrában kellene?
Vagy ez így nem megoldható?
(#) cross51 válasza usane hozzászólására (») Júl 11, 2018 /
 
Enhbuf nélkül kimegy a 32bit? (MODE be van állítva?)
Esetleg a tömb elé tegély a volatile-t hátha.
(#) usane válasza cross51 hozzászólására (») Júl 11, 2018 /
 
ENH nélkül sem megy ki. Mode be van állítva.
Voltaile-t kipróbálom, köszi.
(#) usane válasza usane hozzászólására (») Júl 11, 2018 /
 
Na most teszt céljából szétszedtem 8 bites adatokra normál módban. Most meg elveszik az utolsó 3 bit.
Pl ha ez alábbit küldözgetem végtelen ciklusban
  1. arr[12] = {109,182,219,36,146,73,36,146,73,36,146,73}
  2.  
  3.           for (k=0; k<11; k++ )
  4.             {                    
  5.             while(SPI2STATbits.SPITBF);        
  6.             SPI2BUF = arr[k];    
  7.             }

akkor a 73-as utolsó 3 bije lemarad. Ez vajon miért van?
(#) superuser válasza usane hozzászólására (») Júl 11, 2018 /
 
Korábban kiment mind a 8 bit?
SPI konfigurációból nem adódhat?
Meg ugye R/W bit, address bit, ilyesmi lehet az első byte végén.
Ha minden Írásod új írásnak veszi valamiért, akkor ezek a bitek befolyásolhatják a küldött adatot.
(#) cross51 válasza usane hozzászólására (») Júl 11, 2018 /
 
Nekem nem volt ilyen problémám soha 2 dolog amit próbálj ki.
- SPITBF helyett SPIBUSY-t nézz (csak itt a normal mode-ban)
- SPITBF helyett SPIRBF-et (amíg 0-a addig nem engedsz új írást, nem tudom, hogy default-ban 1-ben van-e lehet az első byte-ot cikluson kívül kell küldeni)
(#) usane válasza usane hozzászólására (») Júl 11, 2018 /
 
Erre közben rájöttem. A k-t elírtam.
Most teszthez jó lesz, de a 32 bit módot még ki kell deítenem hogy tudom megoldani.
(#) cross51 válasza usane hozzászólására (») Júl 11, 2018 /
 
Pakold egy voltatile uint32_t-be a 4byte-ot ENHBUF =0 és MODE=32bit-el és nézd meg elvileg így ki kéne menjen a 32 bit egyszerre.
(#) usane válasza cross51 hozzászólására (») Júl 11, 2018 /
 
Ok,kipróblom, köszi. Még egy kérdés. Hogy tudom rávenni, hogy 0-kat is küldjön.
X ideig alacsonyan kellene tartanom. Framed mode nélkül is megoldható?
(#) matheattila válasza usane hozzászólására (») Júl 11, 2018 /
 
Csak egy észrevétel, de nem biztos, hogy sokat segít:
  1. for (k=0; k<11; k++ )

Ha az arr[] tömb 12 elemü akkor nem inkább az kellene legyen a for-ban, hogy k<12?
Mert másképp sose ér el az utolsó elemhez...
(#) usane válasza matheattila hozzászólására (») Júl 11, 2018 /
 
Igen tudom. A következő hozzászólásomban írtam is hogy megtaláltam az elírást.
(#) mark.budai válasza Bakman hozzászólására (») Júl 12, 2018 /
 
Köszönöm! Így már értem az egészet. Azért ránéztem egy logikai analizátorral, sokkal előbb kellett volna megtennem. Így igazából kezelni is sokkal egyszerűbb.
(#) usane hozzászólása Júl 13, 2018 /
 
Van egy RF távirányítóm aminek a jeleit szeretném PIC-el különböző funkciókra rakni.
A kódolása valami NRZ-féleség. Először azt hittem Manchester, de nem 1:2 arányú az "1"-k és a "0"-k száma hanem 1:3.
Ilyesmi sorozat: 1000 1000 1110 .stb.
Minden gombra 20 adategységnyi bit tehát 20x4 "0" és "1" ami minden gombhoz azonos, majd 5 egység gombazonosítás, majd kb 6 egységnyi azaz 6x4 "0" szünetet ad a vevő. Ha folyamatosan nyomom a gombot ezek ismétlődnek.
A kérdés az, hogy lehet ezt legegyszerűbben megoldani.
Valószínűleg külön PIC-nek kell dekódolni, mert nem hiszem, hogy ezt valamelyik periféria kezelni tudná, azaz főciklusban kell lekérdeznem és bufferelnem. Vagy esetleg az SPI-vel tudom valahogy szinkronizálni s azzal venni?
Folyamatosan meg azért kell lekérdezni, mert a vevőn nemcsak gombnyomáskor jön adat, hanem előtte is mindenféle katyvasz. Bármi ötletet szívesen meghallgatok.
A hozzászólás módosítva: Júl 13, 2018
(#) bbalazs_ válasza usane hozzászólására (») Júl 13, 2018 /
 
Mondjuk nem értem a négyes szorzó hogy jön a bitekhez, de ez legyen az én bajom.
A helyedben egy cirkuláris puffert használnék, ami kicsit nagyobb az adatsorozatnál, új időszelet utáni bit bejövetelekor végigellenőrizném az aktuális pozíciótól megszakításban, gombra maszkolva. Magyarán először kihagynám a gomb bitjeit, csak hogy a header és az adat után jövő szünet megvan-e.
Nem tudom, mekkora a frissítési freki, de szerintem a megszakítás simán elviszi.
(#) Kera_Will hozzászólása Júl 13, 2018 /
 
12 C 508A uC-hez van a hex fordítva.

Nekem 12 F 508A uC-erem van.

Ez okozhat gondot a F uC működésében ha a forrást C-sre írták ?
A hozzászólás módosítva: Júl 13, 2018
(#) kistee válasza Kera_Will hozzászólására (») Júl 13, 2018 /
 
Szerintem nem, de ha tévedek majd kijavítanak.
(#) usane válasza bbalazs_ hozzászólására (») Júl 13, 2018 /
 
Köszönöm válaszod. Ami a 4x szorzót illeti leírtam, hogy négybites a kódolás, 1000, 1110, innen a 4-es szorzó. Vagyis egy kódolt 1-es az 1110, a kódolt 0 pedig 1000 Ami nem annyira lényeges, csak mint infót adtam meg. Egy bit ~415-420us (~2,4kHz).
Én is ilyesmire gondoltam, csak a bitbeolvasást, ugye folyamatosan kell végezni, és a főgépésznek (PIC32MX274F256) lesz más dolga is, ezért gondoltam, hogy ez kap egy külön PIC-et, de még majd utánaszámolok kell-e.
(#) madzagos hozzászólása Júl 15, 2018 /
 
Tisztelt szakértők valaki le tudná nekem ezt az http://www.hobbielektronika.hu/kapcsolasok/files/97/nixie.asm fájlt 16f84-es picre fordítani. Segítségeteket előre is köszönöm.
A hozzászólás módosítva: Júl 15, 2018
(#) Hp41C válasza madzagos hozzászólására (») Júl 15, 2018 /
 
Mottó: Egy tengerészgyalogos türelmetlenül kéri a rádióján a légi támogatást... Nemsokára jön is egy repülő, de csak egy reklám feliratot húz: "Meg tudod csinálni!"

Végy egy MpLab ASM fordítót (a Microchip oldaláról) és fűszerezd meg a két adatlappal.
Cseréld ki a következő két sort
  1. list P = 16F628A
  2. include "p16F628A.inc"

erre
  1. list P = 16F84
  2. include "p16F84.inc"
Módosítsd a __CONFIG sort a 16F84 adatlap 8.1 fejezete szerint.
  1. __CONFIG _CP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON

Végezetül csak az idétlenül megírt változó definíciókat kell átírni, hogy a címek a 0x0C - 0x4F közöttiek legyenek.
(#) madzagos válasza Hp41C hozzászólására (») Júl 15, 2018 /
 
Köszönöm,megpróbálom.Remélem sikerül.
(#) jdani hozzászólása Júl 15, 2018 /
 
Üdv. Ha egy PIC kimeneti jelét össze akarom kötni egy másik PIC bemenetével, akkor kell közzé valaki fel-lehúzó ellenállás, csak csak egyensen össze lehet kötni?
(#) Bakman válasza jdani hozzászólására (») Júl 15, 2018 /
 
Minden további nélkül összeköthető a kettő. Akkor kell a felhúzó ellenállás, ha az a kimenet nyitott kollektoros, vagy annak van konfigurálva. Biztos ami biztos alapont felhúzónak használj egy 1 kΩ-os ellenállst.

Gond akkor lehet, ha mindkét láb kimenet és ellentétes kimentű jellel versenyeznek egymással. Ha nem vagy biztos a dolgodban, a két láb közé egy soros, 1 kΩ-os ellenállást tervezz.
(#) Hp41C válasza jdani hozzászólására (») Júl 16, 2018 /
 
Gond még akkor is lehet, ha az egyik kontroller kap tápfeszültséget, a másik pedig nem. Ha a küldő nem kap tápfeszültséget, akkor alacsony szintet érzékel a vevő. Ha a vevő nem kap tápfeszültséget és van a lábon belső védődióda, azon keresztül kap tápfeszültséget.
További probléma lehet a tápfeszültség eltérő értéke.
(#) jdani válasza Hp41C hozzászólására (») Júl 16, 2018 /
 
Ezzel gond nem lesz, mert egy tápról fog menni. Akkor végül igykább ne egyenesen kössem össze a lábakat, hanem egy soros 1K ellenállással?
Következő: »»   1036 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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