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   141 / 1210
(#) Hp41C válasza soskajoska hozzászólására (») Okt 8, 2011 /
 
Mit vársz el a fórumtársaktól?

- Ötletek: Az A/D mérések elredményét skálázni kell, BCD formára hozni, ASCII karakterekké konvertálni és az LCD -re kiírni.
- Kész programot: Biztosan nem készíti el senki sem olyanra, mint elképzelted... Sokkal jobb, ha nálad van a forrás, bármikor módosíthatod... A megírása közben szerzett tapasztalatokról még nem is szóltam.

Itt a fórumon számtalan leírásban találhatsz olyan programrészletet, amit egyszerűen átalakíthatsz a saját igényeidre... Egy kis keresés a fájlmellékletekben, leírásokban és a Gooooogle -val, rengeteg ötletet adhat.
(#) soskajoska válasza Hp41C hozzászólására (») Okt 9, 2011 /
 
Idézet:
„Mit vársz el a fórumtársaktól?”
Nos, mivel ebben a fórumban tettem fel a kérdést: minék több segítséget.
-kész programot, ha valakinek van ilyen és megosztaná velem. (Google találat esetén is ez a helyzet)
-milyen PIC-el induljak el és minél több segítséget a tapasztalt kollégáktól
(#) icserny válasza soskajoska hozzászólására (») Okt 9, 2011 /
 
Kész programokat a Kapcsolások szekció PIC alrovatában keress! Ha ott nincs kedvedre való, akkor itt pláne nem lesz. A fórum nem projektek közlésére lett kitalálva, hanem a tanulni vágyó kérdezők segítésére. Hasznos mintapéldákat a Mikrochip alkalmazási mintapéldái között is érdemes keresgélni. A Microchip Solar Energy Harvesting Development Kit dokumentációját is érdemes megnézni, hátha ad valami jó ötletet.
(#) Hp41C válasza soskajoska hozzászólására (») Okt 9, 2011 /
 
Szia!

Az LCD kezeléséhez min. 4 adat és min. 2 vezérlő láb kell, a méréshez csatornánként 2 bemenet (áram és feszültség), 2-3 táp, 1 láb MCLR (nem lehet analóg és kimenet). 1 csatornára 11..12 láb. Olyan típus kell, amiben van A/D: 16F684 (14), 16F88 (18), 16F690 (20), 16F886 (28), 16F887 (40) stb. A 18F2423, 18F2523, 18F4423, 18F4523 12 bites A/D -val rendelkezik.
(#) zsema hozzászólása Okt 9, 2011 /
 
Sziasztok!

PIC18F26J11 RTCC moduljával gyűlt meg a bajom.

A PIC 8 MHz belső oscillátorral megy, az RTCC-hez 32,768 kHz külső kristályt tettem.

RTCC inicializálása:
  1. MOVLW   b'10001100'
  2. MOVWF   T1CON
  3. MOVLB   0x0F
  4. MOVLW   0x55
  5. MOVWF   EECON2,0
  6. MOVLW   0xAA
  7. MOVWF   EECON2,0
  8. BSF      RTCCFG,5,1
  9. CLRF     RTCVALH
  10. CLRF     RTCVALL
  11. MOVLW   b'11111111'
  12. MOVWF   ALRMRPT
  13. MOVLW   b'11001100'
  14. MOVWF   ALRMCFG
  15. BSF      RTCCFG,7


Ami számomra gondot okozott: ALRMCFG regiszterben beállítom a rendszeres időközönkénti ALARM-ot. 0.5s, 1s, 10s működik, megszakítást generál. A kódon nem változtatok semmit, csak átírom 1 percre az időtartamot és már nem generál megszakítást.

PICKIT2-vel programozok és debuggolok. Az RTCC-működik, RTCVALL és RTCVALH értéke változik.

Aki tud valami használhatót, azt megköszönöm.

Zs
(#) soskajoska válasza icserny hozzászólására (») Okt 9, 2011 /
 
Idézet:
„Kész programokat a Kapcsolások szekció PIC alrovatában keress!”

Ott sajnos nem találtam.
Idézet:
„A fórum nem projektek közlésére lett kitalálva, hanem a tanulni vágyó kérdezők segítésére.”

Azért reménykedtem, hátha valaki már használ ilyet és megosztja velem.
(#) soskajoska válasza Hp41C hozzászólására (») Okt 9, 2011 /
 
Kösz az ötletet. Ebben az irányban kutatok tovább.
(#) soskajoska hozzászólása Okt 9, 2011 /
 
Ezt találtam:
Wattmeter
16F88-ra lett kitalálva. Igaz, meglehetősen szűkszavú. Max. megépítem és kiderül, hogy ezt akartam-e.
(#) kissi válasza zsema hozzászólására (») Okt 9, 2011 /
 
Nem ismerem ezt a típust, de úgy láttam, hogy jól állítottad be az intervallumot és ha eddig ment a kisebb értékekkel, akkor most is kellene ! Nem lehet, hogy valami más ebben az időtartamban "megfogja" a megszakítást ( pl. letiltod, rossz helyre ugratsz, megtelik a verem és újraindul, stb., mert a hosszabb időben már lehet gond ?! ) !

Steve
(#) icserny válasza soskajoska hozzászólására (») Okt 10, 2011 / 1
 
Idézet:
„Ott sajnos nem találtam.”
Keresgélni kell, mert van, aki lusta beírni a kulcsszavak közé, hogy "PIC".
(#) zsema válasza kissi hozzászólására (») Okt 10, 2011 /
 
Leegyszerűsítettem az egész programot. A bemásolt kód a teljes program. Most már csak a 0.5s és az 1s lejárta után okoz megszakítást, 10s és afölött nem.

(A config ugyanaz)

  1. LIST P=18F26J11
  2. #INCLUDE "P18F26J11.INC"
  3.  
  4. CBLOCK   0x20
  5.    W_SAVE
  6.    STATUS_SAVE
  7. ENDC
  8.  
  9. ORG 0
  10.    GOTO   MAIN
  11. ORG 8
  12.    BCF   INTCON,GIE
  13.    MOVWF   W_SAVE
  14.    MOVF   STATUS,0
  15.    MOVWF   STATUS_SAVE
  16.    BTFSC   PIR3,RTCCIF
  17.    GOTO   MEGSZ_RTCC
  18.    GOTO   MEGSZ_KILEP
  19. MEGSZ_RTCC
  20.    BSF   PORTC,2
  21.    GOTO   MEGSZ_KILEP
  22. MEGSZ_KILEP
  23.    MOVF   STATUS_SAVE,0
  24.    MOVWF   STATUS
  25.    MOVF   W_SAVE,0
  26.    BSF   INTCON,GIE
  27.    RETFIE
  28. MAIN
  29.    CLRF   LATA
  30.    MOVLB   0x0F
  31.    MOVLW   0x0F
  32.    MOVWF   ANCON0
  33.    MOVLW   b'00000000'
  34.    MOVWF   TRISA
  35.    CLRF   PORTA
  36.  
  37.    CLRF   LATB
  38.    MOVLB   0x0F
  39.    MOVLW   0x17
  40.    MOVWF   ANCON1
  41.    MOVLW   b'00110001'
  42.    MOVWF   TRISB
  43.    CLRF   PORTB
  44.  
  45.    CLRF   LATC
  46.    MOVLW   b'00000000'
  47.    MOVWF   TRISC
  48.    MOVLB   0x0F
  49.    BSF   ANCON1,PCFG11
  50.    CLRF   PORTC
  51.  
  52.    MOVLW   b'11000000' ; GLOBAL, PERIPHERIAL
  53.    MOVWF   INTCON
  54.    BCF   PIE1,0; TMR1 INT ENABLE
  55.    BSF   PIE3,RTCCIE ; RTCCINT ENABLE
  56.  
  57.    MOVLW   b'10001100'
  58.    MOVWF   T1CON
  59.  
  60. ; RTCC BEÁLLÍTÁSOK
  61.    MOVLB   0x0F
  62.    MOVLW   0x55
  63.    MOVWF   EECON2,0
  64.    MOVLW   0xAA
  65.    MOVWF   EECON2,0
  66.    BSF   RTCCFG,5,1
  67.    CLRF   RTCVALH
  68.    CLRF   RTCVALL
  69.    MOVLW   b'11111111'
  70.    MOVWF   ALRMRPT
  71.    MOVLW   b'11000100'
  72.    MOVWF   ALRMCFG
  73.    BSF   RTCCFG,7
  74.  
  75. MAINLOOP
  76.    NOP
  77.    GOTO   MAINLOOP
  78. END


Zs
(#) watt válasza zsema hozzászólására (») Okt 10, 2011 /
 
A prioritásos megszakítások biztosan jól vannak beállítva? Elvileg úgy indul a PIC- hogy kompatibilis módban, de én nem hiszek a véletlennek, mindig beállítom, amit biztosan szeretnék. Lehet, nem ez a hiba, de még ki tudja.
(#) zsema válasza watt hozzászólására (») Okt 10, 2011 /
 
Először szerepelt a kódban az alábbi sor:

BCF RCON,IPEN ; ne legyen prioritás

Ezzel sem működött. Aztán megnéztem az adatlapot, és tényleg - ahogyan írtad is - power on reset után így indul. Debugger szerint is jó. Úgyhogy kivettem.

Zsolti
(#) watt válasza zsema hozzászólására (») Okt 10, 2011 /
 
Én benthagynám, mert én mindent beállítok, azt is, amit nem használok...
(#) Hp41C válasza zsema hozzászólására (») Okt 10, 2011 /
 
Szia!

12. sor - Ne állítsd a GIE bitet, hagyd a kontrollerre...
25. sor - A movf utasítás állítja a STATUS bitjeit, elrontja azt, amit a 24. sor visszaállított.
26. sor - Ne állítsd a GIE bitet, hagyd a kontrollerre, majd a retfie visszaállítja...

Hiányzik egy bcf PIR3,RTCCIF sor...
(#) zsema válasza watt hozzászólására (») Okt 10, 2011 /
 
Nagyon köszönöm a segítséget !

Megoldódott. Vagyis csak félig. Mivel először 1 percre még működött, aztán már arra sem, így éltem a gyanúperrel...

Másik, ugyanilyen PIC vígan működik, az eredetileg megírt programmal is. Szóval a hiba tényleges okára nem jöttem rá, de gyanítom, hogy hardveres. Mást nem tudok elképzelni, mert minden szóról-szóra, config bitre is ugyanaz.

Gyakran fordul elő HW hiba PIC-eknél?

Zsolti
(#) soskajoska válasza icserny hozzászólására (») Okt 10, 2011 /
 
Hálás köszönet.
Szerintem ott szúrtam el, hogy ragaszkodtam a "watt", vagy "teljesítmény" szavakhoz. Ezért nem hozott eredményt a keresés.
Még egyszer köszönöm a segítséget. Ez így biztos forrásból van és a videó alapján működik is. Ami nem hátrány.
(#) soskajoska válasza icserny hozzászólására (») Okt 10, 2011 /
 
És ha nem veszed telhetetlenségnek, ajánlanál égetőt hozzá? Nekem ugyanis egy welleman k8048 égetőm van. ez elboldogul a 12F..., 16F... sorozatokkal, de a 18F... PIC-eket nem ismeri. Van ugyan rajta ICSP kimenet, de ez nem hiszem hogy javít a tényen.
(#) icserny válasza soskajoska hozzászólására (») Okt 10, 2011 /
 
PICkit2 vagy az újabb típusokhoz PICkit3. Mindkettőnek létezik klónja is.
(#) watt válasza zsema hozzászólására (») Okt 10, 2011 /
 
Nem hardver hiba, inkább ott keresgélj, amit Hp41C írt! Azok fontos dolgok, javítsd ki!
(#) Pepebá hozzászólása Okt 10, 2011 /
 
Hali!
Megszakítások kezelésében kérek segítséget.
A Piccoló project segítségével, PIC18F4550-l készítettem egy RA0 analóg jel, RB0 SDA, RB1 SCL I2C beolvasását C -ben. USB kapcsolaton küldi a mért adatokat a PC-nek, VB6-ban írt progi megjeleníti.
Van egy szintén interruptot használó jól működő időzítőm is.
A két programot kellene összedolgozni.
Hogyan kell a két megszakítással megoldani a programot?
Üdv.
(#) watt válasza Pepebá hozzászólására (») Okt 11, 2011 /
 
Nem ismerem pontosan a Piccoló megoldását, de ha jól sejtem nem használ megszakítást az USB gyárilag. Ha icserny átalakította, akkor igen. Ha mellé akarsz tenni egy timer megszakítást azt megteheted, csak le kell kezelned a megszakítás jelző bitjét és engedélyezned kell a megszakítását. Fontos, hogy ne tölts sok időt a lekezeléssel, mert akkor elveszed az időt az USB-től!
(#) icserny válasza watt hozzászólására (») Okt 11, 2011 /
 
Idézet:
„ha jól sejtem nem használ megszakítást az USB gyárilag.”
Én úgy emlékszem, hogy már vagy két éve az interruptos kiszolgálás az alapértelmezett, de letiltható. Ezt a megoldást használom a PICCOLO projektben is, ahol a USE_INTERRUPT definiáltsága dönti el, hogy megszakítással vagy lekérdezéssel menjen az USB kezelés.

A kérdező gondját az okozza (gondolom én), hogy az I2C kezelés interruptos kezelésére nem mutattam mintapéldát. Ami rosszabb hír: a támogatói függvények nincsenek is felkészítve a megszakításos kezelésre, tehát azokat át kellene írni.
(#) watt válasza icserny hozzászólására (») Okt 11, 2011 /
 
Idézet:
„Én úgy emlékszem, hogy már vagy két éve az interruptos kiszolgálás az alapértelmezett, de letiltható.”

Lemaradtam. Én annó átalakítottam interruptosra, de pollingolós. A gyárit megnézem milyen, mert érdekel, hogy a valós interruptokat használják, vagy ők is timerrel pollingolnak, mint én. Egyébként így is jól működik, főleg a HID, mert az atomstabil és nagyon kényelmes!
(#) icserny válasza watt hozzászólására (») Okt 11, 2011 /
 
Idézet:
„A gyárit megnézem milyen, mert érdekel, hogy a valós interruptokat használják, vagy ők is timerrel pollingolnak, mint én.”
Az USB megszakításait használják, nem kell hozzá timer.
  1. #pragma interrupt hi_isr
  2. void hi_isr() {
  3.      USBDeviceTasks(); //--- USB programmegszakítás kiszolgálása
  4. }

Kíváncsiságból kipróbáltam azt is, hogy a gyári rutinokba belenyúlva az alacsony prioritású szintre is át lehet tenni az USB kiszolgálást. Ennek akkor lehet értelme, ha a magas prioritású szinten nagyon időkritikus, de minimális kiszolgálást igénylő feladat fut.
(#) watt válasza icserny hozzászólására (») Okt 11, 2011 /
 
Köszönöm, ezek szerint a lekezelő rutinban van a megszakítás azonosítása, mert gondolom más megszakítást is ki lehet szolgálni mellette!?
(#) icserny válasza watt hozzászólására (») Okt 11, 2011 /
 
Igen, más is lehet mellette.
(#) watt válasza icserny hozzászólására (») Okt 11, 2011 /
 
Ehhez annyit fűznék hozzá, hogy ismét látható egy negatív példa, amit a microchip programozói lelkesen favorizálnak, hogy feleslegesen meghívnak egy szubrutint, ezzel időt pazarolva, ahelyett, hogy előtte eldöntenék, hogy meg kell-e hívni vagy sem. De mit várhatok tőlük, ha egy TXREG=változó helyett egy szubrutint írnak, paraméter átadással putcUSART() néven, ami húszszor annyi sort fordít be...
(#) trudnai válasza watt hozzászólására (») Okt 11, 2011 /
 
Azt ne felejtsuk el, hogy a Microchip-nel chip-et gyartanak, nem szoftvert / firmware-t fejlesztenek Szoval azon nem szabad fennakadni ha a peldaikon vagy a konyvtaraikon meg jocskan lehet csiszolni / faragni...
(#) watt válasza trudnai hozzászólására (») Okt 11, 2011 /
 
Én meg úgy gondoltam, mint amatőr, hogy többet várhatnék tőlük, profiktól, de lehet, hogy igazad van.
Következő: »»   141 / 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