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   699 / 1208
(#) Balagemann2031 válasza Balagemann2031 hozzászólására (») Aug 21, 2015 /
 
A hardveres problémát kizárnám, mivel ha nem PWM módban használom a lábat, csak ki be kapcsolom, akkor tökéletesen működik, tehát valami a programmal van, de mára már kezdek belefáradni..
(#) Bakman válasza Balagemann2031 hozzászólására (») Aug 22, 2015 /
 
A tranzisztor felöli oldara gondoltam. Ha jól látom, a kollektor közvetlen a tápfesz.-re van kötve, az emitter pedig a "kimenet".
A hozzászólás módosítva: Aug 22, 2015
(#) sonajkniz válasza benjami hozzászólására (») Aug 22, 2015 /
 
Szia!
Csak most jutottam számítógép közelébe.
Úgy tűnik, Pali79 rossz topikban tette fel a kérdését. Biztosan szuper, amit csináltál, de sajna én is, és ő is kizárólag assemblyben progizunk, ezért amit feltöltöttél, számunkra nem mond semmit.
Viszont a hozzáállásod dicséretes. Jár a pozitív.
(#) Balagemann2031 válasza Bakman hozzászólására (») Aug 22, 2015 /
 
Jogos, igazad van! Viszont rájöttem, hogy a PIC PWM lábai nincsenek OD-re állítva, pedig úgy konfigurálom.
(#) proli007 válasza Balagemann2031 hozzászólására (») Aug 22, 2015 /
 
Hello! Ha az optot így hajtod vele, működés szempontjából és áramkörileg teljesen mindegy hogy mire van állítva a kimenet. (Csak nagy-impedanciásra ne legyen.)
(#) lóri hozzászólása Aug 22, 2015 /
 
Sziasztok!

Szeretnék csinálni egy riasztót, és a portláb védelemmel kapcsolatban lenne kérdésem.
Amit láttok a mellékletben, azt ajánlották. Az egyik a portlábat védi, a másik a supressort kíméli, míg ki nem nyit. Az ellenállások milyen értékűek legyenek? Úgy csinálnám, hogy A/D-vel figyelném a hurokfeszültséget. De, ha van jobb ötlet, szívesen venném.

Üdv:L.
(#) Pali79 válasza lóri hozzászólására (») Aug 22, 2015 /
 
Szia!
A kábelhibát (zárlat, szakadás) is akarod figyelni?
(#) lóri válasza Pali79 hozzászólására (») Aug 22, 2015 /
 
Igen, szeretném. Akkor nem jó így?
(#) lóri válasza lóri hozzászólására (») Aug 22, 2015 /
 
Esetleg a koboldosat egészítsem ki a supressorral? ez Most nézem, a jumper azért lenne, hogy a nem használt zónát kikapcsoljam. De mivel van felhúzóellenállás, akkor nem kell?
A hozzászólás módosítva: Aug 22, 2015
(#) lóri válasza lóri hozzászólására (») Aug 22, 2015 /
 
Mondjuk a zárlat kimutatható, mert akkor nagyobb áram fog folyni, mintha a lezáróellenálláson
keresztül folyna. A szakadásnál nem tudom mi van, mert ugye nyitott a vég. Esetleg a supressornak van valami ellenállása, és az azon eső feszültség / folyó áram lehet mérvadó. Vagy a supressorral párhuzamosan egy ellenállás.
(#) killbill válasza lóri hozzászólására (») Aug 22, 2015 / 1
 
Ezt a kerdest az "Elektronikaban kezdők kérdései" topikban kellene feltenned, szerintem. Ohm torvénye oda tartozik
(#) Balagemann2031 válasza proli007 hozzászólására (») Aug 22, 2015 /
 
Szia! Igen, rájöttem hogy zsákutca, közben már elkezdtem átépíteni ULN2804A-meghajtóval!
(#) ktamas66 válasza sonajkniz hozzászólására (») Aug 22, 2015 /
 
Csak kíváncsiságból kipróbáltam mindkettőt. Hp41C megoldása rövidebb kódot ad és alacsonyabb értékeknél gyorsabb, az előre osztás magasabb kijelezendő értékeknél kifizetődik, de hosszabb a kód. Gondolom az LCD kiíró rutin gyakorlatilag eltünteti a sebességkülönbséget. Csak a sim-ben nézegettem remélem jól gondolkodtam.
Csak azét nem illesztettem be kódként, mert nem tudom mit kellene elkövetni, hogy ne dupla soremelésekkel rakja be.

LCD_vonal.txt
    
(#) Pali79 válasza ktamas66 hozzászólására (») Aug 22, 2015 /
 
Ez 42 vonásra van csinálva? Később kipróbálom élőben.
(#) Pali79 válasza ktamas66 hozzászólására (») Aug 22, 2015 /
 
Én 16F877A -val dolgozom jelenleg, az nem ismeri az lsrf utasítást.
(#) ktamas66 válasza Pali79 hozzászólására (») Aug 22, 2015 /
 
Helyettesítheted
  1. bcf   STATUS, C
  2. rrf   EGESZ, f
utasítással. Ezzel lehet el is veszik az előnye, mert kb. 5-6 utasítás volt a különbség hol az egyik, hol a másik javára. Most csak kézzel gépeltem be, így is dupla sort emel.
És mégsem, csak az előnézetben csinálja .
A hozzászólás módosítva: Aug 22, 2015
(#) Pali79 válasza ktamas66 hozzászólására (») Aug 23, 2015 /
 
Nos, az életben az a helyzet, hogy nagyon nem egyenértékű a két dolog egymással. Egy MP3 lejátszóval teszteltem a két programot.
Hp41C féle megoldással teljes hangerőn kb a kijelző feléig mennek ki a vonások.
ktamas66 féle megoldással már minimális hangerőnél is, olyan "nagy" lesz a kijelzendő érték, hogy még az L:, R: kijelzést is eltünteti és csak a vonalak látszanak a kijelzőn.

Szóval egyik megoldás sem 100%, de gondolatébresztőnek nagyon jó.
(#) sonajkniz válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Bemenetre poti, és beállítod a kívánt jelszintet!
(#) zamatőr hozzászólása Aug 23, 2015 /
 
Sziasztok!
Megépítettem ezt a kapcsolást pirossal jelzett módosítással .Jól működik de áramszünet után az óra ott folytatja ahol megszakadt.Áramszünetkor látszik a kijelzőn a szövegben 12:23:39 de 12:23:00 indul amikor visszajön az áram (háttérvilágítás nincs csak hálózati üzemben) .
Bővebben: Link eredeti
Kérlek segítsetek. Köszönöm.
A hozzászólás módosítva: Aug 23, 2015

RVTG.JPG
    
(#) Pali79 válasza sonajkniz hozzászólására (») Aug 23, 2015 /
 
Valami nem jó, mert hiába teszek be potit, vagy akár húzom GND-re az analóg lábat, akkor is már indulásnál kiakad az egész.
(#) matheattila válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Jól van konfigurálva az ADC? Ha lehúzod GND-re akkor nem kellene kiakadjon, mert folyamatos 0-t kellene olvasson... Esetleg nem lehet hogy a kijelző éppen fordítva ábrázolja a dolgokat? Csak mert írtad, hogy minimális hangerőnél is teljesen ki van vezérelve...
Kezdetnek inkább próbáld meg csak kiiratni az ADC értékét a kijelzőre amit vagy 0/5V-ra kapcsolsz, vagy potméterrel állítod 0-5V között (sima egyen feszültséget nem audió jelet).
Apropó, ha csak simán rákapcsoltad az audió jelet az ADC-re az csak úgy magában nem lesz jó, mert az váltakozó feszültség, ki kellene vonni belőle az offszetet és csak a különbséget mérni szerintem (ez csak egy tipp nem készítettem még kivezérlésmérőt).
A hozzászólás módosítva: Aug 23, 2015
(#) Pali79 válasza matheattila hozzászólására (») Aug 23, 2015 /
 
Ezen már túl vagyok, először sima potival teszteltem a kijelzést. Később még megnézem debug módban is, úgy talán többet látok.
(#) matheattila válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Ha úgy gondolod, hogy az ADC rendben van akkor teszteld a másik részt, a kijelzést.
Szimuláld az ADC értékét, folyamatosan meghatározott időközönként növeld azt a változót ami az ADC értékét tárolná, amit a kijelzésnél vizsgálsz (tehát nem az ADC regisztert hanem egy sima változót). Úgy állítsd be hogy pl öt másodpercenként vezérelje ki teljesen a kijelzőt (5 másodperc alatt menjen fel max-ig a nulláról) ami azt jelentené hogy pl a 8 bites szimulált ADC tartalmát kb 20ms-onként kell növelni (0-255 esetén) és ha jól emlékszem akkor talán 42 vonalkát kellene kiírjon ez idő alatt amit 120ms / vonalka.
Természetesen mikor eléri a maximumot akkor nullázod a változót (vagy amúgy is nullázodik ha túlcsordul). Ha nem úgy működik ahogy elvárnád akkor a kijelző algoritmus a ludas, ha viszont működik akkor az ADC vagy a kettő közötti kapcsolatnál csúszik el valami.
Arra azért vigyázz hogy minden olyan változó amit megszakítás is használ az legyen "volatile" is különben nem az történik amire várnál
(#) killbill válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Idézet:
„Szóval egyik megoldás sem 100%, de gondolatébresztőnek nagyon jó.”
Éppen itt az ideje a dolgon elgondolkodni... Végülis egy feladat megoldásához általában ez a kulcs. Amíg mások gondolkodnak helyetted, de te nem érted, hogy ők mit csinálnak, addig nem fogod tudni megoldani.
A hozzászólás módosítva: Aug 23, 2015
(#) ktamas66 válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Szándékaim szerint az ADAT-ban egy 0-42 szám van. Tesztelheted egy sima ciklussal, ami csak ezt a számot növeli és csökkenti.
(#) Pali79 válasza matheattila hozzászólására (») Aug 23, 2015 /
 
Kiderült a turpisság! Lásd lentebb.
(#) Pali79 válasza killbill hozzászólására (») Aug 23, 2015 /
 
Hát nagyon köszönöm kioktató és degradáló szavaidat! Nyilván tejesen tisztában vagy az előzményekkel, amiből ennyire vágod, hogy én mástól várom a teljes megoldást. Azért az, hogy ktamas66 is elgondolkodott a dolgon és leszimulálta mindkét megoldást, nekem azt mutatja, hogy a tapasztaltabbaknak is szöget ütött a fejébe a probléma és annak megoldása.
(#) Pali79 válasza ktamas66 hozzászólására (») Aug 23, 2015 /
 
Nos, a gond abból fakad, ha az ADRESH < 3. Ilyenkor az osztást szépen végigcsinálja, de a CIKL1 rész elején kivon 3-at az értékből, ami így túlcsordul és az ADAT regiszter értéke 255 lesz.
(#) Pali79 válasza ktamas66 hozzászólására (») Aug 23, 2015 /
 
Új fejlemény: hárommal való osztást használsz, de a 255:3 sokkal több mint 42. Ezért akad ki folyton. Nem értem a logikát, hogy miként lesz ebből 0-42 közti érték.
(#) ktamas66 válasza Pali79 hozzászólására (») Aug 23, 2015 /
 
Az ADAT változóban már egy 0-42 számnak kell szerepelnie. A kijelzés annyi vonalat rak ki, amennyi ebben van.
Ha 0-255 számod van esetleg:
  1. movlw   .254
  2.         movwf   ADAT    ; amivel tesztel
  3.  
  4.         movf    ADAT, w
  5.         lsrf    ADAT, f
  6.         lsrf    ADAT, f
  7.         addwf   ADAT, f
  8.         rrf             ADAT, f
  9.         lsrf    ADAT, f
  10.         addwf   ADAT, f
  11.         rrf             ADAT, f
  12.         lsrf    ADAT, f
  13.         lsrf    ADAT, f
  14.         skpnc            ;ha nincs carry (kerekítés miatt)
  15.         incf    ADAT, f  ;itt leosztom a 255-öt 42-re
  16.        
  17.         movfw   ADAT
  18.         movwf   EGESZ
  19.         movlw   .14
  20.         movwf   KAR_SZAM
  21. ;3 osztás max. egyet téved, de a maradékkiírásnál korrigálja
  22.         movf    EGESZ, w
  23.         lsrf    EGESZ, f
  24.         lsrf    EGESZ, f
  25.         addwf   EGESZ, f
  26.         rrf             EGESZ, f
  27.         lsrf    EGESZ, f
  28.         addwf   EGESZ, f
  29.         rrf             EGESZ, f
  30.         lsrf    EGESZ, f
  31. ;első ciklus
  32.         btfsc   STATUS,Z
  33.         goto    NINCS_CIKL1
  34. CIKL1
  35.         movlw   03                      ;3 vonal
  36.         subwf   ADAT, f
  37.         nop     ;call   LCDDATA
  38.         decf    KAR_SZAM
  39.         decfsz  EGESZ
  40.         goto    CIKL1
  41. NINCS_CIKL1
  42.         movfw   ADAT            ;maradék 00 üres karakter 01 egyvonal 02 kétvonal 03 háromvonal
  43.         nop     ;call   LCDDATA
  44.         decfsz  KAR_SZAM
  45.         goto    INNEN_URES
  46.         goto    VEGE
  47. INNEN_URES
  48.         movlw   00                      ;0 vonal
  49.         nop     ;call   LCDDATA
  50.         decfsz  KAR_SZAM
  51.         goto    INNEN_URES
  52. VEGE
  53.         nop
  54.         goto    VEGE
A hozzászólás módosítva: Aug 23, 2015
Következő: »»   699 / 1208
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