Fórum témák
» Több friss téma |
Fórum » PIC programozás
Sziasztok. Egy kis segítségre lenne szükségem 16F877a ügyében. Szeretném használni a belső comparátort. Egyenlőre úgy írtam hozzá meg a programot, hogy RA0 és RA1 inv- és RA2 vref- RA3 vref+. Először a referencia lábakra szeretnék a VDD és VSS-t kötni, de sajna nem igazán értem hogyan működik a belső referencia generátor. Az adatlapból nem sok dolog derül ki de letöltöttem egy pdf-et DS33023, ebben kicsit bővebb a leírás. Sajnos ebben sem találtam, hogyan tudnám a VDD-t és VSS-t kicsatolni referenciaként. PCFG3CFG0 értéke 1101, A/D kikapcsolva (adcon0.0:=0. Az egész lényege, hogy egy áramkörben kellene figyelni, hogy kapcsolódik-e valamilyen fogyasztó az áramkörbe vagy sem. Erre a legeszrerűbb megoldásként a komparátort használnám, de sehogy nem tudom kikérni belőle hogy van-e rajta valami. Ebben kérném a segítségeteket. A programot pascalban írom, mivel az megyeget. A segítséget előre is köszönöm.
Üdv.: Zoli
Tudtok hibáról a 12F1840 (vagy egyéb a családból) és PICKIT3/ICD3 relációban?
Minden próbálkozásom "Target Device ID (0x0) does not match ...(0x1b80)." hibával zárul, holott eddig a 16F/18F család tagjaival nem volt gondom. Sem PICKIT3 sem ICD3 nem ismeri fel. Még soha nem használtam 12F-es szériából semmit, más típusom sincs, csak az említett 1840-es, erre kellett volna programot írnom.
Szia!
A Ref- és REF+ funkció az A/D átalakítóhoz tartozik. A komparátor referencia modul kimenetét az RA2/AN2/Vref-/CVref lábra tudod kapcsolni. A komparátor referencia modullal sem a Vss sem a Vdd közvetlenül nem jutttható a CVref lábra (ld. adatlap Figure 13-1.). Egy speciális lehetőség azért maradt: Ha egy analóg funkcióval bíró lábat kimenetnek állítunk be (a TRIS bitje 0) a kimeneti meghajtója fogja meghatározni a feszültséget. Ha a lábhoz tartozó portbit értéke 0, akkor a Vss -hez közeli feszültség (terhelés nélkül a Vss), ha a portbit 1, akkor a Vdd -hez közeli feszültség (terhelés nélkül a Vdd). jelenik meg a lábon. Persze ezek a feszültségek a PIC belső Vss ill. Vdd sínjének feszültségei. Pl. sok, nagyobb árammmal terhelt kimenet is van, akkor a földlábak ill. tápláb és a belső sínek közötti hozzávezetések ellenállásán eső feszültségek miatt eltérhetnek a külső Vss és Vdd értékétől.
A "Target Device ID (0x0)" arra enged következtetni, hogy a PGC és/vagy PGD hozzávezetés kontakthibás, nem jó lábra megy, a láb kimenetnek van felprogramozva, a MCLR lábon a feszültség nem elég magas, hogy programozási módba lépjen a kontroller. Próbáld a "Use Vpp first programming entry" módszert. A kontroller lábszáma miatt nyomkövetést csak un. header -rel lehet végezni. A programozást Debugger helyett Programmer menüből próbáld.
Ha kihúzom a 12f1840-et és bedugok a helyére egy 16f1825-öt (felülről lábkompatibilis),akkor kifogástalanul megy, tehát kontakt hiba kizárva.
Több 12f1840-et is próbáltam, elvileg procihiba kizárva. Nem debug menüből programozom. Már elég sok mindent végigmatattam de valami kimaradhatott :-/
Ezeket már olvastam, a mai napom ezzel ment el. A legtöbb probléma abból adódik, hogy nem adnak külső tápot neki, vagy ahogy írtad sima kontakt hiba, de ez nálam nem él. Marha bosszantó. Lassan több időt töltök az égetéssel, mint a programozással
A PK3-nál van olyan, hogy fast programming mód, mint a PK2-nél? Ha igen, akkor kapcsold ki!
A másik, hogy milyen adapterrel próbálkozol? Gyanús, hogy nem teljesen korrekt, pl. túl hosszú vezeték, hidegítés hiánya stb. Simán van olyan, hogy az egyik PIC nem annyira érzékeny, mint a másik...
Reggel óta a következőkkel próbálkoztam (persze nagyrészt túrtam a netet hátha..):
12f1840, sima próbapanelen, táp rádugva, hidegítőkondi, MCLR/VPP felhúzva 10k-val. Nincs más alkatrész Minden eszköz, pigtail és egyebek gyári, semmi házi cucc. MPLABX v2.0 (Sajna nincs semmi régebbi ezen a gépen) 1. PICKIT3-al nem ment 2. Megpróbáltam ICD3-al, azzal sem ment. 3. Kicseréltem a procit 16f1825-re, ICD3-al ment 4. Visszaváltottam PICKIT3-ra, azzal is jó volt. 5. Proci vissza 12f1840-re, viszont másik példány, összesen hármat próbáltam.Szintén nem ment. 6. Próbáltam belső táppal, hátha, nem ment. Most épp fekete kakast áldozok. :-/
A program elejére egy kis késleltetést tettél?
A PICKit3-al vidd RESET-be a kontrollert, utána töröld, és azután programozd.
Mennyi VDD és Vpp tényleges értéke? Teljesül a 8.0 V < Vpp < 9.0 feltétel?
A hozzászólás módosítva: Jan 17, 2014
Este lemegyek szkópért és megnézem, csak feltételezem (16F1825-el jó volt) hogy rendben van.
A biztonság kedvéért megnéztem egy 18f2520-at és 18f242-t is, ezek is szépen ketyegnek. Mint mondtam sosem volt ilyen gondom, igaz soha nem használtam 12f-es családból procit. Öregségemre megtréfálnak ezek a mütyürök A hozzászólás módosítva: Jan 17, 2014
Próbáld ki egy másik gépen.
Én 16F690-el jártam úgy, hogy nem ismerte fel a PK3 amin más PIC-et programoztam. Aztán munka miatt másik gépen is dolgoztam vele, azon meg ment simán. Meg is lepődtem, mert kipróbáltam 2db 690-et is mindkettővel ugyanez volt a helyzet. Ugyanaz az mp-lab, oprendszer mindkét gépen. Az egyetlen különbség, hogy az egyyiken az USB feszültsége csak 4.75V körüli volt amelyiken nem ment, a másikon meg 4.9V körül. Ha nincs másik gép akkor próbáld megtáplálni a PIC-et külső tápról. A hozzászólás módosítva: Jan 17, 2014
A PICkit2 kezeli, felismeri, programozza... De a PICkit2 sem "Midrange / Standard" család tagjaként, hanem a "Midrange / 1.8V min" tagjaként.
..közben visszaértem.
Visszacseréltem a 16f1825-öt (abból csináltam meg az SOS vezérlést) az eredeti 12f1840-re. Meglepetésemre most más a hibaüzenet: "Target Device ID (0x3b80) does not match expected Device ID (0x1b80)." Ezen kicsit meglepődtem, hirtelen nem is találom mi lenne a 0x3b80, a 0x1b80 az természetesen a beállított 12f1840. *hexa javítva A hozzászólás módosítva: Jan 17, 2014
Nincs a PK3-hoz is külön égetőprogram? Mint ha lenne...
Van hozzá, még nem próbáltam.
Nem hagy nyugodni a dolog, mivel tuti nem én vagyok az első aki 12f1840-et akar PK3/ICD3-al programozni v2.0 MPLABX-en keresztül Kezdek újra egy üres project-et, és szépen végigmegyek még egyszer az összes szóbajöhető beállításon.
Az archívumban keresd! (Ezek szerint ezt is félredobták?)
Nos, tiszta fejjel, friss szemmel ma délelőtt sikerült felszámolni a rejtélyt
Első körben a tegnapi áramkört végigmértem,mindenhol az volt amit vártam, kivéve a kommunikációt a PK3 és a pic (12f1840) között. Mert az nem volt. Csináltam egy új, üres project-et, mindent beállítottam ahogy szoktam és ... tadááá, működött. Ismét végigmértem mindent, majd visszatöltöttem az eredeti project-et és lám, ismét nem. Ettől kezdve nem maradt más dolgom, mint pontról-pontra végigmatatva megkeresni a különbséget. Érdekes, hogy watt jó helyen kapisgált ezzel: "A PK3-nál van olyan, hogy fast programming mód, mint a PK2-nél? Ha igen, akkor kapcsold ki!",viszont nem ilyen van, hanem egy skálán lehet állítani 2-13 között, ahol a kisebb érték gyorsabb. Ezzel azért nem foglalkoztam, mert egy régebbi esetben (16f család) már rájöttem, hogy 4-nél gyorsabbra nem érdemes állítani (gyárilag 2!, azaz fastest), ezért mindig leveszem új project beállításánál. Már csak két lehetőség van: 1.Bal*sz voltam és elfelejtettem (nem kizárt) 2. Mivel az egerem bal gombja már kontaktos, néha dupláz (az a sok COD), nem vettem észre,hogy csak 'leklikkeltem' és nem mentettem el. Ennyi.
Köszönöm a válaszodat, közben már megoldódott a probléma és inkább söntöt használok, a/d átalakítóval és igy működik a dolog rendesen, sőt még fogyasztást is ki tudom számoltatni vele.
Üdv.: Zoli
Hello!
Megcsináltam a Led-es futofényt amit ezen az oldalon találtam a cikkek között (pic kezdőknek). 16F887 chipem van. Próbáltam megcsinálni rá a futófényt viszont a végső eredmény az lett hogy a 0,3,4 es helyértéken levő bitek világitottak folyamatosan egyszerre. Próbáltam válltoztatni a késleltetéseket de mindig csak ugyanez a három Led világitott. Más programoknál is a Delay-el volt gond. Álltalában a villogás helyet csak egy folyamatosan világító Led lett az eredmény. 4MHz es kvarc al működik. Hogyan kellene a késleltetést megcsinálni hogy lássak is ezekből valamit? Előre is kösz a segítséget
Hali!
A timer2 nevű számlálóval tudsz csinálni 1 ms idejű megszakítást, és amikor a tmr2 megszakítást generál, akkor szépen egy másik számlálót elpörget 1000-ig.Ha elérte akkor az adott porton megváltoztatod a led állapotát, és a számlálót lenullázod. Ekkor pont 1 sec ideig világít a led, majd 1 sec ideig nem. A számláló változtatásával tudod állítani a villogás sebességét. Az adatlapban benne van a TMR2 beállítása és a megszakítási folyamat is. Ha gondot okoz az 1000-es számláló bontsd fel kettőre 1 százasra és egy tizesre, ekkor lesz egy 0,01 sec időzítőd is. üdv. Foxi Timer2 : m
Kösz a segítséget! Ezeket a belső perifériákat hogy kell alkalmazni? Valahogy a programban felkell tüntetni ezeket stb, de nemtudom hogyan.
PIC16F887-hez ezek a legalapvetőbb könyvek. Ingyen vannak, illik tehát elolvasni (különösen a mintapéldákat):
Milan Verle: PIC microcontrollers Milan Verle: PIC Microcontrollers - Programming in C Magyarul is van olvasnivaló, ha 50-szer nem linkeltük még be, akkor egyszer sem: Közepes teljesítményű PIC mikrovezérlők Felhasználói Kézikönyv A hozzászólás módosítva: Feb 12, 2014
Köszönöm, hogy 51- szer is belinkelted
Szia!
Megírtam neked, hogy tudjad tanulmányozni...
Igy első ránézésre elég bonyolult, de azért kösz szépen majd tanulmányozgatom..
Sziasztok!
A pic C programozásban jártas Uraktól kérdezném, hogyan lehet több filéből álló programot készteni? Pl.: az egyik file-ban a főprogram és a többiben meg a kiszolgáló függvények vannak elkészítve? Illetve a kiszolgáló függvények egymást használják? (külön van a késleltetés és az Lcd kezelés) Most kezdtem C18-al ismerkedni és már az elején szeretném ezt is elsajátítani. Asm-ben soha sem sikerült összehozni a több forrás állomány kezelését, de itt az idő, hogy ez is meglegyen… Üdv. |
Bejelentkezés
Hirdetés |