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   186 / 1211
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
Próbáld meg manuálisan felismertetni ...
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Igen piros ott feljebb modosítotam a szöveget Nem most már nem 34ff
(#) speedbump hozzászólása Dec 24, 2011 /
 
Sziasztok,

szeretnék egy megszakítási rutint kapcsolni a timer0-hoz. Csatoltam a kódot, amit írtam és nem működik Úgy gondolom, hogy elég közel járok a megoldáshoz de mégsem sikerül elérnem, hogy villogjanak a led-ek.

a "void interrupt timer0_isr(void)" helyes egyáltalán? A neten találtam olyat, hogy "void interrupt()", "void isr()" stb.

előre is köszönöm a segítséget és boldog karácsonyt!!!



  1. #include <htc.h>
  2. #include <pic.h>
  3.  
  4. __CONFIG (DEBUG_ON & LVP_OFF & FCMEN_OFF & IESO_OFF & BOREN_OFF &
  5.     CPD_OFF & CP_OFF & MCLRE_ON & WDTE_ON & FOSC_INTRC_NOCLKOUT);
  6.  
  7.  
  8. #define _XTAL_FREQ 4000000
  9.  
  10. char leds[9] = {0, 1, 2, 4, 8, 16, 32, 64, 128};
  11.  
  12. int postscaler = 0;
  13. int counter = 0;
  14.  
  15. void interrupt timer0_isr(void)
  16. {
  17. if(T0IE && T0IF)
  18. {
  19. T0IF = 0;
  20. TMR0 = 0;
  21. postscaler++;
  22. if (postscaler > 10)
  23. {
  24. postscaler = 0;*/
  25. PORTD = leds[counter];
  26. counter++;
  27. if (counter > 8)
  28. {counter = 0;}
  29. }
  30. }
  31.  
  32. }
  33.  
  34.  
  35. void main(void)
  36. {
  37. ANSEL = ANSELH = 0x00;//All ports are DIO
  38. TRISD = 0x00;//PortD is a DO port
  39. T0CS = 0;//TMR0 is a counter
  40. PSA = 0;//Assigned to WDT
  41. PS0 = PS1 = PS2 = 1;//1:256 prescaler
  42.  
  43. GIE = 1;//Enable global interrupts
  44.  
  45. PORTD = leds[5];//Set up something on portD
  46.  
  47. TMR0 = 0;//Reset timer0
  48. T0IF = 0;//Reset the timer interrupt flag
  49. T0IE = 0;//Enable timer interrupts
  50.  
  51. while (1)
  52. {
  53. }
  54.  
  55. }
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
Akkor keresd meg a beállítások közt és írd át valami 54ff re a "számot" Engem egy12f675 szivatott így de nekem csak az írás volt sikertelen . Aztán egy másik picet betéve megnéztem a számot és azt beírva a "hibás" is megjavult , Viszont ha voltage level errort ír akkor vagy zárlat van valhol a táp résznél vagy fordítva van a pic
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Igen és utána??
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
A vpp alap állapotban hová van beállítva ? a kockában 5v ot kell látnod. Nem lehet hogy "minden jó" csak véletlenül fordítva van a pic ?
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Most elméletileg sikerült de az oscal pirosba 14FF
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
Van másik ilyen piced ? tedd be és nézd meg a "kódját"
Aztán tedd ezt vissza és írd be neki is azt a kódot .
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Sajnos nincs:/
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
Amikor 34ff et írt az piros volt ?
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Igen de most 14FF-et irt és zöldbe van hogy fel progizta automatán
(#) kaqkk válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
És rájöttél hogy mi volt a hiba ?
(#) morzsa15 válasza kaqkk hozzászólására (») Dec 24, 2011 /
 
Nem..
(#) Hp41C válasza morzsa15 hozzászólására (») Dec 24, 2011 /
 
A 0x14FF egy bsf 0x3F,1 utasítás kódja, de ide a 0x34FF retlw 0xFF kellene.

Ha a programod előírás szerint erre a címre végrehajt egy call utasítást, akkor nem tér vissza, hanem a pc átfordul és megint a call -ra fog futni, azaz a programja nem indul el. Ha a program nem törődik a kalibrálással, akkor az utasítás teljesen felesleges...
(#) morzsa15 válasza Hp41C hozzászólására (») Dec 25, 2011 /
 
Huu ebből nem sokat értetem elmagyaráznád légyszíves nagyon kezdő vagyok még a picel kapcsolatba de mi lehet a hiba??
(#) Hp41C válasza morzsa15 hozzászólására (») Dec 25, 2011 /
 
OSCCAL: Egy regiszter a belső oszcillátor kalibrálására. A kalibrációs érték minden kontrollerre egyedi lehet, a gyártó egyes típusoknál az utolsó memória szóban előre programozva szállítja a kontrolleret. Azok a típusok, amik 0 címről indulnak, itt egy "retlv adat" alakú utasítást tartalmaznak, aminek az adat része a kalibrációs érték, amit az OSCCAl regiszterbe kell tölteni.

A programozó program feladata törlés előtt az adat kiolvasása, tárolása a törlés idejére, majd visszaprogramozása a legutolsó memória szóba.

A kontroller programját író feladata (amennyiben belső a oszcillátort használja és fontos a pontos időzítés), hogy a kalibrációs értéket kiolvassa és beírja az OSCCAL regiszterbe. Az érték kiolvasása egy, az utolsó memóriaszóra vonatkozó szubrutin hívással (call) lehetséges, emiatt kell, hogy az ott tárolt utasítás retlw adat, azaz szubrutinból való visszatérő utasítás legyen.

Abban az esetben, ha a programban megvan a hívás a kalibrációs adat kiolvasására, de az OSCCAL kalibrációs érték hibás, nem retlw utasítás, a program elindul, eljut a kiolvasás szubrutin hívásához, meghívja a legutolsó program memóriaszót, mint szubrutint, onnan nem tér vissza a hívó call utánra, hanem a memória legelső szavára (0 címre) fordul át a vezérlés és kezdődik minen előlről. Ekkor a program nem tud rendesen elindulni.
(#) speedbump válasza speedbump hozzászólására (») Dec 25, 2011 /
 
Gondolom T0IE = 0 helyett T0IE = 1 a helyes, de sajnos még így sem működik
(#) morzsa15 válasza Hp41C hozzászólására (») Dec 25, 2011 /
 
Oks köszönöm szépen végül is sikerült de még aszt szeretném meg kérdezni hogy kell használni a eredeti pickit 2vel a programmer go to funkciót?
(#) Hp41C válasza morzsa15 hozzászólására (») Dec 25, 2011 /
 
(#) morzsa15 válasza Hp41C hozzászólására (») Dec 25, 2011 /
 
Az a baj hogy nem magyar :s
(#) vicsys válasza morzsa15 hozzászólására (») Dec 25, 2011 /
 
(#) morzsa15 válasza vicsys hozzászólására (») Dec 25, 2011 /
 
Hát próbáltam de többet értek belőle angolul mint ezzel.. :/
(#) vicsys válasza morzsa15 hozzászólására (») Dec 25, 2011 /
 
Akkor, probléma megoldva!
(#) morzsa15 válasza vicsys hozzászólására (») Dec 25, 2011 /
 
Na de annyit meg tudod mondani hogy mikor villog a traget utána meg a busy akkor "mivan" mert a traget folyamatosan villog??
(#) speedbump hozzászólása Dec 25, 2011 /
 
Sziasztok,

a probléma, mint amit tegnap felvetettem félig- meddig megoldódott. Ha a csatolt kódot az MPLAB-ben programozom fel (programmer/program) és utána az MCLR-t Vdd-re húzom (a pickit2 program toolbar-on lévő gombbal) akkor működik a megszakítás. WTF?

A pickit2 v2.61 segítségével programoztam fel eddig a .hex állományokat és semmi problémám nem volt vele (na jó, csak pár napot használtam még). Most is felmennek rá azok az egyszerű programok, amikben nincs megszakítás.

Az MPLAB-es programozással az a problémám, hogy ha a pickit2-t lehúzom az USB-ről, majd visszadugom akkor nem indul újra a program.

Erre van valami épkézláb magyarázat?

köszönöm.

  1. #include <htc.h>
  2. #include <pic.h>
  3.  
  4. #define _XTAL_FREQ 4000000
  5.  
  6. __CONFIG (DEBUG_ON & LVP_OFF & FCMEN_OFF & IESO_OFF & BOREN_OFF &
  7.     CPD_OFF & CP_OFF & MCLRE_ON & WDTE_OFF & FOSC_INTRC_NOCLKOUT &
  8. BOR4V_BOR21V);
  9.  
  10. volatile unsigned char szamlalo = 0;
  11.  
  12. void interrupt ISR(void)
  13. {
  14. if (T0IE && T0IF)
  15. {
  16. T0IF = 0;
  17. szamlalo++;
  18. if (szamlalo == 10)
  19. {
  20. PORTD ^= 0xFF;
  21. szamlalo = 0;
  22. }
  23. }
  24. }
  25.  
  26. void main(void)
  27. {
  28.  
  29. ANSEL = ANSELH =0x00;
  30.  
  31. TRISD = 0x00;
  32. PORTD = 0xF0;
  33.  
  34. T0CS = 0;
  35. PSA = 0;
  36.  
  37. PS0 = PS1 = PS2 = 1;
  38.  
  39. T0IF = 0;
  40. TMR0 = 0;
  41.  
  42. T0IE = 1;
  43. GIE = 1;
  44.  
  45. while(1)
  46. {
  47. }
  48. }
(#) speedbump válasza speedbump hozzászólására (») Dec 25, 2011 /
 
Idézet:
„Az MPLAB-es programozással az a problémám, hogy ha a pickit2-t lehúzom az USB-ről, majd visszadugom akkor nem indul újra a program.”


Ez igaz a pickit2 v2.61-re is. Mivel onnan kap tápot a modul ezért ha lehúzom meg visszadugom így is úgy is, vissza kell kapcsolni a tápot. Szóval ez a probléma is kilőve, marad a kérdés, hogy miért csak az MPLAB-on belül működik a hex file.
(#) kaqkk válasza speedbump hozzászólására (») Dec 25, 2011 /
 
Én is jártam már úgy programmal hogy a pickit 2 vel indítva nem indult ,de külső tápról (vagy a kész áramkörben) tökéletesen működött . Én nem tudtam rájönni mitől van ez
ezért ha egy program megy szimulátorban , és nem megy beégetés után a pickitről akkor mindig kipróbálom külső tápról
és az esetek 98%ában beindul .
(#) speedbump válasza kaqkk hozzászólására (») Dec 25, 2011 /
 
kösz szépen a választ! Feleslegesen * m egy napot és teljesen véletlenül jöttem rá, hogy MPLAB-ben müködik Most ismerkedem a mikrovezérlőkkel, vagy 100x írtam át a programot, hogy vajon hol követem el a hibát

Sebaj ezentúl a pickit2 égetőt SW-t hanyagolni fogom.
(#) kaqkk válasza speedbump hozzászólására (») Dec 26, 2011 /
 
Nem kell hanyagolni ! Nagyon kevés az olyan progi ami nem indul vele . 1000 ből egy de a szíved joga hogy azt az égetőprogramot használd ami neked jó .
(#) speedbump válasza kaqkk hozzászólására (») Dec 26, 2011 /
 
i gazad van. Azért írtam, hogy hanyagolom, mert nekem ez volt kb az ötödik programom amit írtam és ezzel gondom volt, az mplab-ben meg tökéletesen működött.

Lehet, hogy csak kifogtam az 1000-ből 1-et
Következő: »»   186 / 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