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   468 / 1211
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 12, 2013 /
 
Azért érezhettél némi morgást a válaszadók részéről, mert ha esetleg nem is vetted észre, párat beszóltál a napokban.
Mindenki csak információkat tud adni, amik alapján már tudsz kísérletezni. A példaprogramok minden esetben feltételezik, hogy alapjaiban azért ismered már a témát és csak annyi infót adnak át, ami a konkrét megvalósításhoz szükséges. Kihagyhatatlan a kísérletezés, de kell hozzá az, hogy alapvető információkat megszerezz, különben csak a "vak tyúk is talál szemet" módszer érvényesül. Ebben tudunk mi itt segíteni. Például a PWM esetében is azt magyaráztuk, hogy minden az időzítéseken múlik. Tehát 1-2 órajelciklus terjedelmében lényegtelen, hogy mikor indul a TMR2 és a CCP egymáshoz képest, de hosszabb időknél már nagyon nem. A Microchip példaprogramjai nem igazán kezdőknek készülnek, mi meg ebben a topicban igyekszünk az alapoktól magyarázni. Emiatt javasoltam, hogy nem érdemes összevetni, hiszen nem véletlenül mondunk olykor mást.
Mondjuk ettől még lehetsz szkeptikus, de ne túl hangosan, mert megbántod azokat, akik a te problémádra áldozzák az idejüket és a tudásukat.
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 12, 2013 /
 
Beszóltam volna? Tényleg sajnálom, ha ez jött le.
Tavasszal kezdtem el programozni, és sok mindent megtanultam a PIC példákon keresztül. Anno utoljára C64-et programoztam assemblyben. Aztán ennek a programnak az egyszerűbb változatát írtam meg, és az működött. Azoknak a program részleteknek a felhasználásával. Most vettem elő, hogy korszerűsítsem és belefutottam ebbe a nem kis bosszúságba. Ezen biztos mindenki átesik.
No, de szerencsére nem vagytok nagyon sértődékenyek és még tudunk itt diskurálni jókat!
Köszönöm még egyszer a segítséget!
A hozzászólás módosítva: Dec 12, 2013
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 12, 2013 /
 
Idézet:
„Ez egy klasszikus hiba, amit szerintem mindannyian elkövettünk már kezdő korunkban. Átmentél a Bank1-be, hogy megírd az eprom regisztereit, de a változóid a Bank0-ban vannak.”


Délután éppen autóztam és azon elmélkedtem, hogy a változók 0x20-tól vannak eltárolva, az meg a Bank0!
Áá, gondoltam, ez biztos nem lehet ekkora disznóság, hogy ettől menjen félre! És de!

Komolyan mondom, hogy még dörzsöltnek is kell lenni, mert simán lyukra fut az ember.
A hozzászólás módosítva: Dec 12, 2013
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 12, 2013 /
 
A bosszúságok 99%-a ezekből a pitiáner hibákból jön össze. Plusz még egy bit valami rejtelmes regiszterben, megcsúszott időzítés, a pic olykor igen sajátos logikája, rosszkor beeső watchdog, felcserélt c és s, ...
De hát ismered az assembly-t. Annyival rosszabb pic-et programozni, mint C64-et, hogy az utóbbiból nem volt ezer típus, ezerféle architekturával. Ezeknél a kis dögöknél meg állandóan pakolgatják a regisztereket meg a vezérlőbiteket.
A bankváltások miatt untam meg az assembly-t. Pl. egy 16F1947-nél a 32 db. banktól már eldobtam a szíjat. A fele programnál már azt sem tudtam hol járok.
Precízen csak assembly-ben lehet programozni, de előbb-utóbb unalmas lesz az 5 óra programozás, 50 óra hibakeresés, mint munkamódszer. C-ben, vagy Basic-ben te is megúsztad volna ezt a pár napi bosszúságot. (Igaz, azokban meg jön más.)
De mindjárt kivágnak innen fecsegésért.
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 12, 2013 /
 
Hibák kijavítva és minden tökéletesen működik. Köszönöm a segítséged és mindenki másnak is.
(#) Vacok válasza kissi hozzászólására (») Dec 14, 2013 /
 
Konkrétan ezen az oldalon még nem jártam, köszi a segítséget.
(#) Johnny0004 hozzászólása Dec 14, 2013 /
 
Üdv! 16F88-as PIC-nél meddig lehet lemenni a referencia feszültséggel? Adatlapjában nem találtam értéket (vagy nem vettem észre). Köszi!
A hozzászólás módosítva: Dec 14, 2013
(#) Hp41C válasza Johnny0004 hozzászólására (») Dec 14, 2013 /
 
2V -ig. Adatlap (DS30457C) 160. oldal A20 paraméter.
(#) Johnny0004 válasza Hp41C hozzászólására (») Dec 14, 2013 /
 
Hú ez melyik adatlap? Link? Nálam 0,8V a Vref., akkor hogy működik?
A hozzászólás módosítva: Dec 14, 2013
(#) icserny válasza Johnny0004 hozzászólására (») Dec 14, 2013 /
 
Ha PIC16F88 a szóbanforgás tárgya, akkor itt kell keresni az adatlapot.

TABLE 18-13: A/D CONVERTER CHARACTERISTICS: PIC16F87/88 (INDUSTRIAL, EXTENDED)
A20 VREF Reference Voltage (ez a VREF+ és VREF- különbsége): minimum 2.0 V
(DS30487D, page 188)
(#) Johnny0004 válasza icserny hozzászólására (») Dec 14, 2013 /
 
Itt néztem (rosszul ezek szerint). Köszi. Akkor mi van ha nálam 0,8V a Vref, és szépen mér? Vagy miért nem lehet ez alá menni?
(#) icserny válasza Johnny0004 hozzászólására (») Dec 14, 2013 /
 
Idézet:
„Akkor mi van ha nálam 0,8V a Vref, és szépen mér?”
Valószínűleg ott működik valahogyan, de már nem tudja a specifikációt.
(#) Johnny0004 válasza icserny hozzászólására (») Dec 14, 2013 /
 
Nem értem, mert nem "valahogyan" működik, hanem pontos, és egész 0,7V-ig jó. Létezik olyan PIC amelyiken lehet ilyen alacsony Vref.-et használni? Illetve létezik valamilyen megoldás magasabb referencia feszültséggel ilyen kis változást érzékelni, erősítés nélkül?
A hozzászólás módosítva: Dec 14, 2013
(#) Johnny0004 válasza Johnny0004 hozzászólására (») Dec 14, 2013 /
 
Még egy kérdés, pl. a PIC16f886-nál ezt írja az adatlap: Fixed 0.6 Vref. Ez akkor mire vonatkozik? Bocsánat, hogy fogalmam nincs erről, de eddig még külső referencia feszültséget nem használtam.
(#) Hp41C válasza Johnny0004 hozzászólására (») Dec 14, 2013 /
 
Az a 0.6V referencia inkább a komparátorokhoz van, de a kontroller tápfeszültségét is lehet vele mérni: Az A/D Vref+ legyen a Vdd, a Vref- pedig a Vss. Ekkor, ha megmérjük a 0.6V referenciát az eredmény 0.6V / Vdd * 1024 -lesz. Ebből meg lehet mondani, hogy mekkora a Vdd.
Az A/D átalakító pontossága (a 10 bites felbontás) nem garantált, ha a referencia feszültség kisebb, mint Vrefmin( 2V a 18F88 esetén).
(#) Johnny0004 válasza Hp41C hozzászólására (») Dec 14, 2013 /
 
Köszönöm!
(#) shaftee hozzászólása Dec 15, 2013 /
 
Sziasztok!
Assembly-ről mi a véleményetek? érdemes foglalkozni vele?
(#) Kovabe hozzászólása Dec 15, 2013 /
 
Sziasztok
Pic hiányában megakadtam, két picet szeretnék összekötni egy aktiv magas illetve alacsony kapcsolattal csak nem tudom hogy möködöképes az elképzelésem? A táp azonos.
A hozzászólás módosítva: Dec 15, 2013
(#) Pali79 válasza shaftee hozzászólására (») Dec 15, 2013 /
 
Sok kihegyezett profi program assemly-ben íródik. A Microchip is csak a 18-as családtól felfelé támogatja a C-t, alatta gyakorlatilag az összes adatlap assembly-re épül. A 16-os család utasításkészlete ha jól emlékszem 35 utasítás mindössze, elég sok az infó róla a neten. Egyszóval, szerintem igen érdemes ezzel kezdeni a tanulást (én is ezt teszem).
Olvastam valahol egy jópofa dolgot erről: "Amit nem lehet Pascal-ban megírni, azt C/C++-ban meg lehet. Amit nem lehet C/C++-ban megírni, azt Assembly-ben meg lehet. Amit nem lehet Assembly-ben megírni, az nem lehet megírni!"
A hozzászólás módosítva: Dec 15, 2013
(#) gaspar_zsolt válasza shaftee hozzászólására (») Dec 15, 2013 /
 
Igen!
(#) janimester válasza Prendick hozzászólására (») Dec 15, 2013 /
 
Ezer köszönet a tippért. Működött a dolog.
(#) eSDi hozzászólása Dec 16, 2013 /
 
Üdv!

Egy 18F1320-as PIC-ből szertnék kicsikarni hardveresen SPI-t (csak TX) a benne lévő EUSART segítségével, de nagyon nem akar össze jönni a "Synchronous Master
Mode" beállítása. Egy kijelzőnek küldené a parancsokat/adatokat, ami egy régebbi PIC MSSP moduljával gond nélkül működött is. A következőket állítottam be:
  1. SPBRG = 19 '100kHz CLK @ 8MHz'
  2. BAUDCTL.BRG16 = False
  3. BAUDCTL.SCKP = False
  4. TXSTA.BRGH = False
  5. TXSTA.SYNC = True
  6. TXSTA.CSRC = True
  7. TXSTA.SENDB = False
  8. TXSTA.TX9 = False
  9. RCSTA.SPEN = True
  10. TXSTA.TXEN = True

Ezután a TXREG feltöltését követően ki kellene, hogy menjen az adat, de akár hogy bűvölöm a kijelző nem akar normálisan működni. Vagy nem jelenik meg rajta semmi, vagy a tesztmód jön csak be. A fenti beállításokkal már a tesztmód sem hajlandó működni. Egyáltalán lehet ezzel az EUSART-al normális SPI-t összehozni?
(#) benjami válasza eSDi hozzászólására (») Dec 16, 2013 /
 
Azt ne felejtsd el, hogy az UART a legkisebb, az SPI a legnagyobb helyiértékű bittel kezdi a mondandóját, ezért fel kell cserélni a biteket.
(#) Prendick válasza eSDi hozzászólására (») Dec 16, 2013 /
 
Szia!
Ebben is csak olyan EUSART van, mint a többiben. Sok gond nem lehet vele. Az ember állandóan elfelejti az ADCON1-ben digitálisra állítania portokat (5:6 bit) és azt, hogy az EUSART az SPI-hez képest fordítva küldi a bájtot. Nem 7-től 0-ig, hanem 0-tól 7-ig.
(#) eSDi válasza Prendick hozzászólására (») Dec 16, 2013 /
 
Kösz!

De egy "AllDigital" utasítással kezdem a programot, ami minden analóg rész kikapcsol.
A bitek irányát pedig forgattam már ide is, oda is... Szoftveresen most próbáltam ki, azzal tök jól működik...
Annyit vettem észre, hogy szoftveresen a DATA és a CLK vonalak nyugalmi szintje 0. EUSART-al viszont a DATA nyugalmi szintje 1, a CLK polaritását azt tudom hardverből invertálni, de a DATA vonalat, már nem igazán. Megpróbálom negálni az adatot, hátha az lesz a megoldás.
(#) eSDi válasza Prendick hozzászólására (») Dec 16, 2013 /
 
Most egy tranyóval invertáltam a jelet és volt is egy kis félig zagyva kiírás, de többször nem sikerült előidéznem. Lehet megmaradok a szoftveres megoldásnál...
(#) Prendick válasza eSDi hozzászólására (») Dec 16, 2013 / 1
 
No igen, az EUSART logikája szerint 1 a pihenő szint. De a bitek nincsenek invertálva. Mivel legtöbbször asszinkron módban használjuk, arra készül, hogy start bittel indul, ami ugye 0. A szinkron módot meg csak úgy ráhúzták a rendszerre.
Az lehet a gond, hogy az SPI busznál a clock kicsit később indul, mint az adat, Az EUSART-nál meg szinkronban van.
Nem tudom, hogy az lcd-d milyen órajelet kér, de ha a szokásos Mode 0,0-t, akkor ahhoz fordítsd meg az órajelet. Így az órajel a data bit közepén produkál felfutó élt és az SPI slave mintát tud venni. Az SPI-nél igazából csak annyi a lényeg, hogy legyen egy trigger valahol a data közepén.

Ennél a trükknél lényegtelen, hogy milyen szinten volt nyugalomban a Tx. Nem biztos, hogy tuti megoldás (most találtam ki ), de jó esély van rá, hogy megy.
(#) Prendick válasza Prendick hozzászólására (») Dec 16, 2013 /
 
Ott bukhat meg az elképzelés, ha a slave órajelnek veszi azt, amikor az EUSART inicializál. Ezt is ki lehetne kerülni CS trükközéssel, de lehet, hogy tényleg jobban jársz a szoftveres módszerrel.
(#) eSDi válasza Prendick hozzászólására (») Dec 16, 2013 /
 
Ezt még kipróbálom, talán jó lesz. A kijelző az igazából egy Samsung 16x1-es VFD, de ez lényegtelen. Nem igazán SPI a protokolja, de eddig azzal működött minden gond nélkül.
A CLK magas szintről indul és a felfutó élre írja be az adatot.
(#) eSDi válasza Prendick hozzászólására (») Dec 16, 2013 /
 
Volt egy sanda előérzetem mikor ezt a PIC-et raktam be a megrendelőbe, hogy ezzel még lesz bajom. De hát akkor még a fene tudta, volt egy kis szünet ami alatt a fiókban pihent...
A hozzászólás módosítva: Dec 16, 2013
Következő: »»   468 / 1211
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