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   170 / 1211
(#) Poostmaster válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Lássuk, hogy jól értem-e.
Az IOCB azt engedélyezi, hogy melyik lábakról érkezhet megszakítás.
Az RBIF jelzi nekem, hogy kérés érkezett, mert lenyomtak egy gombot. Én megkeresem, hogy melyik gomb volt a hunyó, lekezelem, aztán be kell olvasnom a portot? Ez törli az IOCB-t? Utána pedig törölni az RBIF-et?
A megszakítás flag-okat a lekezelés elején kell törölni, vagy a végén?
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
A config2 elkerülte a figyelmem és csak ott tudtam az lvp-t offolni szóvaé az megy a saját tápegysége kiiktatva nemreg de az ad az nem megy.
(#) Hp41C válasza Poostmaster hozzászólására (») Nov 10, 2011 /
 
Jól érted... Az egyes okokat kiszolgáló rutin végén (általában a végén, de időkritikus esetben az elején - ha nem szeretnél kérést veszteni) kell letörölni az megszakítás okát...
Az ioc megszakításnál a portb olvasásának meg kell előznie az ok törlését, hiszen fordított esetben újra kérés generálódna.
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
A Bankseles dolgot "kitapaszkodtam"> de az A/D nem megy .

A következő:
1-es bankban voltam/ vagyok
movfw ADRESL
banksel PORTB
movwf PORTB
???
Már télleg idegeimre megy és haladnom kellene.
(#) Poostmaster válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Értem. Az IOCB-t utána újra be kell állítanom?
Azt tudom, hogy egyszerre csak egy láb válthat ki megszakítást, de ezt úgy éri el, hogy az IOCB-t nullázza? Ezzel tiltva a port megszakítását?
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Ez lenne a az an2-n a megoldás de nem megy...
  1. AD_LOOP
  2.  
  3.  
  4.  
  5. BANKSELADCON1
  6. MOVLWB'11110000'
  7. MOVWFADCON1
  8. BANKSELANSELA
  9. BSFANSELA,2
  10. BANKSELADCON0
  11. MOVLWB'00001001'
  12. MOVWFADCON0
  13. CALLsample_time
  14. BSFADCON0,ADGO
  15. WT
  16. BTFSCADCON0,ADGO
  17. GOTOWT
  18.  
  19. MOVFWADRESH
  20. BANKSELPORTB
  21. MOVWFPB
  22.  
  23. MOVLW.255;mind a 4 digit on
  24. MOVWFPA
  25.  
  26.  
  27. GOTOAD_LOOP
(#) Hp41C válasza Poostmaster hozzászólására (») Nov 10, 2011 / 1
 
A IOCB minden szóbajövő portbit esetén emlékszik az utoljára beolvasott értékre. A porton megjelenő értéket összehasonlítja a tárolttal és ha nem egyeznek és a hozzá tartozó IOC bit engedélyezi a RBIF bit bebillen, ha a RBIE engedélyezi periféria megszakítás kérés aktív lesz, ha a PEIE és a GIE is engedélyezi, akkor megszakítás kérés is keletkezik. A port olvasása csak a tárolt értéket frissíti, ezzel a kiváltó okot szülteti meg, az engedélyezéseket nem változtatja meg. A port olvasása minden - a porthoz tartozó - eltérést egyszerre töröl.
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Na végre!
Megy az A/D, de egy bajom maradt kb .40-ig lassan emelkedik aztán van egy nagyon rövid szakasz a csuszkán amit csak a DJ-s múltammal tudok szabályozni, egyébként szalad felfelé mint a ló.
(#) Poostmaster válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Köszönöm, ez igen kielégítő válasz volt. Már csak egy gondom van. Amint megírtam, mindent hazavágott. Az eddig jól működő program most nem jelez ki semmit.
Ide teszem a megszakítási programrészt.
  1. ORG 0X04
  2.  
  3. MOVWF WSAVE
  4. SWAPF WSAVE,F
  5. SWAPF STATUS,W
  6. MOVWF SSAVE
  7.  
  8. BTFSS INTCON,RBIF; Gomb megnyomás váltotta ki az IR-t?
  9. GOTO INT_LOAD; Kilép a megszakításból
  10. GOTO S_BEALLIT; Ugrás a gomb lekezelésére
  11. BTFSS PIR1,TMR2IF; Számláló túlcsordulás váltotta ki az IR-t?
  12. GOTO INT_LOAD
  13. BCF PIR1,TMR2IF
  14.  
  15. S_ORA_SZAMOL
  16. DECFSZ TIZED_SZ,F; csökkentem a tizedmásodperc számlálót
  17. GOTO INT_LOAD; ha még nem 0, vissza a főprogramba
  18. MOVF TIZED_A,W; visszatöltöm a kezdeti értéket,
  19. MOVWF TIZED_SZ; és végigcsinálom a többi számlálóval is.
  20. BSF SIGNAL,2
  21. MASODPERC_INT
  22. DECFSZ MASODP_SZ,F; csökkentem a másodperc számlálót
  23. GOTO INT_LOAD
  24. MOVF PERC_A,W
  25. MOVWF MASODP_SZ
  26. BSF SIGNAL,3
  27. PERC_INT
  28. DECFSZ PERC_SZ,F; csökkentem a perc számlálót
  29. GOTO INT_LOAD
  30. MOVF PERC_A,W
  31. MOVWF PERC_SZ
  32. BSF SIGNAL,5
  33. BTFSS INTCON,RBIF
  34. GOTO ORA_INT
  35. MOVF PORTB,W
  36. BCF INTCON,RBIF
  37.  
  38. ORA_INT
  39. DECFSZ ORA_SZ,F; csökkentem az óra számlálót
  40. GOTO INT_LOAD
  41. MOVF ORA_A,W
  42. MOVWF ORA_SZ
  43. MOVLW B'00000010'
  44. XORWF SIGNAL,F
  45. BTFSS INTCON,RBIF
  46. GOTO INT_LOAD
  47. MOVF PORTB,W
  48. BCF INTCON,RBIF
  49. GOTO INT_LOAD
  50.  
  51. S_BEALLIT
  52. G1_TEST
  53. BTFSS ORASET
  54. GOTO G1_LE
  55. BCF GSTATE,G1STATE
  56. GOTO G2_TEST
  57. G1_LE
  58. BTFSC GSTATE,G1STATE
  59. GOTO G2_TEST
  60. BSF GSTATE,G1STATE
  61. GOTO ORA_INT
  62.  
  63. G2_TEST
  64. BTFSS PERCSET
  65. GOTO G2_LE
  66. BCF GSTATE,G2STATE
  67. GOTO INT_LOAD
  68. G2_LE
  69. BTFSC GSTATE,G2STATE
  70. GOTO INT_LOAD
  71. BSF GSTATE,G2STATE
  72. GOTO PERC_INT
  73.  
  74. INT_LOAD
  75. SWAPF SSAVE,W
  76. MOVWF STATUS
  77. SWAPF WSAVE,W
  78. RETFIE
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Na végre!
Megy az A/D, de egy bajom maradt kb .40-ig lassan emelkedik aztán van egy nagyon rövid szakasz a csuszkán amit csak a DJ-s múltammal tudok szabályozni, egyébként szalad felfelé mint a ló.
-Megmértem a potit jólteszi amikor megugrik menrt onnastól már 4.5V- felett van. Leszeftem a potit kicseréltem a potit műszerrel az rendesen cselekszik. Szóval a kontroller küldi meg, nemértem..
(#) Poostmaster válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
A potid lineáris?
(#) Hp41C válasza Poostmaster hozzászólására (») Nov 10, 2011 /
 
Szia!
- Tegyél egy töréspontot a megszakítási rutin kezdetére. Futtasd a programot a szimulátorban. Nézd meg mit csinál a következő néhány sor:
  1. BTFSS INTCON,RBIF; Gomb megnyomás váltotta ki az IR-t?
  2. GOTO INT_LOAD; Kilép a megszakításból
  3. GOTO S_BEALLIT; Ugrás a gomb lekezelésére
  4. BTFSS PIR1,TMR2IF; Számláló túlcsordulás váltotta ki az IR-t?
  5. GOTO INT_LOAD
  6. BCF PIR1,TMR2IF

Az első sor az RBIF állapota szerint vagy a BEALLIT cimkére ugrik vagy az INI_LOAD cimkén keresztül visszatér. A timer2 kiszolgáló rutin le sem futhat...
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
Jó lenne egy kapcsolási rajz, egy nyomtatási terv és egy teljes (a minimális, ami a hibát hordozza) program...
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
betettem egy bansel utasításr, mostmeg 2x járja át a 255-öt itt a program. Nézd már meg légyszi miért vagyok gyökszi.
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Ja ez lemaradt...
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Most veszem észre nem is 2x hanem 4x megy 0-255-ig a potit tekerve. Na ez mi?
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
Az AD 10 bites, így 1024 azaz 4 * 256 lépésre konvertálja a 0 .. Vdd feszültség tartományt... Állítsd át az A/D igazítását és a ADRESH -t másold a PORTB -re, ekkor 0 .. 255 között fog mozogni a kiolvasott érték, ha a bemenet 0 .. Vdd között mozog...
(#) doup hozzászólása Nov 10, 2011 /
 
Sziasztok én még annyit szeretnék kérdezni az rtc-vel kapcsolatban hogy tudomásom szerint ez a kapcsolat egy master slave kapcsolat azaz az rtc önálló döntéseket nem hoz csak a master utasításaira. Ahoz hogy az RTC el kezdjen ketyegni ahoz küldeni kell neki egy engedélyező parancsot gondolom én. Amit láttam hogy az oscillatort a 0h címre egy 0 értékkel indíthatjuk és innentől el kellene indúlnia az RTC-nek azaz az adat benne másodpercenként változnia kellene? Vagy rosszúl látom az RTC ezen részét?
(#) Poostmaster válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
A 2. sort átírtam egy ugrásra a 4. sorra. Most újra működik, de a gombokra nem reagál. A szimulátorban működik.
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Komolyan kösz, asszem menjek a csába, főleg mert már nem egyszer csináltam ilyet. Mostmár franya. Adok is pontot, ha tudnám hogy kell. Itt a panel 4.-en nincs oxigén és egyre sötétebb leszek
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Újra itt. A kérdés: azonnal a bekapcsolásnál az A porton van a gombic. Gondolom 0-át olvas Hogy kell ezt kikapcsolni?
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Megoldottam. Töröltem az initben az ANSELA- reget. De a LATA és LATB reget mostsem tudom mire jó ha ottvan a TRIS, az előbbiek mit mondanak meg?
(#) Poostmaster válasza n_yálastrubadúr hozzászólására (») Nov 11, 2011 /
 
A 18-as családtól (úgy tudom) vezették be a regisztert. Az elv az, hogy portra írsz, és lábról olvasol. Mivel a read/modify/write utasítások miatt a portlábak állapota megváltozhat, ezért minden port 3 tárolót tartalmaz. A TRIS irányítja, a PORT-ról olvasod ki közvetlenül a lábak állapotát, íráshoz viszont a LAT-ot használod.
(#) n_yálastrubadúr válasza Poostmaster hozzászólására (») Nov 11, 2011 /
 
Köszönöm. Nah az újabb bajom megint erősíti az elmélet kontra gyakorlat tézisét. Megoldottam segítségetekkel végre tudom kezelni ezt új jószágot. -fogjuk rá- Megy potival az A/D, mennek a gombok javarészt minden bele van írva. >de kinyögöm a problémát: A Potival a referencia értéket lehet megadni. Van egy műveleti erősítő, annak van egy ICL 7660 nevű negatív konvertere, a +-5 V-hoz. Bekapcsolom a kontrollert bejön az üdvözlés. Amint mérné az A/D a műveleti erősítő jelét, azonnal kikapcsol. A műve. -0.86V -on van így szabadon de ha felkúszik ha melegítem a thermoelemet és pozitívban van, akkor is pakk kikapcsol. Ezt mi okozza?
(#) n_yálastrubadúr hozzászólása Nov 11, 2011 /
 
  1. AKKOR EZ ÍGY HELYES AMÚGY MEG GÁZOK LEHETNEK?
  2.  
  3. BANKSELTRISA
  4. MOVLW.1
  5. MOVWFTRISA
  6.  
  7. BANKSELPORTA
  8. MOVFWPORTA
  9. MOVWFXXX
  10.  
  11.  
  12. BANKSELLATA
  13. MOVLW.1
  14. MOVWFLATA
  15.  
  16. CSAK MERT ÉN A PORTRA ÍROK NEM A LATÁRA ÉS MŰKÖDIK
  17. -- DE LEHET CSAK VÉLETLEN --
(#) Poostmaster válasza n_yálastrubadúr hozzászólására (») Nov 11, 2011 /
 
Így ahogy most írod.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 11, 2011 /
 
A pic bemenete semikor nem mehet Vss - 0,3V alá és Vdd + 0.3V fölé (kivéve MCLR)! Egy Schottky diódával védeni kell...
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 11, 2011 /
 
Megoldottam még a diódát nem de már az opa teljesít. De 3,89V -nál nagyobb feszt nem ad ki akármekkora a bemeneti fesz. Tehát a referencia poti linearitása mellett kellene ennek a fesznek lennie a 255-ös értéknek. Mert így ezzel kb 200 a plafon.
(#) pgabor2 válasza n_yálastrubadúr hozzászólására (») Nov 11, 2011 /
 
Szia!

Keress olyan műveleti erősítőt, amelyiknek a be- és a kimenete is teljes tápfeszültség tartományban képes működni, erre utal az alábbi jellemző: Rail-to-Rail Input/Output.
(#) n_yálastrubadúr válasza pgabor2 hozzászólására (») Nov 11, 2011 /
 
Köszi.- Igen hallotam róla, de mivel kész van nem pénzelek egy rail to rail-ra. Mert egy halom smd 272c-m van, asszem inkább szorzom a tárat 2-vel. Így majdnem celsiusban is 'pontos lesz' máramennyire lineáris a thermoelem.
Következő: »»   170 / 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