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   878 / 1210
(#) don_peter válasza Zsora hozzászólására (») Nov 22, 2016 /
 
Értéket tudom ennél növelni?
  1. cikl:   subq.l     #1,d0

A linkelt részél kell csak a #1-et állítanom nagyobbra?
Mert gondolom az lesz a ciklus szám.

Közben látom, hogy ezt kell módosítani:
  1. kezd:   move.l     #380000,d0
A hozzászólás módosítva: Nov 22, 2016
(#) Zsora válasza don_peter hozzászólására (») Nov 22, 2016 / 1
 
Véletlenül elírtam az értéket. javítottam.
A kezd sorban adom meg a ciklusok számát, a cikl sorban a változót csökkentem 1-gyel.
(A D0 adatregiszterbe betöltöm a ciklusok számát, majd csökkentem 1-gyel, és ha nem 0, akkor ugrok vissza újra csökkenteni - addig amíg el nem éri azt.)
A hozzászólás módosítva: Nov 22, 2016
(#) ativagyok hozzászólása Nov 22, 2016 /
 
Sziasztok!
Lehetséges egy PIC16F1938-as típusú mikrovezérlővel két különböző frekvenciájú PWM-et előállítani egy időben?
Az adatlapban látok lehetőséget arra, hogy meghatározzuk, hogy melyik Timer-t használja a CCP modul, de nem tudom hogy lehetséges-e két különböző CCP modulhoz külön Timert választani egy időben.
Előre is köszönöm.
(#) don_peter válasza Zsora hozzászólására (») Nov 22, 2016 /
 
Nagyon köszi, nagyon sokat segítettél.
Majd mutatom az eredményt.

A 68K program feltöltését már megírtam PIC-re, frankón működik.
Még a program módosítását kell megírnom, hogy feltöltés előtt a PIC elvégezze a szükséges módosításokat a 68K programjában és akkor minden a helyére kerül.
Marha jó kis projekt ez, de lassan a végére érek... (végre)
(#) Pali79 válasza ativagyok hozzászólására (») Nov 22, 2016 /
 
Nem olvastam teljesen végig, de szerintem lehet mert 3 Timert és 3 PR regisztrer közül lehet választani a beállítások során, ezek alapján szerintem ha más időalapot tudsz neki választani akkor nyert ügyed van.
(#) Zsora válasza don_peter hozzászólására (») Nov 22, 2016 /
 
Szívesen!
Ha sokat foglalkozol a Segával ill. a Motorola MC68000 procival, akkor nem árt ha ismerkedsz az alábbi doksikkal:
MC68000UM és M68000PRM
(#) don_peter válasza Zsora hozzászólására (») Nov 22, 2016 /
 
Elég sokat foglalkozom vele, de az Assembly nyelv .... már nézegetem, de kicsit kusza.., lényeg ami a lényeg Rajta vagyok.

És ahogyan ígértem, csatoltam pár képet.
A képen a hardver látszik ahogyan feltölti a memóriába az adatokat, amikor azt a sort írja, hogy "Hardver update" no akkor módosítja a 68K programját és tölti fel szintén a memóriába.
A további 2 képen pedig azt látod, hogy a késleltetés után kiírja a feltöltött játékok címeit.
(#) kriszrap hozzászólása Nov 24, 2016 /
 
Sziasztok
Hogyan lehetne egy spectrum analizert megírni progiba és kell e pic elég valami erösités vagy csúcsegyenírányitás......stb????
4mhz kristály elég szerintetek???
(#) siemenstaurus válasza icserny hozzászólására (») Nov 24, 2016 /
 
kissi, Elektro.on, icserny

Köszönöm! Működik.
Ha valaki a jövőben rákeresne ugyan erre, a beállítások PIC18F14K50 RA4 I/O port.

  1. #include <p18f14k50.h>
  2. #include <delays.h>
  3. #pragma config LVP = OFF
  4. #pragma config WDTEN = OFF
  5. #pragma config MCLRE = OFF
  6. #pragma config FOSC=IRC
  7.  
  8. main ()
  9. {      
  10.                 TRISC = 0b00000000;               // PORTC összes kimenet
  11.                 ANSELH = 0;
  12.                 ANSEL = 0;
  13.                 LATC=0b00000000;
  14.                 ANSELbits.ANS3=0;
  15.                 TRISA=0b11101111;   //PORTA bemenet RA4 kimenet
  16. while(1)
  17. {}
  18. }
A hozzászólás módosítva: Nov 24, 2016
(#) cross51 válasza kriszrap hozzászólására (») Nov 24, 2016 / 1
 
Digitális spektrum analizátort FFT-vel szoktak csinálni, egyszerűbb lehet az MSGEQ7-el, amiről cikk is íródott.
A hozzászólás módosítva: Nov 24, 2016
(#) kriszrap válasza cross51 hozzászólására (») Nov 24, 2016 /
 
Kösszii
A hozzászólás módosítva: Nov 24, 2016
(#) Bakman hozzászólása Nov 25, 2016 /
 
Estét!

23LCV512 (64 kByte SRAM)

Bekapcsoláskor a RAM terület véletlenszerű adattal "töltődik" fel, ez rendben is van. Ami érdekes, hogy kikapcsolás után 15 percig biztosan megmarad a tartalom ha a próbapanelhez nem érek hozzá. Nyílván nem néztem át a teljes területet, csak az első 150 byte-ot. Az elemes memóriatartás nincs használva, adatlap szerint GND-re kötve a Vbat láb. 20 perc után már van eltérés az eredeti adathoz képest, de nem számottevő, kb. minden huszadik byte változik meg és a probléma itt kezdődik.

Az lenne jó, ha minden kikapcsolás után a RAM tartalma törlődne. Hogyan lehet ezt elérni? Próbáltam már minden lábat GND-re/+5V-ra húzni 10 kOhm-mal, kb. semmi használható eredmény. Hogyan tovább?
(#) kissi válasza Bakman hozzászólására (») Nov 25, 2016 /
 
Ha az a fontos, hogy törlődjön, akkor vagy kikapcsolás előtt vagy bekapcsolás után töröld le ( lehetőségtől, feladattól függően !) ! Ebben mi akadályoz meg ?!
(#) Bakman válasza kissi hozzászólására (») Nov 25, 2016 /
 
Nem voltam egyérelmű. Biztosra kellene tudnom azt, hogy mikor merült le az elem (vagy kikapcsolt állapotban kivették). Kinevezhetek pl. 20 bájtot, ami csak jelzőbájt, de mi van akkor, ha a lemerült elem miatt csak bizonyos területek változnak meg, a jelzőbájtok pedig megmaradnak?
(#) kissi válasza Bakman hozzászólására (») Nov 25, 2016 /
 
Idézet:
„Biztosra kellene tudnom azt, hogy mikor merült le az elem”
Szerintem ezt egy PIC-es komparátorral tudod figyelni és biztonságos szintnél felszólítod a cserére a felhasználót, mielőtt letörlöd a RAM-ot!
Idézet:
„vagy kikapcsolt állapotban kivették”

Kikapcsolásnál törlöd ( kondenzátorral biztosítod az ehhez szükséges energiát ! ) !

Remélem tudtam segíteni !
(#) Bakman válasza kissi hozzászólására (») Nov 25, 2016 /
 
Nem szeretném törölni az adatokat belőle, csak külön kérésre... Nehéz eset vagyok?
(#) kissi válasza Bakman hozzászólására (») Nov 25, 2016 /
 
Nem ! Akkor csak külön kérés esetén csináld az előzőeket !
(#) pajti2 válasza Bakman hozzászólására (») Nov 26, 2016 /
 
Akkor pedig rakd oda az elemet is, hogy kikapcsolás esetén is megőrizhesd a tartalmat.

Egy lehetséges trükk, hogy amolyan lapokra osztod fel a memóriát, aminek az alapértelmezett értéke 0 bitek, és a pic memóriájában raksz valahova változóba jelző biteket, hogy a lap tartalma érvényes-e. Ha nem, nulla bitek kiolvasását szimulálod a programban, és eleve nem is olvasol a ramból. A háttérben pedig egy állapotgéppel folyamatosan töltöd fel tényleges nullával a bekapcsolás után. Ha már érvényes adatot is írtál a lapra, akkor billented a jelző bitet, és akkor viszont gondoskodnod kell az implicit törléséről is. Kicsi könnyítés, hogy nem a teljes ic-t, hanem csak azt a részét kell promptra törölnöd, ha addigra a háttérben az aszinkron állapotgéped nem tudott végezni vele (amihez szintén használhatsz jelző biteket a pic memóriájában).

Kellemes szórakozást
(#) Bakman válasza pajti2 hozzászólására (») Nov 26, 2016 /
 
Igazábol arra jutottam, hogy az utolsó 4 kByte-ot használom jelzésre. Amikor kezdi elveszteni az adatot, remélhetőleg a 4096 bájtból lesz egy-kettő ami elbillen, így detektálható a memóriavesztés. Bekapcsoláskor kicsit lassú, de nem életbevágó, hogy pillanatok alatt elinduljon a főprogram.

Nem ismerem az IC belső felépítését, de talán az 1010 1010 könnyebben "sérül", mint a 0000 0000.
A hozzászólás módosítva: Nov 26, 2016
(#) gyoran válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Hát nem túlzottam értem, mit akarsz csinálni.
Ha a kikapcsolt állapot eltér az áramtalanított állapottól, akkor ugye az soft-kikapcsolt. A PIC megy, csak mást csinál, mint normálisan.
Ha lemerül az elem és újat raknak bele, vagy kiveszik és visszarakják, akkor és csak akkor RESET-tel indul a PIC.
Másképpen, ha RESET - ről indul a PIC akkor megszakadt az áramellátás. Nyilván ilyenkor a normál RESET (MCLR) lábat más módon nem szabad stimulálni, de ennek elkerülésére számos más módszer adatik.
Ha viszont az a kérdés, hogy sérült-e a RAM-ban lévő információ az elemcsere alatt, akkor erre szerintem csak a különböző ellenőrző összeg képzése és tesztelése a megfelelő.
(#) Bakman válasza gyoran hozzászólására (») Nov 27, 2016 /
 
Nevezzük a kikapcsolt állapotot annak, amikor áramtalanítva van a rendszer. Ekkor az áramkörben nem dolgozik semmi kivéve a RAM, ami elvileg megy elemről. Ha ilyenkor kiveszem az elemet, majd visszarakom, nem biztos, hogy törlődik a teljes RAM terület, hanem csak bizonyos részei. Ennek detektálása lenne a lényeg.

Időközben teszteltem és úgy tűnik, hogy az utolsó 4 kByte (amit másra nem használok) figyelése elég.
(#) nedudgi válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Mekkora adatmennyiségről van szó? EERAM nem jöhet szóba?
(#) nagym6 válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Elemcsere lenne? Akkor két elem lehetne. Amíg egyiket kiveszed, másik táplál. Vagy nem állandó, csak akkor teszed be a másikat, amíg egyik kint van cserére. Zsebszámológépeknél van így, memóriaelem csere alatt a fő elemek táplálnak.
(#) Bakman válasza nedudgi hozzászólására (») Nov 27, 2016 /
 
Minimum 10 kByte adat, de ez csak növekedhet. Egy adatgyűjtőről lenne szó. Jól látom, hogy EERAM-ból nincs ekkora? Nevezett RAM-ban az tetszik a legjobban, hogy ha úgy adódik, egy menetben végig lehet olvasni a teljes területet, nem kell lapváltásokkal vacakolni. Perpillanat jól működik. Ha lesz hozzá türelmem, rápróbálok az FRAM-ra, hátha. Az bírja az esetleges sok újraírást.
(#) nagym6 válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Azt figyelni, hogy van-e adatvesztés, én kikerülném, akkor már baj van, ha kiderül, hogy adat veszett. Kimenteném EEprom-ba a statikus ramból. Egy kellően nagy kondi, vagy 1F-os kondi tudná addig táplálni, amíg kiment EEpromba tápmegszűnéskor.
(#) Bakman válasza nagym6 hozzászólására (») Nov 27, 2016 /
 
Az sokkal kissebb baj, ha van adatvesztés és ezt észre is veszem. A nagy probléma akkor lenne, ha lenne adatvesztés és azt nem detektálná a kontroller.

10-20 kByte nem fér el EEPROM-ban, ezért is használok külső adattárolót. Lehet, hogy a következő lépés az SD kártya vagy az FRAM lesz. Tesztelem ezt az SRAM-ot, aztán majd elválik.
(#) nagym6 válasza Bakman hozzászólására (») Nov 27, 2016 /
 
24LC256 EEPROM - 32kByte itt
De vannak nagyobbak is ugyanitt.
A hozzászólás módosítva: Nov 27, 2016
(#) AZoli válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Checksum a RAM egy dedikált területére? A PIC minden kikapcsolása előtt képezzen egy ellenőrző összeget (ha mazohista vagy, esetleg CRC-t ) a RAM -ban tárolt adatokból. Bekapcsoláskor újra számolni, és ha nem egyezik az újra számolt és a RAM -ban tárolt, akkor sérült az adat. Nem nézem, ha van a PIC -ben EEPROM, inkább ott tárolnám az ellenőrző összeget.
(#) Ashen16 hozzászólása Nov 27, 2016 /
 
Üdvözletem! Segítséget szeretnék kérni,azzal kapcsolatosan hogy egy frekvencia mérőt szeretnék építeni PIC16F887-el megvalósítva. Találtam is egy kapcsolási rajzot,illetve egy programot viszont ez nem ezzel a PIC-el van megépítve. A kérdésem a következő: ha megépítem a mellékletben látott kapcsolást PIC16F887-el és az ott talált programot használom működni fog-e a frekvencia mérő, vagy esetleg a kódot módosítanom kell-e valahol? A segítséget Előre is nagyon szépen köszönöm!
(#) Bakman válasza Ashen16 hozzászólására (») Nov 27, 2016 /
 
A két kontroller között elég nagy a szakadék, szinte biztos (99,999 %), hogy módosítás nélkül nem fog működni.
Következő: »»   878 / 1210
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