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   309 / 1210
(#) Tom-ee hozzászólása Szept 24, 2012 /
 
Sziasztok! Utolsó próbálkozásként vettem egy új PIC-et, amit még nem "próbáltam agyon". Feltöltöttem Vicsys teszt programját, majd ráadtam a tápot és egyből beindult. Ezen fellelkesültem, nekiláttam tesztelni. 5-6 alkalommal bekapcsoltam a tápot, majd ki, aztán egyszercsak abbahagyott mindent, nem villogott, nem reagált semmire. Újraprogramoztam, kipróbálgattam az eddigieket, semmi. Az égető felismeri, nem hiszem, hogy tönkre ment, de valami tuti nem kóser. Megpróbálok egy klónt szerezni olcsón, mert már nincs több ötletem.
(#) n_yálastrubadúr válasza Tom-ee hozzászólására (») Szept 24, 2012 /
 
icserny kolléga fentebb megmondta a probléma nagyon nagy valószínűségét. Ennél a példánynál ezt én is tapasztaltam, de nem dobtam ki. Később mikor a Pickit2- re vetemedtem, helyre tudtam állítani. Van egy olyan lehetőség hogy OSCCAL regeneration. Ha azt megcsinálod nagy valószínűséggel mindegyik darabod jó lesz.
(#) n_yálastrubadúr válasza n_yálastrubadúr hozzászólására (») Szept 24, 2012 /
 
Nézelődtem, szerintem erre keress a google-ben 12f629 osccal regeneration. Én ezt találtam:osccal
A hozzászólás módosítva: Szept 24, 2012
(#) Tom-ee válasza n_yálastrubadúr hozzászólására (») Szept 24, 2012 /
 
Igen, kidobni én sem dobtam ki egyet sem. (azt sem, amit a jelen égetőm nem ismer fel, pedig az már esélyesebb a kidobásra...) Nem akartam költeni rá, mivel ritkán lesz használva, de úgy fest, a jelenlegi nem fog megfelelően kiszolgálni. (félreérts ne essék, könnyen lehet, hogy a régi gép és az LPT port a ludas, de ezt nem tudom kinyomozni) Most keresek egyet készen, illetve olyan emberek segítségét várom, akik összeraknának egy ilyet - persze nem ingyen. (annak nem látom értelmét, hogy egy égetőhöz való PIC-et egy olyan égetővel programozzak fel, ami valószínűleg nem működik rendesen és ezt váltaná fel az új programozó... ördögi kör )
Köszönöm az eddigi segítséget mindenkitől!
(#) Tom-ee válasza n_yálastrubadúr hozzászólására (») Szept 24, 2012 /
 
Köszi, ezt meg fogom nézni.
(#) icserny válasza n_yálastrubadúr hozzászólására (») Szept 24, 2012 /
 
Idézet:
„Később mikor a Pickit2- re vetemedtem, helyre tudtam állítani.”
Szerintem a mostani programozóval is fel lehet éleszteni a mikrovezérlőt, csak egy értelmes RETLW utasítást kell írni a programmemória végére:
  1. ORG 0x3FF
  2.   RETLW 0x80

Az óra nem lesz pontos, de legalább működik...

Szerintem ezt (0x3480) még a hexa alkalmazói program végére sem túl nehéz beszerkesztni a Notepad Editorral.
A hozzászólás módosítva: Szept 24, 2012
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 24, 2012 /
 
Szia!
Annak, hogy a W-be beolvasod az intcon regisztert, semmi hatása és értelme sincs. A tmr1 új idejénél beírása igen kicsi időt vesz igénybe.A megszakítások sem akadnak össze, csak megfelelően kell kezelni őket, Ha a tmr1 megszakítását figyeled, és befut egy másik is ez alatt, akkor a megszakítás után azonnal új megszakítás kezdődik. A főprogram "kiakad" ha nincs jól lekezelve. A több megszakításos programoknál én úgy járok el, hogy a W és status mentése után a legfontosabb megszakítást helyezem előre, 1 bitvizsgálat és megy továbbira ha nem ő okozta, és így sorban...
Ha ő okozta lekezelem a jelzőbitet ,( lehetőleg törekszem egy saját bit bebillentésére, a többit elintézi a főprogram így a legrövidebb..) elvégzem az adott prg. részletet, és megyek a további megszakítás jelzőbiteket vizsgálni. ez további 3 megszakításnál max. 9 utasításciklus, ami rövidebb mint visszamenteni a regisztereket és ujből belépni a megszakításba,mert automatikusan úgyis ez következik majd.Tehát az rfm12 adómodul még ha 433MHz -es is akkor is az adás szünet aránya 1:10 körül van, bőven van idő még négy szervo lekezelésére is.Csak akkor tudok vagy tudunk segíteni, ha felteszed ide a programodat, vagy részletét, vagy legalább a logikai sémáját...
Megoldás lehet, hogy az adó 20mSec időközönként adja azt a pár adatot, a vevő pedig vétel után ellenőrzi az adat helyességét, ha jó új értéket ir a szervo időbe, ha rossz eldobja (marad az előző) és ezután kiteszi a szervora ha lejárt az 1-2mSec idő a szervo aktív ideje a vevő várja a kovetkező adatcsomagot. Ekkor van mindenre elég idő..
üdv:Foxi
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Szia!
Idézet:
„Az FSR regisztert ha nem mentem az milyen galibákat okozhat?”

Ha a megszakítási rutin nem változtatja meg, akkor semilyen galibát nem okoz.
A mentések során mindazt el kell menteni, aminek a megváltoztatása nem volt célja a megszakítási rutinnak, de a célok elvégzésére fel kellett használni (W, stb), vagy az elvégzett műveletek elrontják az értékét (STATUS). A visszatéréskor a kontrollernek ugyan abban az állapotban kell lennie, mint a kérés pillanata előtt - leszámítva a szándékos állapotváltozásokat és a mentési regiszterek tartalmát (amibe mentjük az értékeket).
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 25, 2012 /
 
A programom felépítése: 64-es előosztásban a Tmr0, Rb0 megszakítás 1-re. Az Rb0 megszakításban méri Tmr0-át, értékei ha 1ms- nél több 1,2ms nél kevesebb, akkor az a start, onnan ha 620us nél hosszab 1 ha nem 0 ,ez van 32 biten keresztül. Közben ha nem jön jel akkor Tmr0 megszakításban törli az addig regisztrált adatokat. És van kint egy lcd kezelő ahol az adott értékeket nézem. A programot feltenni azért nincsen értelme mert teli van makróval, és legalább annyira kesze-kusza mint a mellékelt képek. Ez átmeneti ,de még nem lesz kész addig szükséges, azután igényesebb formája lesz. Nem lesz rajta az lcd meg semmi, ez ilyen fejlesztési kellék. Visszatérve, az átvitelem nincsen tökéletesítve. Ezen is dolgoznom kell, valószínűleg az általam fabrikált antennák sem a legtökéletesebbek. Sok a finomítanivaló, de nagyvonalakban minden megy.
(#) nyarfa hozzászólása Szept 25, 2012 /
 
Sziasztok!

Nem igazán értem, hogy 10F222 esetén hogyan használjam a timer-t mivel megszakítást nem igazán láttam az adatlapján. Valami ötletet adjatok mert nekem még ez magas.
(#) n_yálastrubadúr válasza nyarfa hozzászólására (») Szept 25, 2012 /
 
Nincsen benne megszakítás, de bárhol olvashatod írhatod.
(#) nyarfa válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Na pont ezt akartam elkerülni, hogy magam olvasgassam. Nem akartam több helyen is "call timer_0" sort beszúrni.
(#) n_yálastrubadúr válasza nyarfa hozzászólására (») Szept 25, 2012 /
 
Nem olyan vészes, nekem is van egy rakat 10f200- am nagyon szeretem őket, a maguk gyufaméreg méretével, nagyon sok dologban használtam őket.
(#) Hp41C válasza nyarfa hozzászólására (») Szept 25, 2012 / 1
 
Szia!
Használj 10F320 vagy 10F322 kontrollert, abban már van megszakítás.
(#) kortez17 hozzászólása Szept 25, 2012 /
 
Sziasztok
az lenne a kérdésem, hogy hobbiszinten imádok bütykölgetni nyákokat, magam tervezem nyomtatom, vasalom, maratom, fúrom és forrasztom.
Na ez azért lényeges, mert szeretnék továbblépni, mégpedig PIC-et programozni így a kapcsolási rajz lelkét is én határozom meg .
Na a probléma ott van, hogy annyit tudok a pic-ről, hogy PIC .
De suliba tanultam szakmaként a PLC programozást és valahogy nem lehetne összehozni a két dolgot??
Halottam, hogy sokban nem különböznek belülről se, programba se, csak ugye magába a program nyelvébe.
na a lényeg, hogy valaki tudna küldeni egy pic programozási alapokból nagyon kezdő szinttől valamit, vagy pedig a fontosabb, hogy plc program alapján nem lehet valahogy átkonvertálni pic nyelvre?
a segítségeket előre is köszönöm
(#) kaqkk válasza kortez17 hozzászólására (») Szept 25, 2012 /
 
Nézz be a grafikusrendszerű pic programozás- és a flowcode témába ..
(#) icserny válasza kortez17 hozzászólására (») Szept 25, 2012 /
 
Idézet:
„Na a probléma ott van, hogy annyit tudok a pic-ről, hogy PIC .”
Akkor ezen az oldalon kell kezdeni, mert a PIC mikrovezérlők skálája elég széles a PIC10-től a PIC32-ig.
(#) kortez17 válasza icserny hozzászólására (») Szept 25, 2012 /
 
köszi a linket, de szerintem nem kell ilyen alaptól, mert írtam, hogy PLC-hez konyítok, és abba is van van több bites.
(#) pjg válasza kortez17 hozzászólására (») Szept 25, 2012 /
 
De! Kell! Én is programoztam Commodore 64-et, 8080-at, Z80-at PCXT-t PCAT-t gépi kódban. Egészen más a PIC.
A hozzászólás módosítva: Szept 25, 2012
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Szia!
Még jobb is a helyzet, mint gondoltam...
Mivel a TMR0 64-es előosztásban van, nyugodtan vedd ki a megszakításból!
Csak indítsd el! Amikor hiba miatt túlcsordul, akkor bebillen a TMR0IF flag , tehát jelzi a túlcsordulást, de nem okoz megszakítást. A főprogramban van idő lekezelni hiszen még 20 megás kristálynál is 3,28msec idő van, több mint 16000 óraciklus a teljes memória is töredéke ennek.Tehát elég a főprogiban a TMR0IF bitet figyelni.
Marad az RB0 és a TMR1 . Mivel A magas vagy alacsony szinet 620uS idő dönti el, a timer1 írása 1uS körüli , ez nem okozhat hibát. Minen esetre írok egy megszakítási rutint, hogy a "kesze kusza" programodnak legalább ez a része menjen.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Itt a részlet:
  1. ;///////////////////////////////////
  2. ;megszak
  3. ;///////////////////////////////////
  4. CBLOCK
  5. JELZO
  6. SZL,SZH
  7. ADATL,ADATH
  8. ENDC
  9.  
  10.  
  11.  
  12.         MOVWF   W_TEMP
  13.         SWAPF   STATUS,W
  14.         MOVWF   STATUS_TEMP
  15.         CLRF            STATUS          ;RAM 0-7F IG
  16.         ;MOVFW  PCLATH
  17.         ;MOVWF  PCLATH_TEMP
  18.         ;CLRF   PCLATH          ;PRG 0-7FF IG
  19.         ;
  20.         ;
  21.         BTFSS   PIR1,TMR1IF     ;TIMER1 OKOZTA A MEGSZAKÍTÁST?
  22.         GOTO            RB0_INT         ;NEM TOBÁBB
  23.         BCF             PIR1,TMR1IF     ;FLAG LEKEZELÉSA
  24.         MOVLW   0X01                    ;BELSŐ JELZŐ ÁTVÁLTÁSA
  25.         XORWF   JELZO,F
  26.         BZ              $+6                     ;HA NULLA  AKKOR SZERVO IDŐ
  27.         MOVF            SZH,W           ;KÜLÖNBEN SZÜNET KERÜL BELE
  28.         MOVWF   TMR1H          
  29.         MOVF            SZL,W
  30.         MOVWF   TMR1L
  31.         GOTO            RB0_INT        
  32.         MOVF            ADATH,W         ;BELEÍRJUK A SZERVO IDŐT
  33.         MOVWF   TMR1H          
  34.         MOVF            ADATL,W
  35.         MOVWF   TMR1L
  36. RB0_INT
  37.         BTFSS   INTCON,1                ;RB0 MEGSZAKÍTÁS ?
  38.         GOTO            TMR0_INT                ;NEM TOVÁBB
  39.         BCF             INTCON,1                ;FLAG LEKEZELÉSE
  40.         NOP             ;CALL RB0_MEGSZAK       ;IDEJÖN A TE RB0 PROGRAMOD
  41. TMR0_INT
  42.         BTFSS   INTCON,TMR0IF   ;TIMER0 OKOZTA A MEGSZAKÍTÁST?
  43.         GOTO            VEGE                    ;NEM VÉGE
  44.         BCF             INTCON,TMR0IF   ;JELZŐ LEKEZELÉSE
  45.         NOP             ;CALL TMR0_MEGSZAK      ;IDEJÖN A TE TMR0 PROGRAMOD
  46.  
  47. VEGE
  48.         ;       MOVFW   PCLATH_TEMP
  49.         ;       MOVWF   PCLATH
  50.  
  51.         SWAPF   STATUS_TEMP,W
  52.         MOVWF   STATUS
  53.         SWAPF W_TEMP,F
  54.         SWAPF W_TEMP,W
  55.         RETFIE

Bennehagytam a tmr0 megszakítást is, de nem kellene...
A hozzászólás módosítva: Szept 25, 2012
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Lemaradt még, hogy a szervo idő és a szünet idő értékeket helyesen 65536- idő alakban kell tárolni a regiszterekben. hiszen "felfele" számol a TMR1.
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 25, 2012 /
 
Köszi, értem már a dolgot.
(#) icserny válasza kortez17 hozzászólására (») Szept 25, 2012 /
 
Idézet:
„szerintem nem kell ilyen alaptól, mert írtam, hogy PLC-hez konyítok”
Ez indifferens abból a szempontból, hogyha nem mondod meg, hogy melyik PIC családdal akarsz foglalkozni, akkor nem tudom, hogy melyikhez ajánljak tananyagot.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Ennek működnie kell, de ha nem akkor máshol is van még hiba...
Esetleg írd meg az adó és vevő tipusát, valamint milyen pic-et használsz, és a kasznált kristály frekije is jó lenne. Nem egészséges egyébként 32 bit átvitele 19 mSec alatt.
Ha már ilyen komoly dolgot készülsz programozni, akkor érdemes lenne az rfm12bs és frm12bp páros adónak és vevőnek, az adó katalógusszerint 3km hatótávú és kizárható vele másik adó zavarása. Van itt a fórumon ilyen topic.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
Ennek működnie kell, de ha nem akkor máshol is van még hiba...
Esetleg írd meg az adó és vevő tipusát, valamint milyen pic-et használsz, és a kasznált kristály frekije is jó lenne. Nem egészséges egyébként 32 bit átvitele 19 mSec alatt.
Ha már ilyen komoly dolgot készülsz programozni, akkor érdemes lenne az rfm12bs és frm12bp páros adónak és vevőnek, az adó katalógusszerint 3km hatótávú és kizárható vele másik adó zavarása. Van itt a fórumon ilyen topic.

Egyéblént már megint lefelejtettem a kimeneti (szervo portot ) beleírni a programba szünetnél lekapcsolja szervonál bekapcsolja ...
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 25, 2012 /
 
Az adó oldalon egy 16f887 van 4Mhz-es kristállyal a vevő oldalon egy 16f716 van 20Mhz-es kristállyal és egy elég gyenge rr3, rt14-es Am páros. Egy csomag kb 23ms alatt megy át. Az lenne a kérdésem hogy a tmr1 el egyszer szünetelsz egyszer meg a változó jelalakot oldod meg?
A hozzászólás módosítva: Szept 25, 2012
(#) n_yálastrubadúr hozzászólása Szept 25, 2012 /
 
Belinkelem a programot, ha kitudsz igazodni.. meg a fontosabb makrókat.. ( ez a vevő)
u.i. ebben van minden ami nem kell.. azok ki vannak szedve.
A hozzászólás módosítva: Szept 25, 2012
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 25, 2012 /
 
A szervo működése ugye,hogy 1-2msec jel után maximum 20mSec idő telhet el. előzően leírtad, hogy 10mSec időnél nem kéne több szünet, tehát a a vevő kristály 20mHz és mondjuk 10mSec szünet esetén: 65536-(0,01/0,0000002)=15536 = 0x3cb0
ez az érték lehet fix ugye nem változik. A szervo ideje....
nos ez a te feladatod, a vett adatokból, mivel a tmr1 1 lépése 5.000.000 /sec ezért ide
5000 és 10000 közötti szám kéne, persze figyelembe véve 65536- szám
A hozzászólás módosítva: Szept 25, 2012
(#) kortez17 válasza icserny hozzászólására (») Szept 26, 2012 /
 
16F628A <----- jelenleg ilyen PIC-em van itthon egy régi órából való.
Lehetőleg ha egy tananyagot tudnál küldeni, azt megköszönném, de ha nem nagy gond jó lenne magyarul
Na és még jó lenne egy házilag összerakható égető is, ha van ilyen rajzod azt is szívesen fogadok >
Következő: »»   309 / 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