Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Jó tudni, köszönöm. Éppen ezt tettem józan paraszti ésszel, csak nem gondoltam, hogy ez elegáns megoldás.
Sziasztok! Egy kis segítségre lenne szükségem nem értem ezt a programot már mindent próbáltam de a pwm frekijét a ccp1 lábon nem tudom átállítani 4MHz-es kristállyal 244Hz ha mérem és már jópár napja irogatom égetgetem a progit és persze mérem de nem tudom változtatni. Légyszi segítsetek röviden megírnátok mit kéne módosítani. Vagy ha úgy egyszerübb akkor átírhatjátok a progiban. Hálás köszönetem nagyon sokat segítenétek ezzel! Előre is köszi!!!
Bevallom, fogalmam sincs mit akar ez a program. Ha PWM-et akarsz, akkor ne keverd a dolgokat, először kölön írd meg a beállító részeket és ha már működik, utána írjál hozzá más részeket.
Üdv!
Most kezdenék PIC-cel foglalkozni és megakadtam egy kissé a fordításnál. A PIC 16F628A tipus. Mi lehet a probléma? Van két hibaüzenet az MPLAB-ból: Message[302] E:\PROGRAMOZáS\PIC\2.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] E:\PROGRAMOZáS\PIC\2.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct. A kódrészlet: BSF STATUS,RP0 ;BANK0 BCF STATUS,RP1 ;BANK1 MOVLW B'00000000' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB
Hello!
Alapvetően nincs proléma, ez csak egy figyelmeztető üzenet. A fordító nem ismeri fel, hogy helyesen kiválasztott bank mellett szólítottad-e meg a TRIS regisztereket. Ez üzenet a " ERRORLEVEL -302 " kiadásával elnyomható. A bank kiválasztásához célszerűbb a " banksel TRISA' utasítást kiadni. Így kevésbé fogsz eltévedni, és hatása azonos az előzővel. (Egyébként a megjegyzésben írt "BANK0-BANK1" megtévesztő, mert az RP0-RP1 bitek használatával választható ki a kívánt bank. Tehát az első sor végrehajtásakor, már is a BANK1, vagy BANK3-ban vagyunk, Függően attól, hogy előzőleg ar RP1-et hova állítottuk.) üdv! proli007
Szia
Ez szerintem nem hibaüzenet hanem csak fiygelmeztetés.Arra figyelmeztet hogy a TRISA,és a TRISB nem a Bank0-ban van. Ha jól tudom ezt a fajta hibaüzenetet le lehet tiltani valami kóddal a programban. üdv.
Végre valaki aki az ismerkedést ASM-ben kezdni...
A bankhiba elkerülésére tudom ajánlani hogy írj makrót: [code=c] .Macro Bank0 BCF STATUS,RP0 BCF STATUS,RP1 .Endm És ezt megcsinálod Bank1, Bank2, Bank3-ra. Mindegyik két utasításos. Ezek után semmi dolgod, csak a kódba beírod hogy Bank0, és minden rendben. És még jobban is látszik. És nincs hiba.
Ezt a makrót már megírtam csak az érthetőség kedvéért tettem igy a kódba.
Azért kezdem ASM-ben mert régen programoztam elég sokat, még az XT számítógépek idején.
Üdv
Eléggé kezdő vagyok, most szereztem egy PicKit2 klónt. Telepítettem hozzá a MPlab 8-at. A PIC-em 16F690, de az adatlapján nem találom a PGD és PGC lábat... ezt hogy szokták még jelölni? 1. láb VDD 20. az GND 4. MClr Ha ezek megvannak és rádugom a PicKit2-re akkor a progi látni fogja és lehet programozni? Köszi
Vdd = +5V
Vss = Gnd Ennyitől még nem fogod látni mert az MCLR-en kívül kell neked a PGC, és PGD láb is. Most nézem csak hogy változik a terminológia? régen PGD, az most ICSPDAT és PGC = ICSPCLK Ja és az MCLR-t is be kell körtni.
Köszi
Ezt akartam tudni. A többi megvan... Ezer hála Idézet: „Most nézem csak hogy változik a terminológia?” Nem, ezt már régebben is így jelölték néhány kisebb PIC-nél. Nem értem miért, ez is eszetelenség. Na mindegy... A Bank-os macro-s megoldáshoz csak annyit fűznék, hogy jó az, én is így használtam, ha csak az 1-es és 0-ás között kellett váltanom, mert ha már két soros a macro, akkor már ugyanott vagy, mint ha kiadnád a BANKSEL-t. Ennél még azt sem kell tudni, hogy a célregiszter milyen bankban van, azt megoldja az előfordító. Én már láttam olyat, hogy ki volt adva, hogy Bank2, csak éppen a regiszter nem abban volt! Szóval szerintem kezdésnek jobb a BANKSEL, aztán a végén ha nem férne el a kód, ki lehet váltani őket pár sor nyerésére, ha ez segít...
potyo, köszi! Megspóroltál nekem kb két hónapot
Csak vigyázz a JDM-el és a karos foglalatos terminológiával! Hihetetlen, hogy milyen rossz irányba terelik a kezdőket!
Sziasztok!
Nagyon érdekelnek a PIC-ek, és a digitális technika. Tanácsot szeretnék kérni hogy hol találok valami jó irodalmat amiből el tudom kezdeni a tanulást (parancsok, stb...).
Nem kell sokat tenned, csak az utolsó 20 oldalon szaladj át, és nézd meg, hányszor hányan tették fel ezt a kérdést, vagy ehhez nagyon hasonlót. Legtöbbször érkeztek is rá válaszok, ahol le vannak írva, mit-hogyan-mivel célszerű elkezdeni, és hol vannak az alapok.
Srácok!
Köszönöm a segítséget! Bagatel hiba volt. ezt irtam: "P16F877".inc Rossz helyen volt az idézőjel. Pedig C++ben már programoztam párat, és igy sem vettem észre. Legközelebb figyelmesebb leszek. Szoknom kell még az assembly-t
Sziasztok! Engem is érdekelni kezdett a PIC téma, ezért belevágtam és vettem egy angol nyelvű könyvet, amiben 18F4XX család tagjain alapuló projectek vannak C-ben. Már alig várom, hogy játszogathassak ezért rendelni szeretnék egy PIC-et, mégpedig egy 18F452-őt. A ChipCad oldalán azonban van egy csomó fajta kiegészítő jelzés: -E/ML, -E/PT, -I/L stb. Ezek mit jelentenek? Aztán meg van ilyen, hogy 18F4520, ez miben más mint a sima 18f452? Sajnos nem találom rá sehol sem a választ
Előre is köszönöm a segítséget.
Köszi!
A PIC18F452-E/P tokozású mennyire illeszkedik a fórumon fellelhető 'házi' égetőkhöz? Nem értem a C-s kijelentést...
Kontrollert assemblynyelven szoktak programozni, fontos szokott lenni az időzítés, amit C-nél nehezebb kontrollálni, nem tudhatod, hány gépi kódú utasítást csinál a c fordító egy egy c sorból, meg hasonlók.
Gondolom ezért volt a megjegyzés.
OFF
Az nem vitás, hogy assemblyben hatékonyabb kódot lehet írni. Egyenlőre azonban igen sok új dolgot kell elsajátítanom és nem kínlódnék azzal, hogy mondjuk egy for ciklust hogyan bontsak le a kontroller assembly nyelvére...később úgyis sor kerül erre is. Aztán meg a könyv példaprojektjei C-ben íródtak és kaptam hozzá egy C fordítót is, szóval ezért gondoltam, hogy kezdek akkor C-vel.
Bármely elektronikai alkatrészről elmondható, nem csak a PIC: gyártó oldaláról adatlapok letölthetők, abban az összes paraméter megtalálható.
[OFF]
Idézet: „Kontrollert assemblynyelven szoktak programozni” Kicsit had kotozkodjek A "szoktak" az nem tudom ebben az esetben kire vonatkozik, de a tapasztalataim szerint egyre kevesebben programoznak assemblyben - ertsd joval tobben programoznak C-ben profi berkekben. Az ok egyszeru es igazandibol ketretu (vagy tobb): 1. C-hez a fejlesztonek nem kell az osszes altala felhasznalt microcontroller assemblyjet megtanulnia, arra emlekeznie ha X projectrol Y-ra kell hirtelen valtania. Ugye cegekrol beszelunk ahol rengeteg megrendeles van es a kulonbozo feladatoknak es kivanalmaknak megfelelo MCU-t valasztjak ki, legyen az PIC, AVR, ARM, Freescale vagy barmi mas. 2. C tamogatottsaga (nyilvan az 1. pontbol kiindulva) sokkal kiterjedtebb, joval tobb konyvtari fuggvenyek segiteik a fejleszto munkajat. Emiatt a fejlesztesi ido lenyegeseb kevesebb lehet mint egy asm fejlesztes eseteben ahol nemcsak az MCU utasitas keszletet es architekturalis felepiteset kell tuzetesen ismerni de minden egyes rutint a cegnek / fejleszto gardanak vagy ha egyedi fejlesztorol van szo akkor egy embernek kell megirnia. Pl LCD rutin vagy soros kommunikacio, de akar az idozites... ld lejjebb... Idézet: „fontos szokott lenni az időzítés, amit C-nél nehezebb kontrollálni, nem tudhatod, hány gépi kódú utasítást csinál a c fordító egy egy c sorból, meg hasonlók.” C-ben nem ugy idozitunk ahogy asm-ben Nem for ciklussal, hanem hasznaljuk a beepitett fuggvenyeket. Azaz pl Delay_10ms(5) - var 50ms-et... Joval egyszerubb akarkinek ez a modszer, es asm-ben ugyanazt elerni, hogy orajeltol fuggetlenul az idozites ugyanaz maradjon joval komplikaltabb megoldasokat kivan. Mielott kereszt tuzbe kerulnek, mindezek mellett - mint mar megannyiszor leirtam - asm fejleszto vagyok kiaknazva az utolso biteket is egy kontrollerben, viszont tisztaban vagyok ennek az utnak a hatranyaival is.
Azt azért gondolom te sem vitatod, hogy legalább egy kontrollert alaposan meg kell ismerni ahhoz, hogy utána azt vagy egy másikat használni tudja az illető, hogy tisztában legyen azzal, mi történik a "háttérben". És az alapos megismerés csak assemblyben kivitelezhető...
Hát szép leírás volt.
Azt azért kötve hiszem, hogy az ARM meg a pic C-je kompatibilis meg hordozható. Ez ugyan olyan marketingszöveg, mint a java minden oprendszeren fut. (kivéve ezt meg azt a modult, meg csak ezzel meg azzal a java-val, meg csak ezzel vagy azzal a böngészővel) Erre kiváló példa a cégünk. Írtak egy java alkalmazást, Firefox alatt max 2 perc után kilövi a java alkalmazást time out üzenettel, mozilla 1.7.5 alatt meg akár 3-5 órát is tud futni) Ugyan ez a helyzet a C-vel. Konkrétan inkább annyi igaz, hogy a nagyon alap C hordozható, csak azzal meg egy arm procin nem érsz semmit. (Tudom mert volt kollégám szívott az arm-el eleget (pda-jaban az volt) A c-ben nem a delay-ra gondoltam, hanem mikor annyira kell hegyezni a dolgokat, hogy fontos tudni, melyik utasítás mennyi idő alatt fut le. Ezt C-ben nem tudhatod, hiszen ki tudja hány assembly utasításra bontja le a c kódot. Nekem is van egy C könyvem pic24-hez, tök jó. Nem azt mondtam egyébként sem, hogy fúj, csak megmagyaráztam miért írták a fújt, mert ez volt a kérdés.
A C nyelv elfedheti, és el is fedi a PIC lényegét. Ha C-ben tanulsz, nem fogsz érteni egy csomó mindent. Már egy egyszerű LED villogtatás mögött sem fogod megérteni mit hogyan kell beállítani valójában, főleg, ha azt Timerrel és megszakításban szeretnéd. Illik megérteni a matematikai rutinokról is, hogyan működnek. Van amit C-ben nem is lehet megoldani, csak asm betétekkel. Olyan előnyt dobhatsz ki, amit később nagyon nehéz lesz behozni(olyan, mint a taxi, soha nem tanulsz meg vezetni, ha mindig visznek!). A 18F-ek asm támogatása teljes. Alig van pár utasítása, és sok példa is található a neten. Ez a PIC sava borsa. Ha majd gyököt kell vonnod, akkor jöhet a C....
Ezek a dolgok nem vitatottak amiket Te es Potyo mondtok. Termeszetesen a kontrollert ismerni kell, es nyilvan ha nem ismered az assemblyt akkor nem tudsz kihegyezett alkalmazast csinalni - meg akkor sem ha nem kell asm utasitasokat bele illeszteni, hanem pl mert tudod a forditod mire forditja le az adott kod reszletet.
C-nek az a varazsa, hogy van egy alap nyelv, az kb ugyanugy mukodik mindenhol, legyen az PIC, AVR vagy akar Windows kornyezet. Vannak elteresek, de ez most egy masik tema. Jomagam rengeteget foglalkoztam un. platform fuggetlen fejlesztessel, tehat a kodnak mukodnie kell rengeteg operacios rendszeren es kulonbozo szamitogepeken. Rengeteg dologra oda kell figyelni melyik C fordito hogyan mukodik, melyik hardware hogyan tarolja az adatokat, milyen konyvtari fuggvenyek vannak, azok kozul mi az ami hibas egy bizonyos verzioju fejlesztoi kornyezetben stb stb stb. Megis a vegeredmeny az volt, hogy a kod lefordithato mindenhova, ha valami valtoztatas van akkor a azt egy helyen kell megtenni. PIC eseteben pl vegyuk alapul, hogy egy 18F csaladra fejlesztek MCC18-ban, majd atterek 24H-ra pl., vagy egy adott algoritmust ott is szeretnek hasznalni. Tul azon, hogy a 24H-t ismerni kell es az azon hasznalt C forditot is, a kod lenyegeben keves munkaval atemelheto. Nem kell foglalkozni vele, hogy ok mar szamolhatok 16 bites regiszterekkel is, hogy milyen utasitassal agazom el feltetelesen vagy, hogy hogyan erem el a RAM-ot. Ezekutan ugyanezt az algoritmust szeretnem hasnzalni AVR-en, es ugyanugy atemelem a kodot kis modositassal. Es ha tele tuzdelem #ifdef #elif #else agakkal akkor kapok egy olyan kodot amit mindegyikre valtoztatas nelkul leforditok. A kritikus reszeket is ugyanigy meg lehet irni az adott mcu-nak megfeleloen egy include file-ban es azt felteteles forditassal be tudom emelni a kodba, de ahol csak lehet az ilyesmit kerulni kell. Na mindegy, asm-et ennek ellenere jo ismerni es azt is hogy a C (vagy mas compiler) milyen kodot keszit ha hatekony kod kell vagy cipokanalas a dolog. Azonkivul az asm egy baromi jo szorakozas szerintem, nekem is van mutyurom amiben mar csak 6 programszo maradt es mindamellett, hogy kisebb mcu-ban megoldottam azt amit masok csak nagyobbakban voltak kepesek meg raadasul ket virtualis program szalat is megvalositottam - nyilvan ezt C-ben nehez lett volna vagy inkabb lehetetlen. Jo szorakozas volt az USB is ahol mar olyanokkal is szorakoztam, hogy minel kevesebb asm utasitassal lehessen megirni a switch-case szerkezetet. Asm remek dolog, csak kerdes mennyire hatekony ipari fejlesztesekhez.
Ipari fejlesztés? Dehiszen itt egyelőre csak tanulásról van szó! Egy LED villogtatás, egy USART, egy PWM, egy Timer működése, a regiszterek lényege sokkal kézzelfoghatóbb lesz, asm-on keresztül. Nem csak Open, és kész is.
Később biztosan előjön a C- mint nálam is, bár én most is asm-on tanulom a 16 és 32bites PIC-eket. Juteszembe, legutóbbi kérdésemre nem találtál választ? (programmemória kiosztása PIC32 asm-ban) Mert teszi ez mondenhová, csak oda nem ahová szeretném. (org-hoz hasonló kéne) Végre az ASM30 kezd tiszta lenni, erre az ASM32-ben(MIPS Assembly) megint másképp csinálják! Abban teljesen igazad van, hogy ahány MC, annyi asm! Tele is van vele a búrám rendesen! De akkor is ez az út a helyes szerintem. A könnyű fejlesztés pedig úgy nézhet ki, hogy C-ben asm betétekkel. Ez viszont megkívánja az asm előzetes ismeretét, és nem fordítva, mert úgy elég nyögvenyelős lesz a dolog... |
Bejelentkezés
Hirdetés |