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   87 / 1210
(#) Baxi válasza icserny hozzászólására (») Jan 31, 2011 /
 
Igen az 0-ra ugrik csak az úgy maradt mert előtte a btfss volt ott.
(#) trudnai válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Kod gombot hasznaldd mar legyszi (elold ki legkozelebb a kodot amit beirsz, majd kattints a Kod gombra, es az '=c' -t javitsd ki '=asm' -re mikor assembly kodot teszel be)

A PCL-es kerdesre reagalva: Gondolom ez egy 18F, es igy az ADDWF PCL,f utan neked mar eleve 2-vel novekedik a PC, magyaran a PCL-ben ekkor 64 lesz mar, es ehhez adodik hozza a WREG-et ADDWF PCL,f -el. Tehat az eredmeny 66 lesz... Teljesen jol mukodik... A tabla 0. (elso) eleme az ADDWF PCL,f utani elso utasitas... Magyaran ez igy mukodik jol...

UI: Osszehasonlitashoz kivonassal jobban jarsz, mert az raadasul a C-t is allitja, igy azt is meg tudod nezni kisebb-e az eredmeny...

UI2: Nem jol irtam az elobb a PCL magyarazatot, javitottam...
(#) Baxi válasza trudnai hozzászólására (») Jan 31, 2011 /
 
Ok, kösz.Na ez lenne az a prg amivel nem boldogulok.
  1. list     p=18f2550
  2.         #include p18f2550.inc
  3. #DEFINE         NULLA           00000011B
  4. #DEFINE         EGY                     10011111B
  5. #DEFINE         KETTO           00100101B
  6. #DEFINE         HAROM           00001101B
  7. #DEFINE         NEGY            10011001B
  8. #DEFINE         OT                      01001001B
  9. #DEFINE         HAT                     01000001B
  10. #DEFINE         HET                     00011111B
  11. #DEFINE         NYOLC           00000001B
  12. #DEFINE         KILENC          00001001B
  13. ;-------------------------------------------------------------
  14. #DEFINE         K1                      PORTC,0
  15. #DEFINE         K2                      PORTC,1
  16. #DEFINE         K3                      PORTC,7
  17. #DEFINE         K4                      PORTC,6
  18. CBLOCK  20H
  19.         SZAM1
  20.         SZAM2
  21.         SZAM3
  22.         TEMP
  23. ENDC
  24.  
  25. ORG 0
  26. BANKSEL  TRISB
  27. MOVLW           00000000B
  28. MOVWF           TRISB
  29. MOVLW           00001111B
  30. MOVWF           ADCON1
  31. BANKSEL TRISC
  32. MOVLW           00111100B
  33. MOVWF           TRISC
  34.  
  35. BANKSEL         PORTB
  36. CLRF            PORTB
  37. CLRF            LATB
  38. CLRF            PORTC
  39. CLRF            LATC
  40. BSF             K1
  41. BSF             K2
  42. BSF             K3
  43. BSF             K4
  44. ELEJE:
  45.         MOVLW           00000000B
  46.         MOVWF           TEMP
  47. NOVEL: 
  48.         MOVLW           00001001B
  49.         XORWF           LATB,F
  50.         BTFSC           STATUS,Z       
  51.         RCALL           ELEJE
  52.         INCF            TEMP
  53.         MOVF            TEMP,W
  54.         RCALL           TABLAZAT
  55.         MOVWF           LATB
  56.         BCF             K1
  57.         RCALL           KESL
  58.         BSF             K1
  59.         RCALL           NOVEL
  60. TABLAZAT:
  61.                         ADDWF   PCL,F
  62.                         RETLW   NULLA
  63.                         RETLW   EGY
  64.                         RETLW   KETTO
  65.                         RETLW   HAROM
  66.                         RETLW   NEGY
  67.                         RETLW   OT
  68.                         RETLW   HAT
  69.                         RETLW   HET
  70.                         RETLW   NYOLC
  71.                         RETLW   KILENC
  72. KESL:          
  73.                         MOVLW           255
  74.                         MOVWF           SZAM1
  75.                         MOVLW           150
  76.                         MOVWF           SZAM2
  77.                         MOVLW           10
  78.                         MOVWF           SZAM3
  79. CIKLUS:
  80.                         DECFSZ  SZAM1
  81.                         GOTO            CIKLUS
  82.                         DECFSZ  SZAM2
  83.                         GOTO            CIKLUS
  84.                         DECFSZ  SZAM3
  85.                         GOTO            CIKLUS
  86. RETURN
  87.         END

Az a baja hogy csak 2 szer számol el 0-tól 9-ig. Utánna beáll a nulla a kijelzőre és villog. Valamikor 3-szór is elszámol és utána áll be a nulla.
Próbálta már XOR,AND és SUB paranccsal is, de egyik sem volt jobb .
Ha valakinek van kedve végignézni és elmondaná hogy mi a gond annak nagyon örülnék.
(#) kissi válasza Baxi hozzászólására (») Jan 31, 2011 /
 
A 18-as sorozatnál a memória címek páros címeken vannak, szerintem ez lehet a gond ( nem próbáltam ki! ). Az ADDWF PCL,F viszont csak egyesével növeli a PCL tartalmát !
A táblázathívás előtt meg kell kétszerezni a W tartalmát!

Steve
(#) trudnai válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Elso hiba, hogy RCALL-al cikluban hivogatod sajat magad -- betelik a stack es csinal egy resetet, vagy csak rosszul fog mukodni...

Masik, hogy egyszer elered a LATB-n azt az allapotot es akkor vegtelen ciklusban fogsz visszafele ugralgatni...

A harmadik, hogy mivel ez egy 18F, ezert a TEMP-et elobb 2-vel meg kellene szorozni mielott a W-be toltod es azt a PCL-hez adod... Errol mar beszeltunk itt... Legegyszerubben ezt ugy tudod megcsinani, hogy RLNCF TEMP,W-vel olvasod ki es nem MOVF -el...

Utana a ciklus vegen szinten RCALL-ozol BRA helyett, igy megintcsak a stack-et telited be hibas mukodest eredmenyezve...

Hirtelenjeben ennyit, majd ha ezek kijavultak tovabb nezzuk
(#) icserny válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Már ne haragudj, de ebből ki nem derül, hogy mit is akartál csinálni. S ha PIC18-at használsz, akkor miért PIC16 stílusban programozod? A programkódot pedig legközelebb mellékletként légy szíves csatolni, mert így nem lehet vele semmit sem kezdeni (copy-paste a sorszámokat is viszi a szöveggel).
(#) watt válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Javaslom nézd meg a 18F-ek táblázatkezelési módszerét(adatlap), ezt meg hagyd meg a 16F-ek kínlódásai között...
(#) Baxi válasza watt hozzászólására (») Jan 31, 2011 /
 
Hi
Mit értettek 18f programozásán, annyira másabb mint a 16f-é?
(#) trudnai válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Igen, elegge mas... Nyilvan az alapok hasonloak, nem kell legelolrol kezdeni, de hat nagyon sokminden mas -- ezt a byte-os kontra szavas cimzesbol adod kulonbsegeket mar meg is tapasztaltad! De nem is kellene szenvedned a PCL-lel ha normalis tablazat cimzo regiszterekkel olvasnad ki az adatokat, es akkor raadasul 1 byte-nyi informaciohoz nem kellene 2 byte-ot (1 szot) felhasznalnod...
(#) watt válasza Baxi hozzászólására (») Feb 1, 2011 /
 
Nézz fel az oldalamra, van egy egyszerű táblázatos ASM példa is.
(#) icserny válasza Baxi hozzászólására (») Feb 1, 2011 /
 
Idézet:
„Mit értettek 18f programozásán?”

- A bővebb utasításkészlet kihasználása
- Access Bank használata (nem kell banksel TRISC és tsai)
- Mutatók használata
- Linker és szekciók használata
- Adatverem használata
- S nem utolsó sorban azt sem kellene elfelejteni, hogy a MASM makroassemblert jelent.

Ezek közül egyik-másik pont PIC16 esetén is megszívlelendő, de PIC18 esetén meg pláne...

Mindenre nekem sincs időm meg energiám, de a fentiekből igyekeztem néhány hasznos fogást bemutatni a PICCOLO projektben. A makrók használata pl. az Assembly programozás haladóknak c. fejezet végén került bemutatásra. Nem mintha különösebben értenék hozzá, mert nem szoktam assembly-ben programozni. De ha programoznék, biztosan úgy csinálnám, hogy tömörebb és áttekinthetőbb legyen a forrás.
(#) trudnai válasza icserny hozzászólására (») Feb 1, 2011 /
 
Igazandibol a 16F-ben is van makro es linkser script (sot, 10F-ben is), es termeszetesen van mutato is. Ezekbol le lehet emulalni az adat vermet is -- csak ez is mint mas dolgok is kicsit korulmenyesebbek.

En az alabbi fo kulonbseget latom 16F (midrange) es 18F (enhanced) kozott:

1. Bovebb utasitas keszlet (amit emlitettel volt, segitesegevel kevesebb program memoria es futasi ido felhasznalasaval lehet ugyanazt az algoritmust leirni)

2. Kenyelmesebb memoria eleresben (access RAM hasznalata FSR-ekre, amit szinten emlitettel)

3. 2 szintu megszakitas (prioritasos megszakitas)

4. Fast-call (automatikus STATUS es WREG mentes / vissza allitas)

5. 2 kulon indirekt memoria cimzo (C es mas nyelvekhez nagy segitseg a stack-frame-ek letrehozasaban, amivel igazi auto tarolasi osztaly valosithato meg, tehat reentrans fuggvenyek, pl rekurziv algoritmusok valnak lehetove)

6. Auto-incrementalo/decrementalo indirekt cimzes (konnyebbe teszi a szoftveres adat verem letrehozasat)

7. Hozzaferes a call-stack-hez (lehetove teszi tobbszalu utemezok fejleszteset -- igazi pre-emptiv RTOS valik lehetove ezaltal)

8. PLL (belso vagy kulso oszcillatorbol magas orajel eloallitasa)
(#) michael67 hozzászólása Feb 1, 2011 /
 
Sziasztok!
Egy olyan kérdésem lenne, hogy egy kis kommunikációs programot próbálgatok egy 16f628a-val. 19200-as bps-ig minden jó(oda-vissza küldözgetek), de 38400-nál már sem adni, sem venni nem tudok. 4Mhz-s rezonátort használok. BRGH értéke=1 (high speed)
Az adatlap szerint SPBRG értékének 6-nak kell lenni.
Van valakinek tippje, miért nem tudok nagyobb sebességet beállítani? Esetleg kevés a 4Mhz?
(#) potyo válasza michael67 hozzászólására (») Feb 1, 2011 / 1
 
Az a 7% hiba a valós és a névleges bitsebesség között már elég sok. A 10 bites átvitelnél (start+8+stop) az utolsó bit már több mint kétharmad bitidővel lesz elcsúszva, vagyis a stop bitet már eléggé lehetetlen időben venni, de már az előző 2-3 bitben sem lennék biztos. Vagy használj nagyobb sebességű kvarcot (pl. 8MHz-es kvarccal és 12-es SPBRG-vel 0,16%-os pontosságú lesz a bitsebesség), vagy elégedj meg a 19200-as sebességgel. 3%-tól nagyobb eltérésre nem alapoznék, hogy megbízhatóan fog üzemelni.
(#) michael67 válasza potyo hozzászólására (») Feb 1, 2011 /
 
Köszi a választ. Valami ilyesmire számítottam A neten is csak 20Mhz-s kvartzokkal találtam példákat.
Cserélhetem ki az oscit. De ez van. Köszi a gyors segítséget.
(#) Baxi válasza watt hozzászólására (») Feb 1, 2011 /
 
Hi
Megnéztem és tényleg semmi köze a 16-é hoz.
De viszont az se nagyon megy na de ez
Nincs valakinek valamilyen példa programja a táblázat kezeléshez hogy a gyenge elmémbe beletudjam verni a működését? Mert az adatlapból nem bírtam kihámozni.
Előre is köszönöm.
(#) Hp41C válasza Baxi hozzászólására (») Feb 1, 2011 /
 
Szia!

Mit is szerettél volna ezzel a programmal, hogyan kellene működnie? Valamilyen sorrendben megjeleníti a számjegyeket egy hétszegmenses kijelzőn... De milyen sorrendet szeretnél?
(#) Hp41C válasza michael67 hozzászólására (») Feb 1, 2011 /
 
Szia!

Az oszcillátor típusát állítsd át HS-re, ha még nem az lenne...
(#) Baxi válasza Hp41C hozzászólására (») Feb 1, 2011 /
 
Hi
Semmi különöst csak tanulgatni a pic-ezést, úgymond.
Egyébként 0 -9 számoljon fel utána kezdje elölről amihez táblázatból szedi ki a a kiírandó számjegyeket.
(#) michael67 válasza Hp41C hozzászólására (») Feb 1, 2011 /
 
Az sem segített , viszont a 20Mhz igen. Most működik hibátlanul.
(#) whalaky hozzászólása Feb 1, 2011 /
 
Sziasztok!
A tapasztaltabb uraktól szeretném megtudni, hogy ha egy PIC (nevezetesen a 18F4620) adatlapjában az áll hogy
Idézet:
„Wide operating voltage range: 2.0V to 5.5V”
azt mennyire kell/lehet komolyan venni?
A helyzet az, hogy 3,3V-ról akarom járatni az eddigi 5V helyett, de a különböző fórumokon lehet olvasni hogy nem minden esetben szeretik ha nem 5V-ról hajtják. Van valakinek ezügyben némi tapasztalata?
ENC28J60-at és SD kártyát szeretnék használni vele.
Van egy DEMO board ami nagyvonalakban ugyan ezt a készletet használja, de az 5V-ról megy, és 74HC125-el intézi a szintillesztést. A miértjét sehol nem taglalták, ezért megvan bennem a félsz hogy ha működik is nem lesz stabil.
(#) vicsys válasza whalaky hozzászólására (») Feb 1, 2011 /
 
Nagy tapasztalatom nincs, de mérget mernék venni rá, hogy nem túl magas frekin, stabilan menni fog. Talán az adatlap tárgyalja, hogy 3,3V-nál mi a felső határfreki.
(#) potyo válasza whalaky hozzászólására (») Feb 1, 2011 /
 
Az adatlap tartalmaz erről információt. 18F4620-ra minimum 4,2V-ot adnak meg frekvenciától függetlenül. 18LF4620-ra 3,3V-ról 25MHz-et ír maximumként. Persze ment már nekem 16F876 1,6V-ról is, szóval nem kizárt, hogy a 16F4620 is elmegy stabilan 3,3V-ról, de azért benne van a lehetőség, hogy nem fog menni.
(#) icserny válasza whalaky hozzászólására (») Feb 1, 2011 /
 
Nem volna bölcsebb egy 3,3 V-os típust választani helyette? Pl. PIC18F46K20, vagy valamelyik J-s típus.

Gondosan össze kell hasonlítani az adatlapokat (az Errata-kat is!), hogy kiderüljön, mennyire fájdalmas a váltás.
(#) zolee1209 válasza icserny hozzászólására (») Feb 1, 2011 /
 
Még jó, hogy kérve lett a görgetős megjelenítés a fájl csatolás helyett a hosszú kódok miatt... Aki kérte, majd jelentkezik, ha szeretne, én nem nevezem meg, nem akarok ezzel semmi rosszat elindítani. Pusztán felvetettem.
(#) Hp41C válasza michael67 hozzászólására (») Feb 1, 2011 /
 
Szia!
4 MHz -cel megy XT és HS módben is, 20MHz -cel már csak HS módban. Erre szerettem volna felhívni a figyelmedet.
(#) whalaky válasza potyo hozzászólására (») Feb 1, 2011 /
 
Mea culpa! Újabb látványos bizonyítéka hogy az adatlapot VÉGIG kell olvasni..... Ezer bocsánat az ostoba kérdésért!
Való igaz hogy bölcsebb volan másikat választani, de pillanatnyilag nem engedhetem meg magamnak a bölcselkedést.
(de akkor mire vonatkozik az a 2.0-5.5V )
(#) watt válasza Baxi hozzászólására (») Feb 1, 2011 /
 
Ha jól rémlik említettem, hogy az oldalamon az egyik példa egy egyszerű táblázatkezelő.
(#) Baxi válasza watt hozzászólására (») Feb 1, 2011 /
 
Tudom néztem is az oldalt , de nem leletem.
(#) watt válasza Baxi hozzászólására (») Feb 1, 2011 /
 
Várj belikelem: Bővebben: Link
A 3. konfigurációs példában van.
Következő: »»   87 / 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