Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   946 / 1320
(#) delmur82 hozzászólása Ápr 7, 2011 /
 
Sziasztok!

Egy PIC12F509 - re akarok programot írni. Viszont valamiért nem ok fordításnál a program.
A kód:
  1. LIST p=12F509
  2. #INCLUDE <p12F509.inc>
  3.  
  4.  
  5. __CONFIG  _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC
  6.  
  7.  
  8. ORG     0x00           
  9. GOTO    START
  10.  
  11. START
  12.  
  13.         MOVLW   b'00000111'                                      
  14.         TRIS    GPIO
  15.  
  16.        
  17. VISSZA
  18.         GOTO    VISSZA


A következő hibaüzit kapom:
Error[126] C:\PROGRAM FILES\MPLAB IDE\MCHIP_TOOLS\P12F509.INC 96 : Argument out of range (must be greater than or equal to 79)

Viszont PIC12F509 esetén nem lehet több 3Fh - nál.
(#) watt válasza atgyuric hozzászólására (») Ápr 7, 2011 /
 
Szerintem potyo nem azt kérdezte, hogy hogy van bekötve, hanem leírta hogyan kéne!
Az A/D ajánlott(adatlap) bemeneti impedanciája 1k körüli. Ezt ezek a nagy ellenállások nem tudják teljesíteni kondi nélkül. A kondi viszont lassítani fogja a mérést, de sok esetben ez nem gond. Ha gyors mérés szükséges, akkor műveleti erősítős illesztésre van szükség.
(#) kissi válasza delmur82 hozzászólására (») Ápr 7, 2011 /
 
Szia!

Nekem ez működik ( a fordítás! ), csak egy END kell a végére (remélem a sorszámokat nem írtad bele ? )!

Steve
(#) n_yálastrubadúr válasza watt hozzászólására (») Ápr 7, 2011 /
 
Hello
Megépítettem az Lpt-mini illeszetett programozód. Fel is ismeri a winpic az összes picet, de egyiket sem tudja megírni. Hivatkozva egy írási és olvasási hibacímre. Mi lehet a probléma? A képeiden az Lpt-hez egy rövidke tüskesor használsz, de nekem az ACK a 10-es láb a föld mondjuk a 25 és az messze van a pgc pgd-től ami egymás mellett van, tehát nekem el kellett törnöm a csatit, hogy a megfelelő helyekre illesszem. Mi lehet a probléma? Vagy az összes földelt lpt lábat össze kell kötni?( sajnos a pikit2-m egy hónapot minimum késni fog)
(#) watt válasza n_yálastrubadúr hozzászólására (») Ápr 7, 2011 /
 
A mini akkor működik jól, ha a WPB-t használod hozzá a mini támogatás pipával. A többi program helyes működését nem garantálhatom, de nem lehetetlen, hogy működik.
Az összes gnd lábat be kell kötni, nem véletlenül van a rajzon úgy.
A csatalkozó eltörése körüli leírásod nem értem.
(#) n_yálastrubadúr hozzászólása Ápr 7, 2011 /
 
A Képein az elkészült darabodnak, egy-egy kihagyással egyben van. De nekem hogy az Ack elvezessem nem egy -két tüskét kell kitörnöm, hanem sokat mert messze van az ACk a D0 és D1- től. És akkor lehet az a gond hogy nincs az összes Lpt láb földön?
(#) n_yálastrubadúr válasza watt hozzászólására (») Ápr 7, 2011 /
 
A program nagyon tetszik, ha bejelölöm a WLP minit akkor a pic írás inaktívvá válik
(#) watt válasza n_yálastrubadúr hozzászólására (») Ápr 7, 2011 /
 
Először beírod a flasht, majd az eepromot, ha van olyan tartalom is!
(#) atgyuric válasza watt hozzászólására (») Ápr 7, 2011 /
 
Köszönöm a segítséget neked és Potyonak is. Ma is tanultam valamit és sikerült a problémát is kiküszöbölni.
(#) n_yálastrubadúr válasza watt hozzászólására (») Ápr 7, 2011 /
 
A flash írásakor forró lesz a pic az egészséges? :eek2:
Sőt már a tápfesz beállításakor is melegszik. ez lehet beállítás hiba??
mert máskor ezt nem vettem észre
(#) watt válasza n_yálastrubadúr hozzászólására (») Ápr 7, 2011 /
 
Nem igazán. Ha jól van beköte a PIC, megfelelőek a feszültségek, valamint az MCLR fel, vagy le van húzva 10k-val (attól függően, hogy van-e saját tápja vagy sem), akkor nem mehet tönkre, akárhogy kapcsolod rá a feszeket, bármilyen sorrendben.
(#) n_yálastrubadúr válasza watt hozzászólására (») Ápr 7, 2011 /
 
A Tápok jók a pgc pgd jó helyen van a picet felismeri , de nagyon meleg, amit veszélyesnek itélek. és a megírt program nemmegy. visszatéve a jdm-be megírom megy..
Mit rontok el? Van ellenállás az mclr-en
(#) n_yálastrubadúr válasza n_yálastrubadúr hozzászólására (») Ápr 7, 2011 /
 
Isten vagy
Areg halottnak hitt 12f629-et megírta és jó is lett és az nem is melegszik, éppen langyoskás. de akkor nemértem a 16f877-et?
ÉS A MÁSIK 12F629-[b]is megírta
(#) eSDi hozzászólása Ápr 7, 2011 /
 
Üdv mindenkinek!

SPI kapcsolatot kellene létrehoznom egy PIC és egy TC77-es hőszenzor között. A csavar ott van az egészben, hogy a TC77-es SI és SO lába közösítve van. Nem tudom, hogy ez a PIC oldalon is megoldható e... Összeköthetem e A'la nature a két lábat? Ezen a vonalon lesz még pár PGA, de azokat szerencsére csak írni kell.
(#) El_Pinyo válasza eSDi hozzászólására (») Ápr 7, 2011 /
 
Szia!
Ha nem akarod sleep állapotba küldeni, illetve jó a folyamatos konverzió is (nem az alacsony fogyasztásra kell optimalizálni), akkor nem kell adatot küldeni a TC77 felé, csak olvasni kell belőle. Tehát elég a MISO lábat bekötni, a MOSI-t nem kell bekötni az eszközbe. (Természetesen /CS, illetve CLK is kell)
(#) delmur82 válasza kissi hozzászólására (») Ápr 7, 2011 /
 
Nekem sajnos nem. Persze hogy nincsenek számok, és END is van a végén. Lehet hogy valamiért nem jó a p12F509.inc file? Az error üzi szerint abban van valami gubanc. Hihetetlen. Ilyen kis hülyeséggel szo**i!!
(#) icserny válasza eSDi hozzászólására (») Ápr 7, 2011 /
 
Össze lehet kötni, de gondoskodni kell róla, hogy a PIC SDO lába bemenetre legyen kapcsolva (pontosabban ne legyen kimenetre kapcsolva), amikor a külső eszközről adatot vársz. Elég necces dolog... Bővebben: Link
(#) eSDi válasza icserny hozzászólására (») Ápr 7, 2011 /
 
Akkor nem bonyolítom, jó lesz az úgy ahogy kitalálták. A PGA-kat szerencsére csak írni kell, a TC77 meg ezek szerint folyamatos konverzióval indul (valamiért ezen átsiklottam az adatlap olvasása közben.), tehát azt meg csak olvasni kell. A két adatvonal szépen külön életet fog élni. Azon az egy vezetéken már nem fog múlni remélem.
(#) icserny hozzászólása Ápr 7, 2011 /
 
Új fejezettel és mintaprogramokkal gyarapodott az esca.atomki.hu/PIC18 címen található, "Ismerkedés a PIC18 mikrovezérlőkkel" című PICCOLO projekt.

Az új fejezet: SPI soros periféria illesztő
A fejezet tartalma:
* Az SPI kommunikációs csatorna
* Az SPI egységek felépítése és működése
o Az SSPSTAT regiszter
o Az SSPCON1 regiszter
o Az órajel polaritása és fázisa
* SPI támogatói függvények
* 25LC256 típusú SPI EEPROM használata (25lc256_spi.c)
* Az MCP23S17 portbővítő IC használata (mcp23s17_spi.c)

Ez a fejezet egy kicsit csonkára sikeredett, de a egyéb elfoglaltságaim miatt egyelőre nem tudok foglalkozni a mintaprogramok bővítésével.

Az új példaprogramok bekerültek a PICCOLO projekt - PIC18 támogatói programkönyvtár és példaprogramok Doxygen-nel dokumentált gyűjteményébe is (verziószám 0.45, kiadási dátuma 2011-04-07).

Letöltés egyben: code_examples.zip
(#) watt válasza n_yálastrubadúr hozzászólására (») Ápr 7, 2011 /
 
Lehet, hogy a korábbi próbálkozáskor megsérült a 877-es. Mekkora a Vpp? Érdemes 12V-ot beállítani a 13 sok!
(#) watt válasza eSDi hozzászólására (») Ápr 7, 2011 /
 
Igazából a TC77 nem SPI-s, bár annak nevezik a léptetőregisztere miatt. A kommunikáció nem 8 bites és nincs külön I és O lába, mint egy normális SPI eszköznek. A PIC-el úgy lehet vele kommunikálni, hogy a IO lábat a TRISx regiszterrel bemenetté változtatod, amikor venni akarsz adatot, majd kilépteted a szükséges számú órajelet. A TC77 adatlapában benne van a protokol, nem nagy dolog. Az is igaz, hogy nem kötelező vele kommunikálni kétirányban.
(#) ha191 hozzászólása Ápr 8, 2011 /
 
Sziasztok!
Segítségeteket kérném elvi dolgokban.
Frekvenciát szeretnék mérni 16f886 -os picel a portc.3 -on, erre van bekapuzva a szinusz. Pascalban követném el, de nem találok csak másfajta PIC specifikus programokat, sajnos bizonyos regiszterek ennél a PIC-nél nem léteznek. Egyébként ez a pic eredetileg PICAXE volt, akkor ragyogóan mért ezen a porton frekit. Lényeg, hogy ha leírnátok a freki mérés lényegét érthetően, vagy ez irányú linkel tudnátok segíteni az jó lenne. Kezdetben úgy képzeltem, hogy X ciklusban kiolvasom a C3-as lábat, megszámolom az 1-eseket és kész. De ez nem működik rájöttem. Azt már kapiskálom, hogy az időzítő és számláló regiszterekkel kell manipulálni, de sajnos ehhez egyenlőre kevés vagyok, nem jövök rá a mikéntjére.
A kapcsolás teljesen kész, PICAXE üzemben működött, csak rettentő lassú volt. Újraírtam a progit PASCALban, minden egyéb funkciót meg tudtam oldani, már csak a freki mérés hiányzik, jelenleg teljesen értelmetlen dolgot ír ki a frekvencia helyére
Üdv: István
(#) n_yálastrubadúr hozzászólása Ápr 8, 2011 1 /
 
Szép napot!
Az rc5 protokollt tanulmányozom. Ha valaki tud egy részletes magyar oldalt erről az jó lenne. Nagyon sok angol, és német oldalt néztem át és nagyjából értem is. Azt nemigen hogy, az első bit-nek a fele előtt indul az első bit. Ha én beállítom a tmr0-t egy bit időre, az egész elcsúszik.
(#) Ideiglenes válasza ha191 hozzászólására (») Ápr 8, 2011 /
 
Megnzétem a 16F886 leírását. Az I/O portok leírása a 39. oldalnál kezdődik, de a lényeg úgy az 53.-nál van, ami a feladatodra vonatkozik.
A PORTC 3-as I/O láb nem tartalmaz túl sok különlegességet, tehát szoftverből kell megoldani a feladatot. Én ehhez segítségül hívnám a Timer1 időzítőt, mivel ez 16 bites felbontású. Természetesen a frekvenciádról ildomos lenne tudni, hogy milyen határok között változik, meg azt is jó tudni ehhez a feladathoz, hogy a PIC-et milyen frekvencián járatod.
A Timer1-ről a a fent említett dokumentum 76.oldalán lehet olvasni.
Ha az időzítőnek belső órajelet választasz ( én elsőre azt tenném ), akkor az előosztókkal lehet választani mérendő frekvenciatartományt. 1:1 előosztónál elvileg a PIC frekvenciája osztva néggyel a maximális, míg a minimális a PIC frekvenciája osztva néggyel osztva 65535-tel. Ez elmélet csak. Gyakorlatban az egyes utasításoknak is van végrehajtási idejük, így a végeredmény rosszabb lesz.
A módszer pedig az lenne, vagy az algoritmus, amit én választanék, hogy:
figyelni a portc.3-as lábon egy felfutó ( vagy lefutó ) él megjelenését, ekkor nullázni a számlálót és várni addig, amígy egy újabb felfutó ( vagy lefutó ) él megjelenik a lábon és ekkor kiolvasni a Timer1 aktuális értékét. Elvileg az a periódusidővel arányos érték, a periódus idő meg a frekvencia reciproka. Feltételezésem szerint ( mivel még nem próbáltam ), ezzel a módszerrel legfeljebb a PIC működési frekvenciájának huszad-harmincad részéig tudsz frekvenciát mérni. Meg kell oldani valahogyan a Timer1 túlcsordulásakor a teendőket, ugyanis ez meghamisítja a mérést. Illetve frekvenciaszűrést ( vagy időtúllépés figyelést ) is bele kell tenni a rendszerbe, mert nulla frekvenciánál várhatja a program a felfutó élt, nem fog megérkezni. Illetve nagy frekvenciáknál a figyelés nem fogja észrevenni, hogy egy felfutó élt éppen kihagyott.
Tartok tőle, hogy ezt a feladatot pascal-lal nem fogod megoldani, hacsak nem a pascalnak van erre valamilyen speciális függvénye, eljárása. Én biztosan assemblyben próbálkoznék, márcsak a pontos időzítések miatt is.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Ápr 8, 2011 1 /
 
Szia!
Az RC5 Infravörös csomag

Hossza: 24.899 ms, Ismétlési idő min.: 113.792 ms

Bit 1: 889uS - nincs impulzus - TSOP kimenet magas, 889us - 32 pulzus - TSOP kimenet alacsony
Bit 0: 889uS - 32 impulzus - TSOP kimenet alacsony , 889us - nincs impulzus - TSOP kimenet magas

S s T A4 A3 A2 A1 A0 C5 C4 C3 C2 C1 C0
|1 |s |tg |a4 |a3 |a2 |a1 |a0 |c5 |c4 |c3 |c2 |c1 |c0 |

RC5 verzion s: 2. start bit : 1
RC5X verzion s: A 6. parancsbit invertálva : !c6

tg: toggle bit: változatlan érték - ismételt parancs
értékváltás - új csomag

Valóban a vevő a start bit második felét látja csak...
(#) Hp41C válasza Ideiglenes hozzászólására (») Ápr 8, 2011 /
 
Szia!

Nem lehetne a következő lábakat használni:
RA4: A Timer 0 bemenete, a számlálást a 8 bites T0 végezhetné, aminek van egy 8 bites előosztója - számtalan kódot találsz rá, még itt a fórumon is.
RC0: A Timer 1 bemenete, a számlálást a 16 bites T1 végezhetné.

Ha bemenő jel az RC0 -ra menne, akkor a T1 értékét a CCP modullal lehetne tároltatni. Ha az időalapot programból csinálod, akkor a CCP1 vagy CCP2 bemenetet kellene egy porttal összekötni.
Még jobb, ha az időalapot is a kontrollerrel csinálod meg. A másik CCP modult használd PWM üzemmódban, úgy programozva, hogy a kapuidőnként egy felfutó élet adjon ki. Ezt a kimenetet kösd össze a másik CCP modul bemenetével. Ekkor szinte mindent a kontroller moduljai végeznek el...
(#) ha191 válasza Ideiglenes hozzászólására (») Ápr 8, 2011 /
 
Köszi a választ!
Itt van a konkrét kapcsolás:
Bővebben: Link
1-30 megás a szinusz, de ez rendesen le van osztva, szkóppal néztem, nem tudom pontosan mennyire, de nagyon...
Sajnos nem tudom hova tenni a Timer1 dolgot. Én ezt nem tudom kezelni, azt sem tudom, hogy hogy figyeltessem a felfutót és a lefutót. Kb. ilyesmire gondoltam a számoláshoz:
trisc.3:=1;
for x:=1 to 1000 do
begin
y:=y+portc.3;
end;
Nem működik jól. Módosítottam, hogy a nullákat is számolja külön, hogy össze lehessen hasonlítani az egyesek és nullák arányát, de az se jó. Nem lineárisan változnak a számlált értékek.
Gondolom nagy kérés, hogy írj egy konkrét progit hozzá akár ASM-be. ASM-et be tudok tenni funkcióként, talán az úgy jó lehet. Az már elég lehet, hogy pontosan számolja meg X időben hány darab le és fel futás volt, abból már én összehozom a frekit, ha más nem megmérem mennyi a valóságban, megnézem mit számolt, és átszámítom, majd szorozom/osztom megfelelően
Vagy ha tudsz egy jó leírást, ahol érthetően meg van fogalmazva a regiszterek működése és hogy azokat hogyan is kell kezelni, azt is megköszönném. Persze magyarul ha lehet
Kösz!
(#) gcsaba hozzászólása Ápr 8, 2011 /
 
Sziasztok!

Én is az István által felhasznált PIC felől érdeklődnék. Egy antenna analizátort készítettem amihez eredetileg PIC16F873 lett felhasználva, viszont nekem van pár db PIC16F886-om. Kérdésem az lenne át lehet e fordítani erre az IC-re az eredeti programot? Sajnos a programozáshoz nem értek. A beégetés természetesen megy. (Ha esetleg valaki át tudná nekem fordítani azt nagyon megköszönném!!!)
Eredeti program: http://www.sp2jjh.republika.pl/VK5JST_pliki/AA%20VK5JST%20v.1.5.rarBővebben: Link
Kapcsolási rajz pedig itt: http://www.sp2jjh.republika.pl/VK5JST_pliki/AA%20VK5JST%20by%20SP2JJH.pdf Bővebben: Link

Válaszokat előre is köszönöm!

Üdvözlettel:
Csaba
(#) ha191 válasza Hp41C hozzászólására (») Ápr 8, 2011 /
 
Linkeltem alább rajzot. Az a baj, hogy minden port foglalt, teljesen szét kellene túrnom a cuccot Most működik, méri amit kell, kivéve a frekit. Így nem tudom hol áll az osszilátor...
(#) Ideiglenes válasza ha191 hozzászólására (») Ápr 8, 2011 /
 
Éppenséggel ki lehet hagyni a timer1-et is, csak az eredmény nem lesz túl következetes. Felfutó ( vagy lefutó ) élt úgy kell vizsgálni, hogy elteszed az előző beolvasott értéket és összehasonlítod az újabbal.
pl:
  1. portuj := portc;
  2. repeat
  3.   portregi := portuj;
  4.   portuj := portc;
  5. until ( portuj.3 & !portregi.3 ) = 1

Nem tudom, hogy a fenti kifejezések, mennyire illenek bele a pascalodba ( gondolok itt a bit szintű változók kezelésére ), de a lényeg talán érthető belőle.
Ha a fenti ciklus után írsz egy olyat, amiben egy számláló számolja, hogy hányszor futott le, akkor szintén a periódusidővel arányos értéket kapsz a végén.
Következő: »»   946 / 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