- Access_OK:
- High RL1
- pause RL1_ON_time
- low RL1
Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
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!
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.
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 ....
Az MCLR lábhoz vezető vonalban volt egy 200 ohmos ellenálás , kiszedtem , de változás nem történt sajnos ...
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.
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
Köszönöm szépen Icserny válaszát, ezeket még nem láttam!
Köszönöm 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!
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:
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.
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
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).
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
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.
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:
helyett például ötszörösre növeljük a késleltetést:
Mostmár csak az a kérdés, hogy a program befér-e a memóriába...
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.
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.
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.
Igen de egyszerüb ha te is látod a kapcsolási rajzát.
Csatolom.
Hát a Basic file-t betöltöm az MPlab-ba és onnan exportálom hex-be.
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.
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.
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.
Én nem programoztam még C18 -ban, de egy tipp: mi van akkor ha const char pointert várna a függvényed ?
nem kell return, mert void a visszatérési érték...
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.
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.
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
Szia!
A pickit2 usbdsc.c állományában a program memóriában létrehozandó struktúrák definicióra rom -mal kezdődik.
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! |
Bejelentkezés
Hirdetés |