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   911 / 1203
(#) kriszrap hozzászólása Márc 19, 2017 /
 
Köszönöm sajnos csak pénteken tudok vele bibelödni majd írok majd
(#) apromax hozzászólása Márc 19, 2017 /
 
C ben lenne kérdésem. Az alábbi egy gyári példakódból való:

  1. fractcomplex sigCmpx[256] __attribute__ ((section (".ydata, data, ymemory")));

  1. fractional *p_real = &sigCmpx[0].real ;  
  2. fractcomplex *p_cmpx = &sigCmpx[0];
  3. *p_real++;


1. A fenti kódban először képezünk egy fractional típusú p_real mutatót. Nem értem miért kell a fenti módon megadni a tömböt, hiszen nevének egyszerű leírása is már az első elemére mutatna. Miért kell megadni a 0. -indexet, és a real elemet?
2. A fractional ugyan 16 bites de Q1.15 típusú, és így én elsőre inkább az Int típust választottam volna, a mutató egyesével való léptetése ezzel gyorsabb (egyszerűbb) mint a fractionálé.

A példa programban lévő fractcomplex *p_cmpx = &sigCmpx[0]; sor használata érthető számomra, csak azért tettem bele azt is, hogy így lenne nekem logikus a fenti sor is, igaz a [0] index felesleges.

De nyilván én értem rosszul, ezért kérnék egy kis segítséget a témában.
A hozzászólás módosítva: Márc 19, 2017
(#) c27 válasza pajti2 hozzászólására (») Márc 19, 2017 /
 
A tápot nem tudtam megnézni, talán holnap, de most kipróbáltam ceruzaelemről és úgy is simán be lehet állítani úgy a potit, hogy két érték között ugrál 1-2mp-ként. Most még mindig úgy olvasom be az adc-t, hogy csak a felső 6 bitet használom fel, tehát az alsó 4 eldobása is kevés, pedig kb. 0,078V-ként következik az új érték.
A táp zavarforrása kizárva, mert elemről is ugyan ez. Külső zaj pedig csak a számítógép, de attól is 1-1,5m-re van, más nincs.
Esetleg még a poticserét kipróbálnám, vagy többfordulatú poti kellene. Azt is próbáltam korábban, hogy 100nF kondi a poti csúszka és a + táp illetve egy másik kondi a csúszka és a föld közé. Semmilyen hatása nem volt.
Még ez a hiszterézises megoldást esetleg kipróbálom, de kb. ennyi.
(#) c27 válasza Bakman hozzászólására (») Márc 19, 2017 /
 
18F4431, 40Mhz, 10K poti. Esetleg 1K potival próbáljam meg?
PORTA=0;
TRISA=0XFF; //ALL INPUT
ANSEL0=0b00000001; //AN0 ANALOG OTHERS DIGITAL
ANSEL1=0X00;
ADCHS=0X00;
ADCON0=0X00; //SINGLE CHANNEL
ADCON1=0X00;
ADCON2=0b00110010; //32Tosc 12TAD
ADCON3=0b11000000; //ADC INTERRUPT DISABLED
A hozzászólás módosítva: Márc 19, 2017
(#) benjami válasza c27 hozzászólására (») Márc 19, 2017 /
 
Teljesen mindegy hány bitet dobsz el, mindig lesz olyan eset, amikor pont a két érték határán lesz. Hiszterézissel viszont könnyen meg fogod tudni oldani ezt a problémát. Sima potméteres osztónál szerintem felesleges a VREF-ekkel bajlódni (VCC/VSS a legjobb), mert az A/D érték így nem függ a tápfeszültségtől, csak az osztási aránytól.
(#) Bakman válasza c27 hozzászólására (») Márc 19, 2017 /
 
Max. ellenállás a fesz.forrása és az analóg láb között 2,5 kOhm, legalábbis az adatlap szerint. Egyébként éppen a digitális technika adottságai miatt benjaminak igaza van, mindegy, hány bitet dobsz el.
(#) gyoran válasza c27 hozzászólására (») Márc 20, 2017 /
 
Szia
0,078 V ugrálás egy digitális környezetben szerintem nem rossz. Gondolj bele, hogy a potit be tudod állítani úgy is, hogy stabil értéked legyen, tehát az "ablak" ahol ugrál ennél is kisebb.

Ha ez zavar, három lehetőséged is van:
1) ha a mért érték az első mért értéktől egy lépésnyire (2 vagy 4 lépés, mikor hogyan szeretnéd) eltér, akkor eldobod az új értéket. Ha pedig masszívan eltér (20-30 mérés) akkor átveszed új értéknek. (Ez kb. az átlagolás.)
2) digitális potmétert használsz.
3) a már említett hiszterézis.
(#) ktamas66 válasza c27 hozzászólására (») Márc 20, 2017 /
 
A tápon levő zavar nem csak a tápból keletkezik. Ha pl. van egy ledes kijelződ, az amikor 1-et mutat más a terhelése, mint amikor 8-at. Ez minimálisan visszahat a tápra. Ha meg ez pl. multiplex, vagy egyéb portokat kapcsolgatsz (PWM) ezek ugyanúgy.
(#) c27 hozzászólása Márc 20, 2017 /
 
A hiszterézis részt megcsináltam, szimulációban működik, de még nem próbáltam a "zajos környezetben". Ami kicsit aggaszt, hogy tényleg meghalt a pic.
Simán csak programot írtam rá és utána már furán működik. Az LCD-t nem tudja elindítani próbál rá írni látszik, de ilyen hülyeségek jelennek meg és a ledek sem világítanak egyfolytában csak felvillannak egy kicsit. A gombok nyomkodására is próbál reagálni csak nem igazán jól, mintha haldokolna vagy hibás lenne a program. Próbáltam visszaírni már működő korábbi verziójú programot, de semmi javulás.
Korábban mindig úgy programoztam, hogy le volt véve minden róla, de az LCD kijelző csatlakozóját az utolsó 6-7 programozásnál már nem húztam le, így az bekapcsolgatott az írás közben. Az utolsó programírásnál is simán ráírta a programot, de azután már nem akart megfelelően működni. Tápegység nem volt rajta soha íráskor. Fogyasztó is csak az LCD kijelző és 2db led. A pickit2 programozó felismeri a picet, tud is rá írni programot hiba nélkül, csak a pic nem teszi a dolgát. Van egy tartalék amit ha felprogramozok működik ugyan abban a panelban, szóval biztos, hogy pic hiba.
Annyi igaz, hogy már elég sokszor írtam rá progit, talán 1000 környékén is járhattam, de azért nem hiszem, hogy ennyit bírt.
A hozzászólás módosítva: Márc 20, 2017
(#) eSDi válasza c27 hozzászólására (») Márc 20, 2017 /
 
Üdv!

Néha előfordul, hogy elhaláloznak csak úgy egyről a kettőre. A rajta lógó perifériák nem befolyásolják, én mindig rajta hagyok mindent és nem volt vele még gondom. Talán akkor fordulhat elő, ha nagyobb fesz jut vissza rá valahogy, de ilyet nekem még csak elkóborolt vezeték okozott. Olyan viszont már volt, hogy a fiókban csücsülve, antisztatikus szivacsba nyomva ment tönkre egy 16F877A. Akartam használni, erre nem ismeri fel semmi. Összedrótoztam egy dugdosós panelon és akkor vettem észre, hogy kegyetlenül melegszik. A táp része lett zárlatos, de, hogy mitől, azt nem tudom.

Ez a járulékos veszteség.
(#) c27 válasza eSDi hozzászólására (») Márc 20, 2017 /
 
Úgy néz ki mégsem halt meg. Egy más projektnél használtam már ilyen típust. Annál a projektnél is furcsa módon a D port megától meghalt szépen kapcsolgattam a gombokat egyszer még világítottak a ledek aztán már nem.
Most rátöltöttem az akkor használt programot és lőn csoda működik, a kib***ott D portot kivéve. Megint a D port szállt el egy teljesen más nyákban szóval még tervezési hiba sem lehet. Komolyan mondom amit a microchip csinál az már szégyen. Szinte ugyan az a probléma. Ezért volt szar a kijelzés, mert az LCD enable vagy rs a D portra van kötve és persze a ledek is. ADC működik, PWM működik. Komolyan olyan ideges vagyok .....
A hozzászólás módosítva: Márc 20, 2017
(#) manuelc hozzászólása Márc 21, 2017 /
 
Sziasztok!

PIC mikrokontrollerek között szeretnék authentikálni és ehhez kérem a segítségeteket, ugyanis rég volt már, hogy tanultam a mikrovezérlőkről a suliban. A kapcsolás kész és bekötni még csak sikerül is, de a működés és programozás megtervezésével bajban vagyok.

A tervezett mc típus egy PIC12F509. Az első PIC-be felprogramozzuk a programmal ami kiküldi a lehető leghosszabb bitsort amivel a memóriája még dolgozni tud. A hossz azért fontos, hogy a kódot ne lehessen gyorsan brute crackelni. Amíg az első PIC áram alatt van folyamatosan küldi a kimenetén a kódot.

A másik PIC értelemszerűen ugyanazt a kódot várja a bemenetén, hasonlítja és validálja. Egy másik, jelen esetben kimenetre használt lábán pedig folyamatos magas jelet ad egy cmos switchnek (amíg a feltételek teljesülnek) ami zárja a kapukat.

Egy összehasonlító függvényt még meg tudnék írni C-ben, viszont a mikrovezérlők programozásával bajban vagyok. Tudtok segíteni? Mire kellene odafigyelnem a működés megtervezése közben? Előre is köszi!

Manu
(#) sonajkniz válasza manuelc hozzászólására (») Márc 21, 2017 /
 
Szia!

Ha jól értelmezem soraidat, akkor egy olyan kódzárat szeretnél létrehozni, ami két PIC közötti kommunikáció (kódátvitel) folyamatos meglétén alapul.

Ha a sejtésem jó, én ezt úgy oldanám meg, hogy az egyik PIC-et beépíteném egy sztereó jack dugóba. A dugó csatlakoztatásakor kapja meg a PIC a tápot, a harmadik láb pedig az adatvonal egy 1-Wire kommunikációhoz. A dugóban lévő eszköz a slave. A master eszköz folyamatosan küldi a slave felé az ébresztő jelet, amíg nem kap választ. Utána kérdezi le a kódot. Ha jó a kód, kapcsol. A kapcsolás egy rövid időzítőt indít, ami, ha lejár, visszazár. Közben újra és újra lekérdezi a kódot, és amíg a kód érkezik és jó, addig minden körben újraindítja az időzítőt. Viszont én erre a célra inkább a PIC10F320 vagy 322-es mc használnám mindkét oldalra.
(#) kissi válasza sonajkniz hozzászólására (») Márc 21, 2017 /
 
Esetleg annyi még, hogy érdemes egy hibalehetőséget is berakni pl. 3 hibás olvasás után zár, nehogy egy esetleges adattévesztés gondot okozzon, de ez a szám az átvitel minőségétől függ!
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 21, 2017 /
 
Idézet:
„Ha a sejtésem jó, én ezt úgy oldanám meg, hogy az egyik PIC-et beépíteném egy sztereó jack dugóba. A dugó csatlakoztatásakor kapja meg a PIC a tápot, a harmadik láb pedig az adatvonal egy 1-Wire kommunikációhoz.”

A Jack dugó a csatlakoztatásnál és a szétcsatlakoztatásnál rövid ideig hibásan kapcsolja a jeleket, esetlegesen rövidre is zárhatja azokat. Könnyel okozhat táp - föld zárlatot.

Miért nem egy RFID tag lesz a kontrollerből: Bővebben: Link ?

Hamár 1-Wire a kommunikáció, minek az első kontroller? Minden 1-Wire eszköz egy 64 bites egyedi azonosítóval rendelkezik.
A hozzászólás módosítva: Márc 21, 2017
(#) eSDi válasza c27 hozzászólására (») Márc 21, 2017 /
 
Szerintem itt "User error" lesz! Olyan nem létezik, hogy egy HW hiba a programmal vándorol az IC-k között. Milyen típusú PIC-ről van szó?
(#) c27 válasza eSDi hozzászólására (») Márc 21, 2017 /
 
18F4431. Nem a programmal vándorol teljesen más program és teljesen más környezetben. A korábbi hiba úgy 2 éve volt egy másik projektnél ráadásul azt nem is itthon csináltam. Akkor teljesen meghalt a D port.
A mostani pic saját, még nem teszteltem le külön a D portot, majd erre is sor kerül. Nem gondolnám, hogy a programírás során lett vele valami és félig hibás program került bele.
A hozzászólás módosítva: Márc 21, 2017
(#) eSDi válasza c27 hozzászólására (») Márc 21, 2017 /
 
Érdekes. A D porton van még egyéb periféria is, ráadásul konfigurálható. CONFIG bitek rendben vannak? A port írására, olvasására a LATx regisztert használod?
Fura, én még nem tudtam kinyírni egy egész portot. Még túlfesszel is csak egy-egy I/O-t sikerült.
(#) manuelc válasza Hp41C hozzászólására (») Márc 22, 2017 /
 
Inkább kontaktosan oldanám meg RFID helyett két mikrovezérlővel. A 1-wire jó ötlet, kulcsra gondolsz? Minél egyszerűbb megoldást kevés áramköri elemmel és stabil kommunikációt szeretnék, ezért gondoltam a két PIC-re. Nem jack dugóval csatlakozom, hanem d-sub/soros. Mi a véleményed?
(#) icserny válasza manuelc hozzászólására (») Márc 22, 2017 /
 
Idézet:
„A 1-wire jó ötlet, kulcsra gondolsz?”
Régen kitalták már ezt, iButton néven keress rá! Például: IButton az E-Bay kínálatában
(#) jpocok hozzászólása Márc 22, 2017 /
 
Sziasztok!
Inkább itt kérdezek, mert a mátrixos topikok AVR-es megoldásokat tartalmaznak.
Nem boldogulok a 74HC595 vezérlésével assembly-ben. Adott egy 8x48-as LED mátrix. Az oszlopokat (katódok) 6 darab 595-ös hajtja meg, természetesen ULN2803-as array-n keresztül. A sorokat (közös anód) a 16F628A kimenetei vezérlik, meghajtó tranzisztorokon át.
Az a lényeg, hogy az oszlopok (595-ös IC-k kimenetei) egyszerre legyenek aktívak és csak a sorokat léptetjük egymás után. Ezzel elérhető, hogy minden LED az idő 1/8-ban világítson.
Sehol sem találtam egy olyan egyszerű példát, hogy mondjuk két számot kiküldök az 595-re és azokat kijelzem. Ebből már ki tudnám fejleszteni a program többi részét, ha látnám az 595 SPI vezérlését.
Ha tudna valaki segíteni, azt előre is köszönöm! A PIC akár más típus is lehet, ha a program nem használ speciális funkciókat (tehát könnyű átírni 628-ra).
(#) ktamas66 válasza jpocok hozzászólására (») Márc 22, 2017 /
 
Valami bitbang-os megoldásra gondoltál? Bővebben: Link
(#) icserny válasza jpocok hozzászólására (») Márc 22, 2017 /
 
Itt található egy egyszerű példa. Ebben ugyan reléket vezérelnek, de a program szempontjából mindegy, hogy mikett kapcsoltatsz a kimeneten... Ha három 595 van sorbakötve, akkor értelemszerűen 24 bitet kell kiküldeni, mielőtt az összekötött SRLAT lábakat magasba emeled az adatok bekapuzásához (a shift regiszterből ekkor íródik át az adatregiszterbe az adat).

  1. #DEFINE SRCLK   PORTB,4     ; 74hc595 clock output
  2. #DEFINE SRDAT   PORTB,5     ; 74hc595 data output  
  3. #DEFINE SRLAT   PORTB,3     ; 74hc595 output latch
  4.  
  5. ;----------------------------------------------------------------------
  6. ;  set relays to match global variable "relay"            
  7. ;  8 bits are clocked out to 74hct595 and then strobed to output register
  8. ;----------------------------------------------------------------------
  9. set_relays
  10.         movlw   d'8'                ; 8 hi bits to shift out
  11.         movwf   sr_tmp
  12.     movf    relay,w
  13.     movwf   sr_sr           ; save a temp copy of relay image
  14.  
  15. sr_001
  16.         bcf         SRDAT               ; start with bit low
  17.         rlf     sr_sr,f             ; rotate bits through c
  18.         btfsc   STATUS,C
  19.         bsf         SRDAT           ; flip data if needed
  20.         nop
  21.  
  22.         bsf         SRCLK               ; strobe active rising edge
  23.         nop
  24.         bcf         SRCLK
  25.  
  26.         decfsz  sr_tmp,f
  27.         goto    sr_001              ; loop for rest of bits in byte    
  28.    
  29.         bsf         SRLAT               ; xfer data from sr to output latch
  30.         nop
  31.         bcf         SRLAT
  32.  
  33.         return
(#) jpocok válasza ktamas66 hozzászólására (») Márc 22, 2017 /
 
Köszönöm válaszodat! Ez a BitBang elsőre kicsit bonyolultnak tűnik, de azért át fogom nézni részletesen .
(#) jpocok válasza icserny hozzászólására (») Márc 22, 2017 /
 
Köszönöm szépen válaszodat! Ez valóban egyszerűnek tűnik. Amint lesz időm, beillesztem egy teljes programba és kipróbálom . Valószínűleg azért nem találtam meg ezt a leírást, mert én kimondottan a mátrixos megoldásokat kerestem.
(#) manuelc válasza icserny hozzászólására (») Márc 22, 2017 /
 
Igen, ismerem az iButtont, nem a kerék újrafeltalálása a cél
Nem ezt a kontaktos megoldást keresem, hanem inkább (D-sub) kontakttal fogom megoldani. Itt és itt például sok jó megoldás van 1-wire-re, én egyelőre maradok a javasolt PIC-nél ahol authentikálási folyamatot kell megtervezni, tudom.
(#) mrobi hozzászólása Márc 22, 2017 /
 
Sziasztok!
Hardver jellegű kérdésem lenne. Kell építenem egy olyan eszközt, ami egy villanymotort (230V) kapcsol egy előre beállított időközönként. A program megírása nem gond. Minél kisebb kivitelben kellene elkészíteni. Az volna a legjobb, ha egy 100x100mm-es kemény falú kötődobozban elférne. A motor kapcsolására kérnék valami ötletet. Gondolkoztam a szilárdtest relén, de sajnos nem tudom biztosítani, hogy a fázist szakítsa meg, mert dugvilla lesz az eszközön. Illetve hogy lehetne megoldani a tápellátást minél kisebb kivitelben? Előre is köszönöm a válaszokat!
(#) pajti2 válasza mrobi hozzászólására (») Márc 22, 2017 /
 
Szerintem nem ebben a topicban kellene villanymotor hajtáson filozni, de pár tippet persze adhatunk. A fázis megszakítására egyik lehetőség, hogy mind a két vonalat megszakítod. Vannak több kétutas kapcsolót tartalmazó relék is. A több utas kapcsolók arra jók, hogy miután a motor táp mindkét oldalán leválasztottad a hálózati feszt, rá tudj kapcsolni a motor kapcsaira egy ellenállást, ami gondoskodik a motor tekercsek energiájának a levezetéséről. Rövidre zárni éppenséggel nem tanácsos, inkább egy sok wattos 3..5 ohmos ellenállás a célszerű. Élettartam ápolási okokból csinálnak olyat: a külső ellenállás levezet valamennyi hőt, ami egyébként a motor belsejében a tekercseket fűtené szimpla rövidzárnál. A táplálással nem tudom, miért problémázol. Odavezetékezed villanyszerelő csokikon vagy akárhogyan a 230-at. Mi mást kellene ott "megoldani"? Nem különösebben érthető az a problémád.
(#) Pali79 válasza mrobi hozzászólására (») Márc 22, 2017 /
 
Ha nem túl nagy teljesítményű a motor akkor simán relével is megoldható. Vannak párszáz forintért 5V/230V-10A relék, ha elég ekkora áram.
Nem ismerem az SSR-eket, de egy adatlapot megnézve én nem láttam arra vonatkozó előárt, hogy csak a fázist szakíthatja meg (ha jól értettem a problémádat).
A hozzászólás módosítva: Márc 22, 2017
(#) gazspe hozzászólása Márc 23, 2017 /
 
Sziasztok! Pic kommunikációról szeretnék kérdezni két külön szériájú jószág között: lehetséges-e (én nem láttam problémáját, egyébként egy "fő" 16f628-ra menne egy/több pic10/12) egyáltalán; különböző órajellel, azonos baud rateval lehet e hajtani őket UART-tal; valamint mikor javasoltok ISP-t és/vagy I2P-t UART helyett?
Tegnap volt kezemben egy 15 kW-os háromfázisú relé, léteznek, opto-triac ki is hajtja egy pic lábról
A hozzászólás módosítva: Márc 23, 2017
Következő: »»   911 / 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