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   516 / 1216
(#) Hp41C válasza zolek hozzászólására (») Ápr 20, 2014 /
 
Ez egy Basic program, nevezd át .bas -ra. Egy Basic fordítóval kellene próbálkozni.
(#) zolek válasza Hp41C hozzászólására (») Ápr 20, 2014 /
 
Köszi. MikroBasic le s fordította, de a bas elé még az m kellet (mbas).
Kellemes húsvéti ünnepet
(#) progee hozzászólása Ápr 21, 2014 /
 
Sziasztok!

Egy érdekes jelenségen nem tudok túllendülni.
Készítettem egy 16F886-os áramkört LCD kijelzővel, mely az órát is megjeleníti.
A PIC párhuzamosan kap tápellátást hálózatról és egy elemről, az LCD viszont csak hálózatról.
Ha a tápellátás megszűnik, akkor az elemről megy tovább a mikrokontoller, és azonnal alvó üzemmódba kapcsolja magát. Ekkor az LCD tápellátása megszűnik, és azt várnám, hogy teljesen kikapcsoljon.
Ezzel szemben halványan kezd világítani tovább, és a vdd lábán 3-4 volt körüli feszültséget mérek.
Mi okozzhatja ezt, és mit lehet tenni ellene?
(#) vicsys válasza progee hozzászólására (») Ápr 21, 2014 /
 
Valami kapcsrajzot tegyél fel, mert nem tiszta, hogyan különül el az elem az LCD-től...
(#) progee válasza vicsys hozzászólására (») Ápr 21, 2014 /
 
Ha a tápfeszültség mérésénél a PIC 2V-tól kisebb feszültséget talál, akkor kiadja a sleep utasítást.

(Nem tölti fel az 500kb-os bmp-t az oldal)
A hozzászólás módosítva: Ápr 21, 2014
(#) progee hozzászólása Ápr 21, 2014 /
 
felraktam egy fájlmegosztóra: 16f886 kapcsolás.bmp
(#) zenetom válasza progee hozzászólására (») Ápr 21, 2014 /
 
Szia!
Folyamatosan küldi az adatot a PIC az LCD-nek, szünet nélkül?
Ha kiveszed a D4-et, akkor is csinálja?
(#) progee válasza zenetom hozzászólására (») Ápr 21, 2014 /
 
A D4 üzem közbeni eltávolításánál nincs változás. Megmarad a halvány fény, viszont műszerrel végigmértem az összes PIC-ről LCD-re menő vezetéket, és a D6-D7-nél találtam 5V-ot.
Ha ezeket kihúzom, akkor kikapcsol az LCD.
Már többször ellenőriztem és nem találok hibát a bekötésben.
Szoftveresen kellene még valami utasítást kiadni sleep előtt? Próbálkoztam mikropascalban meghívni a Lcd_Cmd(_LCD_TURN_OFF); parancsot, de változatlan maradt az eredmény.
Egyáltalán hogyan kerül vissza feszültség a D6-D7-ről a VDD-re?
A hozzászólás módosítva: Ápr 21, 2014
(#) vicsys válasza progee hozzászólására (») Ápr 21, 2014 /
 
Egy tranyóval kapcsold ki/be az LCD kontrasztjának a testpontját. Hasonlóan oldottam meg az előfokomnál.
(#) zenetom válasza progee hozzászólására (») Ápr 21, 2014 /
 
Akkor gondolom a D6 és D7 vonalon mivel magas szint van (mivel a PIC adja ki, lehet hogy a szubrutin sajátossága), az kerül be az LCD tápáramkörébe. Próbáld meg, hogy sleep előtt 0-t adsz ki a D6 és D7-re (ha jól látom, RC6, RC7).
(#) progee válasza zenetom hozzászólására (») Ápr 21, 2014 /
 
Kontraszt leválasztása sem segítene tranyóval, mert ha az összes lábát lehúzom és visszadugom, akkor is világít tovább.

A lábak alacsony szintre állításával próbálkozok épp szoftveresen, eddig nulla sikerrel.
(#) vicsys válasza progee hozzászólására (») Ápr 21, 2014 /
 
De miért alacsony szint? Miért nem lebegő- ha már egyszer telepes táplálás...
(#) eSDi válasza progee hozzászólására (») Ápr 21, 2014 /
 
Idézet:
„Egyáltalán hogyan kerül vissza feszültség a D6-D7-ről a VDD-re?”


Üdv!

Épp most méregettem egy LCD-t, nálam 4bites módban van és a szabadon lévő lábakon a tápfeszültséget mértem. Valószínüleg az LCD elektronikája is tartalmaz felhúzó ellenállásokat, amin keresztül vissza tud jutni a tápfesz.
(#) progee válasza zenetom hozzászólására (») Ápr 21, 2014 /
 
Na sikerült megoldanom, de akkor sem értem miért így kell.
sleep előtt nullázok három kimenetet:

  1. portc.2 := 0;
  2. portc.6 := 0;
  3. portc.7 := 0;
  4. alszik := true;
  5. sleep;


majd amikor felébred újrainicializálom az LCD-t.

  1. If alszik then
  2. begin
  3.   alszik := false;
  4.   Init_LCD;
  5. end;
A hozzászólás módosítva: Ápr 21, 2014
(#) zenetom válasza progee hozzászólására (») Ápr 21, 2014 /
 
A micropascal LCD kezeléses makrója valószínűleg magas szinten hagyja ezeket a portlábakat.
(#) silent15 hozzászólása Ápr 21, 2014 /
 
Sziasztok, st7920 kontrollerhez keresnék makrókönyvtárat, lehetőleg PIC-C CCS C fordítóhoz.. Valaki tudna küldeni?
Köszönöm!
(#) vilmosd válasza silent15 hozzászólására (») Ápr 21, 2014 /
 
(#) Pet91 hozzászólása Ápr 22, 2014 /
 
Hello!

szeretnék egy pollingos SPI kommunikációt írni 16f690-el, találtam eg példát ami 24f-re lett írva, de rögtön teljesen ismeretlen parancsokra leltem, amin a google sem segített sokat. Valaki tud segíteni hogy honnan tudok meg ezekről többet? esetleg tudtok segíteni értelmezni? (mármint értem a kommentet ami mögöttük van, de hogyan kell ezt 16f690-el?)

  1. void SPIInit()
  2. {
  3.         // Configure Pins
  4.         TRISBbits.TRISB9 = 0;                   // RB9 Output
  5.         RPOR4bits.RP9R = 8;                             // Set RP9 as SPI1 Clock
  6.        
  7.         TRISBbits.TRISB8 = 0;                   // RB8 Output
  8.         RPOR4bits.RP8R = 7;                             // Set RP8 as SPI1 Serial Data Out
  9.        
  10.         TRISBbits.TRISB7 = 1;                   // RB7 Input
  11.         RPINR20bits.SDI1R = 7;                  // Set RP7 as SPI1 Serial Data In
  12.        
  13.         TRISBbits.TRISB10 = 0;                  // RB10 Output for SS
  14.         ODCBbits.ODB10 = 0;
  15.        
  16.         // Set Config Registers
  17.         SPI1CON1bits.DISSCK = 0;                // Internal SPI clock is enabled
  18.         SPI1CON1bits.DISSDO = 0;                // SDO1 pin is controlled by the module
  19.         SPI1CON1bits.MODE16 = 1;                // Communication is word-wide (16 bits)
  20.         SPI1CON1bits.SMP = 1;                   // Input data sampled at end of data output time
  21.         SPI1CON1bits.CKE = 1;                   // Serial output data changes on transition from active clock state to Idle clock state
  22.         SPI1CON1bits.SSEN = 0;                  // SS1 pin not used by module; pin controlled by port function
  23.         SPI1CON1bits.CKP = 0;                   // Idle state for clock is a low level; active state is a high level
  24.         SPI1CON1bits.MSTEN = 1;                 // Master mode
  25.         SPI1CON1bits.SPRE = 0b111;              // Secondary prescale is 1:1
  26.         SPI1CON1bits.PPRE = 0b01;               // Primary prescale is 16:1
  27.        
  28.         SPI1CON2 = 0x0000;                              // Framed support disabled
  29.        
  30.         SPI1STATbits.SPIEN = 1;                 // Enable SPI1
  31. }

(Bővebben: Link)
az ilyenek az ismeretlenek mint:
RPOR4bits.RP9R google is csak 24f-es dolgokat ad rá- ez valami pic specifikus parancs?
meg minden ami SPI1CON-al kezdődik az hatalmas homály.
A hozzászólás módosítva: Ápr 22, 2014
(#) Hp41C válasza Pet91 hozzászólására (») Ápr 22, 2014 /
 
Keress inkább 16F -ekre való mintapéldát.
(#) Pet91 válasza Hp41C hozzászólására (») Ápr 22, 2014 /
 
találtam itt: Bővebben: Link
itt a doksiban már szerepelnek ilyenek hogy SSPSTAT, SSPCON tehát ez rendben van, és kb világos hogyan kéne használni, viszont szerintem ez a hardware-es portot használja, nem?

az előző is gyanúsan rövid ahhoz h tisztán software-es legyen, pedig a szerzője azt írja hogy az (a kód alatti bővebben linknél)
(#) Hp41C válasza Pet91 hozzászólására (») Ápr 22, 2014 /
 
Ezek a programok az (M)SSI modult használják. Így keresd
(#) Pet91 válasza Hp41C hozzászólására (») Ápr 22, 2014 /
 
rendben, nagyon köszönöm. még annyi lenne a kérdésem, hogy látszólag a fenti programokban van egy puffer ahová az elküldendő 8 bites egységet bemásolom, és ahová a fogadott 8 bites üzenet megérkezik.
a Wikipedia szerint a bit banging-nél bitenként kell elküldeni az adatokat, és az órát is nekem kell állítgatni. ezek szerint ezt a feladatot valaki a fenti esetekben ellátja. gondolom nem a fordító ilyen okos, hiszen ezek az elnevezések a 16f690 dokumentációjában is szerepelnek, tehát előre definiált változóról van szó. de akkor nem ezt nevezzük hardveres SPI-nek?
(#) Hp41C válasza Pet91 hozzászólására (») Ápr 22, 2014 /
 
Egy külön modul van a feladatra, az SSI vagy MSSI. Ez a modul elvégzi a párhuzamos - soros átvalakítást adásnál és a soros - párhuzamos átalakítást vételnél. Nézd meg az adatlapot.
(#) Pet91 válasza Hp41C hozzászólására (») Ápr 22, 2014 /
 
igen, nézegettem.
de akkor ezek a programok mégse bit banging-et használnak, hanem a modullal végeztetik el a piszkos munkát. vagy teljesen keverem a fogalmakat?
íme amit én kihámoztam abból amit eddig a fórumokon olvastam, kérlek javíts ki ha nem így van:
2 féle SPI megvalósítás van:
a) a hardware-es, amikor csak odaadom a byte-ot és az átküldi, tehát az SSI modul használata
b) a software-es avagy bit banging, mikor pedig bármely szabad portot használhatom a művelethez, mert úgyis én írom meg az őket mozgató programot.

lehet hogy keverem a dolgokat, de Te a fenti programokról azt mondtad, hogy bit bangingesek, és ez teljesen megzavart... hogy is van ez?
(#) Hp41C válasza Pet91 hozzászólására (») Ápr 22, 2014 /
 
Ezt a hozzászólást azért írtam, mert az általad belinkelt megoldások az (M)SSI -t használták.
A Bit-banged verzió kezeli a portot programból.
2 féle SPI megvalósítás van:
a) a hardware-es, amikor csak odaadom a byte-ot és az átküldi, tehát az SSI modul használata. Meg kell várni, amíg az illesztő elküldi és jelzi, hogy mehet a következő adat.
b) a software-es avagy bit-banging, mikor pedig bármely szabad portot használhatom a művelethez, mert úgyis én írom meg az őket mozgató programot. A program határozza meg az időzítést is.
(#) Pet91 válasza Hp41C hozzászólására (») Ápr 22, 2014 /
 
oh, értem, akkor én értettem félre, már tiszta minden, köszönöm

Moderálási kérelmedre való tekintettel. Aha! Értem! Akkor én értettem félre, de már tiszta minden. Köszönöm.
A hozzászólás módosítva: Ápr 22, 2014
(#) KaiserA hozzászólása Ápr 23, 2014 /
 
Sziasztok!
Azt szeretném megkérdezni, hogy egy PIC32MX440f kontrollerle, hogyan kell bekötni egy LCD kijelzőt.
PIC:PIC32MX440f
az LCD: LCD
Az a kérdésem hogy a 7-14 lábig bármlyik portra köthetem, csak az lcd.c fájlban kell átírni vmit? vagy hogy működik ez? és az RS, R/W és E lábakat hova kellene kötni?

Köszönöm szépen
Adrián
(#) NyariG válasza KaiserA hozzászólására (») Ápr 23, 2014 /
 
Mindegyik lábat oda kötöd ahova akarod, csak hát ugye utána ugy kell programozni.
az RS,R/W,E labakat is ugyan ugy kell bekötni mint a többit.
Bár az R/W-t nem feltétlenül kell simán kötheted a gnd-re ha csak irni akarsz a kijelzöre.


Bővebben: Link
(#) usane válasza KaiserA hozzászólására (») Ápr 23, 2014 /
 
NyariG kolléga által posztolt google keresés első két eredménye icsernyi oldala, ott a programozásáról is kapsz infót bőven magyarul, de rengeteg oldal van a neten ami az alfanumerikus LCD-kről szól.
A hozzászólás módosítva: Ápr 23, 2014
(#) KaiserA hozzászólása Ápr 23, 2014 /
 
Köszönöm a segítséget!
Következő: »»   516 / 1216
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