Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   499 / 1320
(#) csiefjancsi hozzászólása Jún 7, 2009 /
 
Sziasztok!

Szétnéztem már sokfelé de nem tudtam egyértelmű választ kapni: hogyan lehet egy PicKit2-vel debugolni egy 16F690-et? Lehet egyáltalán? És milyen program kell hozzá? (sajnos az Mplabot nem ismerem)

Előre is köszönöm a válaszokat!
(#) icserny válasza csiefjancsi hozzászólására (») Jún 7, 2009 / 2
 
A hivatalos forrás a www.microchip.com/pickit2, benne a támogatott mikrovezérlők listájával.

Idézet:
„hogyan lehet egy PicKit2-vel debugolni egy 16F690-et?”

Rövid válasz: sehogy!

Bővebb válasz: a PIC16F690 egy speciális változatát kell használni, azt kell a helyére dugni (ha foglalatban volt a PIc). Ez a speciális változat az AC162061 adapter formájában vásárolható meg, de kell hozzá egy átmenő kábel is, mert az adapteren telefoncsatlakozó van (mint amilyet az ICD2 használ).

SZVSZ: Ha mindenáron debug-olni akarsz, sokkal olcsóbb megoldás, ha egy nagyobb tudású PIC-et veszel helyette.
(#) pepe33 válasza icserny hozzászólására (») Jún 7, 2009 /
 
A VDDCORE/VCAP -ra az egyik 100nF helyett felraktam egy 10µF kondit. Ilyen már csak polarizált volt , de gondolom ez mindegy. Egyébként ha PICKIT programot elinditom és még nincs rádugva a 18F97J60 akkor szól hogy ellenőrizzem a A VDDCORE/VCAP kondi meglétét. Amikor rádugom már nem írja ezt , de a helyzet változatlan, végigmegy a programozás , aztán írja hogy failed 0x000000 adress ....
(#) pepe33 válasza pepe33 hozzászólására (») Jún 7, 2009 /
 
Az MCLR lábhoz vezető vonalban volt egy 200 ohmos ellenálás , kiszedtem , de változás nem történt sajnos ...
(#) icserny válasza pepe33 hozzászólására (») Jún 7, 2009 / 1
 
Maradhatott volna...
Meg kellne nézni, hogy meg van-e a tápfesz (ha a PICkit2-rőlmegy a tápellátás, akkor érdemes kalibrálni), s eljut-e a PIC-re rendesen, nem terheli-e le a környezet.
(#) pepe33 válasza icserny hozzászólására (») Jún 7, 2009 /
 
Ha a panel saját tápjáról megy ami 3,01V ( PICKIT is ennyit mér ) akkor is ugyanez a helyzet.
Végigmegy a programozás, majd az ellenörzésnél rögtön jön a hiba.
Már kezdek a legroszabbra gondolni , hogy megdöglött a PIC ....
Másik meg nincs itthon ilyen
(#) csiefjancsi hozzászólása Jún 7, 2009 /
 
Köszönöm szépen Icserny válaszát, ezeket még nem láttam!

Köszönöm
(#) icserny válasza pepe33 hozzászólására (») Jún 8, 2009 /
 
Idézet:
„Ha a panel saját tápjáról megy ami 3,01V ( PICKIT is ennyit mér ) akkor is ugyanez a helyzet.”

Nem lehetne próbaképpen 3,3 V-ot adni neki ?
A 27.1 táblázatban az áll, hogy VDD minimális értéke bekapcsolt Ethernet modul esetén 3.1 V. Nehogy már ezért ne működjön!
(#) Hp41C válasza steev hozzászólására (») Jún 8, 2009 /
 
Sziasztok!

Egyszer már írtam, hogy az ellenállásokkal való feszültségosztónak az a baja, hogy a kimeneti karakterisztikája nem lineáris. A felső ellenállás helyett áramgenerátort (LM394) alkalmazva ez a hiba kiküszöbölhető.
Ha 1mA áramot állítasz be, akkor:
  1. Fok     Volt     A/D
  2.    0        0,8      164
  3.    150    2.270  465


465-164 = 301 -> 150 fok eltérésre 301 kód változást kapunk. Ez fél fokos felbontású, lineáris skálájú mérés.
(#) szilva válasza Hp41C hozzászólására (») Jún 8, 2009 /
 
Szerintem LM334-re gondoltál. De ha már itt tartunk, akkor lehetne akár a hőszonda is LM335.
(#) Hp41C válasza szilva hozzászólására (») Jún 8, 2009 /
 
Szia!
Igazad van - elírtam. A típus helyesen LM334. Az LM335 hőszenzor is jó, de neki már van érzékelője....
(#) menyus hozzászólása Jún 8, 2009 /
 
Sziasztok!

Van egy kis gondom a BASELINE tipusú PC10F206 programozásával. Sorozat programozóval programozom őket nem ICSP n keresztül. Az a jelenség hogy elég sűrűn van olyan hogy OSCCAL invalid értéket ír (általában 0FFF) a PICkit2 a programozáskor. Ilyenkor sem az OSCCAL programon belüli újragenerálása, sem a manuális beállítás nem segít. Mitől lehet ez a probléma? És miért jön elő esetlegesen? Az egyik példánynál jó a másiknál nem jó....Mivel lehet ezt a hibát megszüntetni?

Köszi
(#) trudnai válasza menyus hozzászólására (») Jún 8, 2009 /
 
Szerintem valami nem stimmel az aramkorodben -- pl nincs hidegito kondi a PIC labanal vagy nem jol erintkezik. Ha jol ertem van egy programozo headered es abba helyezed bele a PIC-et meg mielott felprogramoznad? Ez DIP-es vagy a SOT23-6?

(En ICSP-n keresztul programoztam a 10F202-t mindig es nagyon ritkan volt gondom vele. Mikor gond volt szinte biztos lehettem benne volt egy hideg forrasztas vagy zarlat... Szinten PICkit2-vel, de "piros gombosra" atalakitas utan amit magam vegeztem el).
(#) tomi134 hozzászólása Jún 8, 2009 /
 
Szisztok segítséget szeretnék kérni tőletek. Építetem egy kód zárat de csak 3 másodpercig tartja bekapcsolva a relét viszont nekem 30 másodpercre lenne szükségem. Próbálkoztam már az RL1_ON_time con 1000 * 3 'sec. Relay ON time módosításával de nem jártam sikerrel. Ha tudna valaki segíteni nagyon szépen megköszönném.
Csatolom a filet.
Elöre is köszönöm!
Üdv. Thomas
(#) mate_x válasza watt hozzászólására (») Jún 8, 2009 /
 
Hello!
Eddig ez volt az első égetőm. Pont a te oldaladról vettem az ötletet innen:Bővebben: Link
Szerintem az áramkört jól építettem össze, eddig ilyen áramkörökben nem nagyon szoktam hibázni..bár most kitudja.
(#) icserny válasza tomi134 hozzászólására (») Jún 8, 2009 / 1
 
Nem lehet tudni, hogy meddig növelhető az érték túlcsordulás nélkül. Egyszerűbbnek tűnik ha az alábbi részben a pause-k számát növeled:
  1. Access_OK:
  2.    High RL1
  3.    pause RL1_ON_time
  4.    low RL1


helyett például ötszörösre növeljük a késleltetést:
  1. Access_OK:
  2.    High RL1
  3.    pause RL1_ON_time
  4.    pause RL1_ON_time
  5.    pause RL1_ON_time
  6.    pause RL1_ON_time
  7.    pause RL1_ON_time
  8.    low RL1


Mostmár csak az a kérdés, hogy a program befér-e a memóriába...
(#) tomi134 válasza icserny hozzászólására (») Jún 8, 2009 /
 
Szia nagyon szépen köszönöm a gyors választ!
Kipróbáltam az ötletedet lefutattam Proteusnak a szimulátorba, de sajna nem változott semmit.
(#) menyus válasza trudnai hozzászólására (») Jún 8, 2009 /
 
A sorozat programozó az házgyári, tulajdonképpen egy panel amire fel van tervezve a SOT23-6 helye. A PIC et egy alpakka lemez szorítja rá a PAD ekre programozás közben. Az ICSP hez használatos lábak ki vannak vezetve, innen van csatlakozás a PICkit 2 höz (piros gombos) Kicsit félreérthetően fogalmaztam mikor azt írtam hogy nem ICSP n keresztül programozok, úgy értettem hogy nem áramköri környezetben van a mikrovezérlő programozás közben. A táp lábon van közvetlenül egy 100n. Viszont a forrásban találtam egy olyan részt hogy :

MOVLW B'00000000'
MOVWF OSCCAL

Ez eredetileg az oszcillátor frekvenciát állítja be a középfrekvenciára. Kicsit visszaolvastam az OSCCAL al kapcsolatban a fórumot, és ezek után kivettem az inicializálásból ezt a 2 sort. Szerintem nem kell, főleg abban az alkalmazásban amiben a PIC10F206 ot használom. Egy "mezei" várakoztatós késleltető áramkör, csak relatív sok kell belőle és igen kis méretben kellett összeraknom . Ezért lespóroltam a panelről az ICSP csatlakozót.

Azóta megszünt a hiba, de az az érdekes hogy kb 1 éve használom ezt az egyszerű kis programot különféle megoldásokhoz és ilyen problémám sosem volt még vele akkor sem mikor a 2 kérdéses programsor benne volt az ini. ben.
(#) icserny válasza tomi134 hozzászólására (») Jún 8, 2009 /
 
Tisztázzunk azért néhány dolgot, nehogy elbeszéljünk egymásmellett:

1. Az RL1 kapcsolgatása az A port 3-as lábán történik (0-tól kezdődik a számozás), azt a lábat nézed?
2. A program lefordul egyáltalán (keletkezik-e friss dátumú hex)?
3. Készíthető-e assembly lista a fordításkor?

Olyan nincs, hogy 5 késleltetés ugyanannyi, mint egy késleltetés, ezért gondolom, hogy valami félreértés/-nézes van a dologban.

(#) tomi134 válasza icserny hozzászólására (») Jún 8, 2009 /
 
Igen de egyszerüb ha te is látod a kapcsolási rajzát.
Csatolom.
(#) tomi134 válasza tomi134 hozzászólására (») Jún 8, 2009 /
 
Hát a Basic file-t betöltöm az MPlab-ba és onnan exportálom hex-be.
(#) NickE hozzászólása Jún 8, 2009 /
 
C18 alatt van egy kis problémám. Egy LCD-hez írok függvényeket és a következő kód lefut, de a pointer értelmezésével vannak gondok.

  1. void LCD_String(unsigned char *str){
  2.         while (*str!=0){
  3.           while (LCD_Busy()) ;
  4.           LCD_Data(*str);
  5.           str++;
  6.         }        
  7. }
  8.  
  9. LCD_String("hello");


A C18 a sztringeket a programmemóriában tárolja. Viszont a fenti kód esetén ram pointerként megy át a mutató. Próbáltam explicit megadást is, de akkor type mistach hibaüzenetet ad. Szerintem meg pont nélküle van type mismatch és nem is működik helyesen. Szóval hogy is kell a fenti kódot megírni? A sztringet nem szeretném külön definiálni, csak így függvényparaméterként átadni.
(#) kisszee válasza NickE hozzászólására (») Jún 8, 2009 /
 
Nem vagyok benne biztos, de nem kell return; a while ciklus után ? Csak mert sok helyen láttam már ilyesfajta függvényt, azokban volt, de lehetséges, hogy ez nem hiba és most hülyeséget mondtam.
(#) lidi válasza NickE hozzászólására (») Jún 8, 2009 / 1
 
Én nem programoztam még C18 -ban, de egy tipp: mi van akkor ha const char pointert várna a függvényed ?
(#) NickE válasza kisszee hozzászólására (») Jún 8, 2009 /
 
nem kell return, mert void a visszatérési érték...
(#) NickE válasza lidi hozzászólására (») Jún 8, 2009 /
 
Próbáltam const -al is, úgy is type mismatch hibaüzenetet ad. Csak úgy fordul le, ahogy az előző hozzászólásban látható, de nem jól működik.

(#) lidi válasza NickE hozzászólására (») Jún 8, 2009 /
 
Hát én úgy kerültem meg a problémát, hogy van egy temp stringem, és strcpy -val, meg sprintf -el töltöm fel mindíg, amit azután kiírok.
(#) trudnai válasza menyus hozzászólására (») Jún 8, 2009 / 1
 
Idézet:
„A sorozat programozó az házgyári, tulajdonképpen egy panel amire fel van tervezve a SOT23-6 helye. A PIC et egy alpakka lemez szorítja rá a PAD ekre programozás közben.”


Magyaran az elo fordulhat, hogy a labak nem megfeleloen erintkeznek? Altalaban valamilyen rugos erintkezot szoktak alkalmazni, bar sokak szerint a tokbol kijovo labak is megfelelo rugokent viselkednek. Nem tudom, probaldd meg enyhen megcinezni a pad-eket (utana harisnyaval szedd fel a felesleget, csakhogy a felulet ujra legyen futtatva).

Idézet:
„Az ICSP hez használatos lábak ki vannak vezetve, innen van csatlakozás a PICkit 2 höz (piros gombos) Kicsit félreérthetően fogalmaztam mikor azt írtam hogy nem ICSP n keresztül programozok, úgy értettem hogy nem áramköri környezetben van a mikrovezérlő programozás közben.”


Nem fogalmaztal felre erthetoen. Az ICSP az (In-Circuit Serial Programming) -ra utal, azaz aramkorbe epitett soros programozas), nalad pedig nem az aramkorben, hanem abbol kiemelve van az IC...

Idézet:
„MOVLW B'00000000'
MOVWF OSCCAL”


Nem feltetlen baj ez, csak elmeletileg ezt ugy kellene, hogy figyeln kell miert kovetkezett be a reset, es ha POR van akkor valami ilyesmi kellene (meg mielott a W-t bantanad):

ANDLW 0xFE
MOVWF OSCCAL

(Az AND azert kell mert a legalso bit az FOSC/4 kirakasat vezerli a TOSC labra, ha veletlenul bebillenne akkor baj szarmazodhatna belole)

Tudni kell meg azt is, hogy a POR-kor a PC erteke 0x1FF azaz a program tar legmagasabb helyi erteken kezdi el az utasitasok vegrehajtasat. Normal esetben ott van ugye a MOVLW es ezutan a PC atcsordul 0-ra es kezdodik a reset vektoron a firmware vegrehajtasa. Ha az OSCCAL helyen valami marhasag van akkor lehet el sem indul a firmware-ed... pl egy GOTO $ miatt teljesen leblokkolodhat a firmware vagy ha mashova ugrana akkor megjosolhatatlan kovetkezmenyekkel jarhatna... Szoval teljesen mindegy, hogy az a MOVWF OSCCAL amit irtal ott van-e vagy hogy mit toltesz bele, a problema azzal lesz, hogy az az utasitas ott a program terulet vegen nem jo...
(#) Hp41C válasza NickE hozzászólására (») Jún 8, 2009 /
 
Szia!

A pickit2 usbdsc.c állományában a program memóriában létrehozandó struktúrák definicióra rom -mal kezdődik.

  1. rom struct{byte report[29];}hid_rpt01={
  2.     0x06, 0x00, 0xFF,       // Usage Page (Vendor Defined)
  3.     0x09, 0x01,             // Usage (Vendor Usage)
  4.     0xA1, 0x01,             // Collection (Application)
  5.     0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
  6.     0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
  7.     0x15, 0x00,             //      Logical Minimum (Vendor Usage = 0)
  8.     0x26, 0xFF, 0x00,       //      Logical Maximum (Vendor Usage = 255)
  9.     0x75, 0x08,             //      Report Size (Vendor Usage = 8)
  10.     0x95, 0x40,             //      Report Count (Vendor Usage = 64)
  11.     0x81, 0x02,             //      Input (Data, Var, Abs)
  12.     0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
  13.     0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
  14.     0x91, 0x02,             //      Output (Data, Var, Ads)
  15.     0xC0};                  // End Collection
  16.  
  17. rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002,&sd003};
(#) Kapitány002 hozzászólása Jún 8, 2009 /
 
Sziasztok!

A segítségeteket kérném egy probléma megoldásában. Egy akkumulátortöltőhöz készítek egy PIC mikrokontrollerrel működő kis kiegészítést, az áramkör a kimeneti feszültséget és áramot és az akkuhőmérsékletet méri és írja ki LCD-re, illetve soros porton keresztül számítógépen is leolvashatók ezek az adatok. A program megírásával vannak problémáim. A programot pascal nelven szeretém megírni (hozzám ez áll közelebb), a számítógépes segédprogram Delphi nyelven fog íródni. A PIC programban miután beolvasom az analóg értékeket, az AD konverzió utáni értéket meg kell szoroznom egy konstanssal, illetve amennyiben szükséges offszetértékkel is el kell tolni. A szorzót és ofszetet szeretném a segédprogram segítségével megadni a PIC-nek. A kérdésem az lenne, hogyan tudom megadni a PIC-nek azt, hogy a konstans amit éppen elküldök az micsoda és, hogy az EEPROM-ba hova írja be? A másik kérdésem az lenne, hogy hol találok olyan C vagy pascal nyelven írt PIC mintaprogramokat, amelyek szájbarágós módon sorról-sorra elmagyarázzák a program működését? A segítségeteket előre is köszönöm!
Következő: »»   499 / 1320
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