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   903 / 1203
(#) pajti2 válasza picipic hozzászólására (») Feb 21, 2017 /
 
Anno általános iskolában fizika órán láttál Van de Graaff-generátort működés közben? Vicces dolgokat tud csinálni a sztatikus feszültség, amikor töltés kerül egy vezetőre, és bár feszültség generátor nem hajtja, cserébe fújja az elektronszél a töltést végig a vezetéken. Felejtsd el a tápfeszültség / föld potenciált, amerre vezető felület van, az szétterül, és közben akár ampernyi csúcsáramot lök. És hogy mennyi energia tud lenni benne? Egy nyári estére emlékszem, amikor kicsit lehűlt a levegő, és este a sötét szobában levettem a műszálas pulcsit. Olyan fényjátéktól villogtak a szoba falai, mintha egy diszkóban lettem volna. Pedig csak egy sima mozdulattal levettem egy pulcsit. Te állandóan azt fogod csinálni a függönyökkel - segítesz nekik súrlódni, és a felületükön keletkezett töltésnek fémfelületet + elvezetést fogsz felkínálni.
(#) picipic válasza pajti2 hozzászólására (») Feb 22, 2017 /
 
Hát akkor mi a megoldás?
A Vss definiciója az adatlapon is : Ground reference for logic and I/O pins

A vezérlés (Pic) és motor közötti 5-6 m-es távot árnyékolt vezetékkel tervezem kiépíteni. Ez nem véd meg a statikus feszültségtől?
(#) Hp41C válasza picipic hozzászólására (») Feb 22, 2017 /
 
Ha a következőképen csatlakozol a motorhoz, nem kell összekötni még a Vss -t sem:
A motor vezérlését két relé látja el:
- az irányváltó
- egy be- / kikapcsoló.
A relé tekercseit a PIC kimeneteire kapcsolt tranzisztorokkal lehet megoldani.
A megállást/megszorulást figyelő ellenálláson eső feszültséget az érzékelőnél feldolgozhatod egy komparátorral, a komparátor kimenetét egy optocsatolón kereszül juttatod a PIC bemenetére.
(#) _BiG_ válasza picipic hozzászólására (») Feb 22, 2017 /
 
Szupresszordiódák alkalmazása, illetve két soros, egyforma, nagyértékű ellenállás a jelvivő vezetékek közé kötve, az ellenállásközép meg földelve. A mondjuk 100k-s ellenállások nem terhelik meg a jeleket, viszont levezetik a sztatikus feszültség töltését a föld felé.
A hozzászólás módosítva: Feb 22, 2017
(#) ativagyok hozzászólása Feb 22, 2017 /
 
Sziasztok!
Két PIC közötti SPI kommunikációval akadt gondom: Ha a Slave-ként konfigurált eszköz hamarabb kap tápot a Master-nél, akkor képtelenek kommunikálni. A kép PIC galvanikusan külön tápon van, a kommunikációs csatorna optocsatolóval le van választva.
Ha a master hamarabb indul, semmi gond nincs.
Az SPI beállítása:

Master: (PIC16F1938)

  1. SSPSTAT.SMP  = 0;
  2. SSPSTAT.CKE  = 0;
  3. SSPCON.SSPEN = 1;
  4. SSPCON.CKP   = 1;
  5. SSPCON.SSPM3 = 0; // 0010 = SPI Master mode, clock = FOSC/64
  6. SSPCON.SSPM2 = 0;
  7. SSPCON.SSPM1 = 1;
  8. SSPCON.SSPM0 = 0;


Slave: (PIC16F1824)

  1. SSP1STAT.SMP   =0;   //SMP must be cleared when SPI is used in Slave mode
  2. SSP1STAT.CKE   =0;   //0 = Transmit occurs on transition from Idle to active clock state
  3. SSP1CON.SSPOV  =0;
  4. SSP1CON.CKP    =1;   // 1 = Idle state for clock is a high level
  5. SSP1CON.SSPM3  =0;
  6. SSP1CON.SSPM2  =1;   // 0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin
  7. SSP1CON.SSPM1  =0;
  8. SSP1CON.SSPM0  =1;
  9. SSP1CON.SSPEN  =1;  //1 = Enables serial port and configures SCK, SDO, SDI and SS as the source of the serial port pins(2)
  10. WCOL_bit = 0;
A hozzászólás módosítva: Feb 22, 2017
(#) icserny válasza ativagyok hozzászólására (») Feb 22, 2017 / 1
 
Az nem oldja meg a problémát, ha bekapcsoláskor a slave addig nem engedélyezi az SPI-t, amíg a Slave Selectnek használt lábon nem érzékel magas szintet? Vagy mi okozza a problémát?
(#) ativagyok válasza icserny hozzászólására (») Feb 22, 2017 /
 
Azt elfelejtettem említeni, hogy Slave Select nélküli üzemmódban használom.
SSPM=0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin
Csak egy Slave van a buszon.
A hozzászólás módosítva: Feb 22, 2017
(#) pajti2 válasza picipic hozzászólására (») Feb 22, 2017 /
 
Az egyik lehetséges megoldás, amit terveztél eredetileg. Legyen csak közvetlenül huzalozva, és lássuk.

Egyik ismerősöm anno pénztárgépeket szervízelt, amik rs232 kábellel voltak kötve leginkább másik szobában lévő számítógéphez, és rendszeresen mentek tönkre a soros porti meghajtók, pedig ott még különösebben sok sztatikus forrás sem volt (kisközértek). Végül rászoktak az ügyfelek az opto leválasztásra, és utána már bírták a gyűrést az eszközök.

Ha nem bírja a közvetlen kábelezés, két független táp, optozni a relék meghajtását, helyben szintkomparálni a 20 ohmoson a feszültséget, és azt a digitális jelet is optoval küldeni tovább. Nagy marék tranzisztor + ellenállást kell majd beépíteni. Az a macera ráér majd akkor, amikor egyértelműen kiderült, hogy nincs más megoldás.
(#) pajti2 válasza ativagyok hozzászólására (») Feb 22, 2017 /
 
Az spi-nvan egy slave select jel, ami elvileg gondoskodik arról, hogy a slave ne érzékeljen megkezdett fázisállapotot olyankor, amikor nincsen. Kezeled a slave selectet megfelelően? Alap esetben rajta van a felhúzó ellenállás?
(#) ativagyok válasza pajti2 hozzászólására (») Feb 22, 2017 /
 
Nem kezelem a Slave select jelet. Úgy gondoltam, hogy "SS pin control disabled" módban nem kell vele foglalkoznom. Enélkül nem használható a kommunikáció ?
(#) pajti2 válasza ativagyok hozzászólására (») Feb 22, 2017 / 1
 
Ha slave esetében nem kezeled a kvázi chip select jelet, akkor az folyamatosan aktívnak van elfogadva, és az órajel vezeték minden valós vagy valósnak vélt változása fázis állapotot léptet. Az adataid megérkeznek, éppen csak kicsit kuszán, átcsoportosított bitekkel. Ha nem arra van szükséged, nem kellene alábecsülni a frame érvényesítés használatát.
(#) ativagyok válasza pajti2 hozzászólására (») Feb 22, 2017 /
 
Akkor bizony ez lehet a gond.
Tulajdonképpen mire való az "SS pin control disabled" mód?
Köszönöm a segítséget.
(#) pajti2 válasza ativagyok hozzászólására (») Feb 22, 2017 /
 
A masternek nincsen feltétlenül szüksége a társított SS jelre. Az SS jelet külső elektronika is létrehozhatja, például amikor sok spi modul van ugyan azon a vonalon.

Apropó, éppen filozom rajta, hogy ha slave módban nincs érvényes SS bemenet, és az alapértelmezés sem kötelez rá, hogy legyen, lehetségesen soha semmi nem fog megérkezni. A pic adatlapját kellene felkotorni azügyben.
(#) ativagyok válasza pajti2 hozzászólására (») Feb 23, 2017 /
 
De a Slave eszközt is be lehet konfigurálni SS nélküli üzemmódba.
Érdekes, de ha a master hamarabb elindul, akkor nincs gond, az adatok helyes sorrendben megérkeznek ahogy kell.
Próbálok nekifutni még egyszer az adatlapnak.
(#) pajti2 válasza ativagyok hozzászólására (») Feb 23, 2017 / 1
 
Ránéztem az adatlapra.

(DS41419C-page 251, "25.2.5 SLAVE SELECT SYNCHRONIZATION" fejezet).
Idézet:
„If the Slave Select line is not used, there is a risk that the slave will eventually become out of sync with the master. If the slave misses a bit, it will always be one bit off in future transmissions.”
Egy egyszerűre megépített pic-nél simán csak nincsen meg az elektronikai realitás, hogy bolond biztosra építsék meg. Korlátozottak a mikroelektronikai források, nem tudnak még okosabb állapotgépet építeni. Az az ára annak, hogy olcsó maradhasson. Az SSP1CON1 regiszter az I2C céljaira is használva van, és a jelek szerint a korlátok összessége folytán meg van engedve az spi slave mód nSS használat nélkül is. Viszont csak azért, mert tudsz nem működő dolgokat is építeni, nem kötelező élni azokkal a lehetőségekkel

Konkrétan a te eseteben valami olyasmi történhet, hogy a master pic elindulása a clock vonalon valami weak-pull jelenséggel generál egy tüskét, amit a slave az első órajelnek érzékel, és a jelszinkron onnantól szétesik. "Működni" attól az még működik, csak hibásan. Kellene egy kapcsrajz is, mit hogyan kötöttél be, esetleg egy felhúzó ellenállással ki lehet védeni a hibát, és továbbra is maradhat a slave-ed nSS vezérlés nélkül, bár nem garantált, hogy úgy stabilan működni fog.
A hozzászólás módosítva: Feb 23, 2017
(#) picipic válasza pajti2 hozzászólására (») Feb 23, 2017 /
 
A HW kiépítését - szerintem - befejeztem. Most a PIC programozását gyűröm.
Itt szembesültem egy jelenséggel.
Nyomógombbal vezérelném a motor forgását. (Gomb lenyomva--- a megfelelő láb 0-ra vált)
Ha az irányváltó relé nincs behúzott állapotban, jól működik.
Ha az irányváltó relé behúzott állapotban van, a gomb felengedését a PIC nem érzékeli.

A PORTB felhúzva. (BCF OPTION_REG,7 ; PORTB lábak felhúzva belsőleg 1-re)
Kérdésem: Mi lenne ha a PORTB,2-re külsőleg is rákötnék + 5 VDC-t.
A gomb lenyomására a lábra jutó "föld" jelre jól reagál a PIC.
A gomb felengedését nem érzékeli.
Az irányváltó relé működése miért befolyásolja a PORTB,2 viselkedését?
A hozzászólás módosítva: Feb 23, 2017
(#) pajti2 válasza picipic hozzászólására (») Feb 23, 2017 /
 
Hasonló misztériumoknál általában elkötés vagy elprogramozás derül ki. Konkrét kapcsrajz kellene első körben, és 3x is ellenőrizni, tuti biztos az van-e megépítve. Elektronikai bakik mint nincsen-e zárlat ónpacákon keresztül itt-ott, belsőleg elszakadt vezetékek, amik csak akkor vezetnek, ha mozgatod őket egyébként meg szakadás, nincsenek-e hideg forrasztások szanaszét oxidálódott fémfelületeken - szintén ellenőrizni tutira.
(#) Hp41C válasza ativagyok hozzászólására (») Feb 24, 2017 / 1
 
Nagyon rossz a sorrend:
  1. SSPSTAT.SMP  = 0;
  2.     SSPSTAT.CKE  = 0;
  3.     SSPCON.SSPEN = 1;
  4.     SSPCON.CKP   = 1;
  5.     SSPCON.SSPM3 = 0; // 0010 = SPI Master mode, clock = FOSC/64
  6.     SSPCON.SSPM2 = 0;
  7.     SSPCON.SSPM1 = 1;
  8.     SSPCON.SSPM0 = 0;

helyett
  1. SSPSTAT.SMP  = 0;
  2.     SSPSTAT.CKE  = 0;
  3.     SSPCON.CKP   = 1;
  4.     SSPCON.SSPM3 = 0; // 0010 = SPI Master mode, clock = FOSC/64
  5.     SSPCON.SSPM2 = 0;
  6.     SSPCON.SSPM1 = 1;
  7.     SSPCON.SSPM0 = 0;
  8.  
  9.     SSPCON.SSPEN = 1;

Előbb kell beállítani minden paramétert csak aztán engedélyezni a működést.
A hozzászólás módosítva: Feb 24, 2017
(#) ativagyok válasza pajti2 hozzászólására (») Feb 24, 2017 /
 
Köszönöm, hogy utána néztél.
1k felhúzó ellenállás minden bemeneten van.
Nekem valami másnak tűnik a szinkron szétesésétől, milyen ilyenkor egyáltalán nem jön értelmes adat sem a mastertől, sem a slavetől.
Csatolok oszcilloszkóppal rögzített képeket a hibás, és a jó állapotokról a Master Data in és Data out lábán, hátha előrébb jutunk vele.
(#) kissi válasza ativagyok hozzászólására (») Feb 24, 2017 /
 
Figyelj erre Bővebben: Link
(#) ativagyok válasza kissi hozzászólására (») Feb 24, 2017 /
 
Uh, nem vettem észre ezt a postot...

Hp41C:Köszönöm, módosítottam a sorrendet, de sajnos a problémát nem oldotta meg.
(#) pajti2 válasza ativagyok hozzászólására (») Feb 24, 2017 /
 
Nem ott keresed a hibát, ahol van

Ha jól értettem az előzőleg leírtakat, a slave-en bekapcsolás után ott a clock vonalon a felhúzó ellenállás. Be kell állnia az órajel vezetéknek stabilan magasra. Ha beállítod a szkóp triggert valahova fél tápra, és leesik a clock jel szintje, amikor bekapcsolod a master-t, azt a tüskét látnod kell a szkóp visszajelzésen. Azt a bekapcsoláskori jelenséget kellene kicsit megszemlélni.
(#) ativagyok válasza pajti2 hozzászólására (») Feb 24, 2017 /
 
Jól érted...Magas szinten van, de a master bekapcsolásakor 0 lesz, amíg nem kezd el adni a master.(lsd. csatolt kép)
Stabil 0 szint előtt 10-ből 1-szer talán el tudok kapni egy-egy 3V alatti tüskét.

CLK.png
    
(#) pajti2 válasza ativagyok hozzászólására (») Feb 24, 2017 / 1
 
Hát meg is találtuk a hibát. Az az első lefutó él a slave-ednek frame start, ami a masterednek csak bekapcsoláskori állapot alapinit előtt. Annak a vonalnak nem szabadna alacsonyra mennie. A master pic-en bekapcsoláskor alapból minden jel bemenet, akár digit, akár analóg (most nem néztem meg a master pic-ed adatlapját). A master pic-ed bekapcsoláskori initjében valami explicite kimenetre programozza az a jelet, és alacsonyra húzza. Azt a részt keresd meg és szedd ki.
(#) ativagyok válasza pajti2 hozzászólására (») Feb 24, 2017 /
 
Sehogy sem tudom elérni, hogy ez a lefutó él ne történjen meg. Már kivettem az optocsatolókat is, semmi sincs a két PIC között. Az optocsatoló miatt egyébként nem lényeges, hogy ki, vagy bemenet a láb.
Az OSCCON regiszter után az adatirányt állítom be rögtön, aztán az SPI konfiguráció jön..az eredmény változatlan...
(#) pajti2 válasza ativagyok hozzászólására (») Feb 24, 2017 /
 
Amikor kimenetnek programozod a lábat, beállítod előtte a lábhoz tartozó latch regisztert magasra?
(#) ramok hozzászólása Feb 26, 2017 /
 
Sziasztok
Frekimérőt szeretnék építeni. A kinézett kapcssolás (már a második)

Bővebben: Link


oldalról tölthető le. A problémám a szoftverrel van. 2 tömörített fájl van ,amit kicsomagolva egy ASM, HEADER és HEX fájlt kapunk( és 2 TXT ami a szerzői jogokról szól) A HEX beégetése során rögtön a megnyitáskor az üzenet: NEM TARTALMAZZA A CONFIG INFÓT. Csekély ismereteim alapján ezek osc tipus, WDT, KÓD VÉDELEM, PWRT, ezek az ASM FÁJL-ban benne is vannak.
Mi lehet a gond?
(#) Hp41C válasza ramok hozzászólására (») Feb 26, 2017 /
 
A HEX állományben nincs benne a konfiguráció, de az asm -ben benne van:
Idézet:
„.osc xt ; Clock = 10 MHz.
.wdt off
.pwrt on
.protect off”

Ebből és az adatlapból: a konfigurácós szó értéke 0x3FF9.
(#) ramok válasza Hp41C hozzászólására (») Feb 26, 2017 /
 
Köszi a gyors választ Hp41C
Megprobáltam ezt az ASM fájlt lefordítani (MPLAB v8.9) de legalább 600 hibát adott.
pl: Symbol not previously defined (rb7) stb
- Illegal opcode (ds)

Gondolom a portokat regisztereket az elején definiálni kell. (jelzem nem tudok programozni egyáltalán sajnos)

Talán a HEADER fájl-al kellene valamit csinálni???
Abban találtam ilyesmiket.
(#) Hp41C válasza ramok hozzászólására (») Feb 27, 2017 /
 
Nem Microchip Assebler szintaxisú a forrás...
Következő: »»   903 / 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