Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   593 / 1320
(#) watt válasza Hujikolp hozzászólására (») Okt 24, 2009 /
 
Szívesen, örülök, hogy segíthettem!
(#) csanyipal hozzászólása Okt 24, 2009 /
 
  1. ; This program assumes that you have already defined a
  2. ; few things earlier in the asm source file.
  3. ; These definitions tell the assembler program where port-b and
  4. ; the timer variable GPTIM1 are located within the PIC and
  5. ; which port-b pin the LED is connected to.
  6. org 0
  7. FLASH   bsf             portb,led       ; turn on the LED connected to portb
  8.                 movlw   250d            ; load W with 250 decimal (sets pulse length)
  9.                 movwf   GPTIM1          ; copy W to GPTIM1
  10. FL_1    decfsz  GPTIM1          ; count -1 and end if zero otherwise loop
  11.                 goto    FL_1            ; loop back and -1 again
  12.                 bcf             portb,led       ; turn off the LED connected to portb
  13. FINISH  goto    FINISH          ; program stops here in an endless loop

A fenti assembly programot egészíteném ki.
Hogyan határozhatom meg a portb, a GMTIM1, és a LED bitjének helyét?
Nekem az lenne a segítség, ha leírnátok ezt a hiányzó három programsort!
(#) icserny válasza csanyipal hozzászólására (») Okt 24, 2009 / 1
 
ITT nézz körül!
(#) csanyipal válasza icserny hozzászólására (») Okt 24, 2009 /
 
Az általad közölt hivatkozás programjában (Kösz!) van egy TRISA parancs.

Lehet, hogy marhaságot kérdezek.

A PIC16F877A adatlapján olvasom a következőt.
Note: To maintain upward compatibility with
future PIC16F87X products, do not use the
OPTION and TRIS instructions.

A TRISA parancs is TRIS parancs?
Mert én akkor TRISA nélkül tanulnám meg az assembly programozást!
(#) Hp41C válasza csanyipal hozzászólására (») Okt 24, 2009 / 1
 
Szia!

A TRISA egy regiszter (melynek bitjeivel a PORTA -hoz kapcsolódó kivezetések szerepét -bemenet/kimenet - lehet beállítani) neve, nem a TRIS utasítás változata.

A régebbi programozási leírásokban a TRIS még külön utasításként jelent meg, a mostaniakban már a következő utasításokkal lehet a funkcióját elérni:

Ez a példa a PORTA 7..4 bitjeit bemenetnek, a 3..0 bitjeit kimenetnek állítja be:

  1. movlw   0xF0
  2. banksel  TRISA
  3. movwf  TRISA
  4. banksel  PORTA


Természetesen nagyobb kontrollerben lesz TRISB, TRISC,... TRISG is a megvalósított portoknak megfelelően.

Szia
(#) googa hozzászólása Okt 24, 2009 /
 
Sziasztok! Szeretném a rutinosabb kollégákat felkérni egy kis brainstorming-ra. A probléma a következő:
Adott egy PIC ami folyamatosan adatokat gyűjt külső perifériákról meghatározott sorrendben és ezeket az adatokat autoincrement módon szórja ki SPI-n egy SRAM-nak, mert az elég gyors hozzá, hogy kövesse ezt a ritmust. Mondom az én megoldásomat, hogy megértsétek. Tehát amikor tele lesz az SRAM, akkor átkapcsol a második SRAM-ra és azt kezdi írni. Ezzel egy időben egy második PIC az első SRAM-ról kiírja SD kártyára FAT fájl rendszerben, valamilyen kiterjesztésű fájlba az adatokat. Mivel a FAT-os fájl létrehozás elég lassú és erőforrás igényes, ezért éppen bele fog férni abba az időbe amíg a második SRAM betellik. Amikor a 2. SRAM betellett, akkor az 1. PIC kezdi elölről a munkáját és addig a 2. PIC a 2. SRAM-ot menti fájlba. Ez az én költségesebb, de talán szép megoldásom. Ha valakinek van egy egyszerűbb olcsóbb megoldása, szívesen megfontolom. Köszi!

Maradjunk a 16-os, 18-as PIC családnál, ha lehet! Köszi!
(#) pajti2 válasza googa hozzászólására (») Okt 24, 2009 /
 
Mindössze egy gyors logikai észrevétel. Szóval tolnád kifele SD kártyára az adatokat, mert az SRAM betelik. És az SD kártya nem telik be? Vagy abból is használsz kettőt, és melléraksz majd egy led-et jelzőnek, hogy ha ideje cserélni valamelyiket? Ha teszem azt van egy számítógép is bekapcsolva a közelben, kitolhatnád eleve USB-re is. Vagy akár soros portra is, ha belefér a sávszélességbe.

Még egy apróság. A fat-ozás talán tényleg nem apróság, de ds33F sorozatból akár spdip 28-as kivitelben is találhatsz 40 mips-es példányt is, és nevetségesen alacsony áron. Azokban a pic-ekben van normálisan munka memória is. Szóval tuti annyira meg kell aztat bonyolítani, hogy dupla pic, meg dupla sram meg spi busz? Csak átgondolnám a helyedben az elavult vacak pic szériákról való áttérést, ha már gigászi fába csapod a fejszédet, amihez alapból SD kártyát kell mellékelned, mert annyi lesz az adat. Esetleg ha eleve meghatározott méretű az SD kártya, írhatnál rá globálisan egy darab file-t is, mert cserélni úgyis csak akkor kell, ha betelt. Úgy nem kell eldarabolni a folyamatokat, és kevesebb szufla is elég lehet. Mindent egybevetve, ha csak nem olyan iszonyúan kell pörögnie annak az adat gyűjtésnek, egyetlen normálisabb pic is elég lehet. De persze nem a 16/18f sorozatból.

De persze a fő baj az lesz, hogy ha több pic, akkor több "alrendszert" kell hibamentesítened. HW/SW hibákat együttesen összekotorni, az igazából egy rémálom
(#) googa válasza pajti2 hozzászólására (») Okt 24, 2009 /
 
Köszi! Azért nem eszik olyan forrón... Az első és fontos ok amiért ez a PIC széria van szem előtt, hogy birtokomban van egy olyan gyors fejlesztő szoftver, ami az összes komplex programozási kihívást apró parancsok formájában valósítja meg. Ez jelen esetben nagyon fontos érv. Egyszerűen most nincs idő áttérni magasabb tudású szériákra. Meg nem is vagyok egy szakmai zseni.
Egy 16MB-os memóriakártya is elég nekem, bőven viszont a legnagyobb SRAM 32kbyte, ami elég kevés. Az adat minden nap letölthető egy PC-re USB-n, de ez most mindegy.
(#) googa válasza googa hozzászólására (») Okt 25, 2009 /
 
Basszus, azt még ki kell találni, hogy miként lehet leválasztani az egyik PIC vonalait, amíg a másik beszélget.
(#) dinokal válasza googa hozzászólására (») Okt 25, 2009 /
 
Szia! Milyen fejlesztő szoftvert használsz ?
(#) csanyipal hozzászólása Okt 25, 2009 /
 
Miért nem működik az alábbi, hibátlanul leforduló assembly program?
  1. ; Processzor típus
  2. PROCESSOR 16F877A
  3. ; Gyári include fájl
  4. #INCLUDE P16F877A.INC
  5. __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  6. CBLOCK 0x20   ; A 0x20 egy szabad memória rész kezdő címe
  7.         GPTIM1
  8. ENDC
  9.         portd   EQU            0x08    ; címke a PIC kapujához
  10.         #DEFINE led             0xff    ; a led értéke 255
  11. org 0
  12. FLASH   bsf             portd,led       ; bekapcsolja a portd -hez kapcsolt LED-et
  13.         movlw   .250            ; beolvassa a decimális 250-et a W regiszterbe (ez lesz a világítás időtartama)
  14.         movwf   GPTIM1          ; másolja W tartalmát GPTIM1 -be
  15. FL_1    decfsz  GPTIM1          ; csökkenti 1-gyel GPTIM1 számértéket, és ha nulla, befejezi e kört, máskülönben a körben marad
  16.         goto    FL_1            ; vissza a körbe, hogy csökkentse 1-gyel GPTIM1 számértéket
  17.         bcf             portd,led       ; kikapcsolja a portd -hez kapcsolt LED-et
  18. FINISH  goto    FINISH          ; a program itt végtelen körben forog
  19. END

Ezzel beprogramoztam egy PIC16F877A mikrovezérlőt, melynek PORTD lábaihoz van csatlakoztatva 8 db LED.[b]
(#) Tüske hozzászólása Okt 25, 2009 /
 
Hali,

van egy pic 18f4420 -as panel és a pickit2 nem tudja beolvasni az ic id-jét? Találkozott már valaki ilyennel? Mi lehet a baj?
(#) Stefan válasza Tüske hozzászólására (») Okt 25, 2009 /
 
Próbáld a pickit 2 szoftverével törölni,
"use vpp first program Entry" beállítással.
Nincs véletlenül direktben 0, ra kötve a /MCLR láb?
(#) Norberto válasza csanyipal hozzászólására (») Okt 25, 2009 / 1
 
Talán a legnagyobb hiba a programban: a bsf, valamint a bcf utasítás biteket bizergál, nem egész bájtokat, mint ahogyan a programodból sejthető a felhasználása.

A portd beállítását nem szükséges elvégezni, hiszen pont erre van betöltve a program elején a P16F877A.INC fájl. A felhasználható regiszterek neveit tartalmazza az abszolút címükkel hozzárendelve.

Egyébként milyen órajelen működik a mikrovezérlőd? Az a 250-ről való visszaszámlálás elég karcsú, olyan gyorsan le fog futni, hogy talán még a LED-ek felvillanását sem fogod látni szemmel, ha működőképes lesz a programod.
(#) watt válasza Tüske hozzászólására (») Okt 25, 2009 /
 
Van ennek a panelnek rajza is?
(#) Hp41C válasza csanyipal hozzászólására (») Okt 25, 2009 / 1
 
Szia!

Több baja is van a programnak:
-A legnagyobb baj az, hogy a PORTD megfelelő bitje nincs kimenetnek beállítva, az alábbi részlet kell az elejére:

  1. banksel TRISD
  2. clrf  TRISD
  3. banksel PORTD

- A bsf és bcf utasítás második paramétere egy bit pozicióját jelentő szám (0..7).
- Meg kellene adni a kezdőcímet, amitől elhelyezi a programot a fordító.
- Ahhoz hogy valamit mérni is tudjál a semmit sem csináló végtelen ciklus inkább villogtassa a led-et. Ekkor oszcilloszkóppal már látható a működés. Ahogy azt előttem már ajánlották, nagyobb cikust kellene alkalmazni, ha látni is szeretnéd a villogást.
- A portd definíció helyett a PORTD szimbólumot használd.

Szia
(#) icserny válasza googa hozzászólására (») Okt 25, 2009 /
 
A nagykapacitású, soros vezérlésű FLASH IC-ket nézted már?

Bővebben: Link

Szerintem kicsit erőltetett elképzelés csöbörből vödörbe passzírozgatni a bájtokat, két PIC-kel.
(#) csanyipal válasza Norberto hozzászólására (») Okt 25, 2009 /
 
Idézet:
„Egyébként milyen órajelen működik a mikrovezérlőd?”

4 MHz
Most kivettem a kódból a LED-et kikapcsoló részt, s így bekapcsolva marad.
(#) pajti2 válasza googa hozzászólására (») Okt 25, 2009 /
 
Én értem a hozzáállásodat, de végeredményben nem leszel ám boldogabb, ha 10x annyit buksz a réven, mint amit a vámon nyertél. Persze ha csak enni akarod a saját főztödet, ám legyen neked

Napi 16 mega az bakfity. Emiatt ugyan ne izgulj rá minden vacakra, mint dupla buffer, meg még flash is, ha naponta tudsz adatot menteni. Ebben a játékban csak a méret a lényeg. Kotorássz valahol a IS42S81600A környékén. 128mbit önfrissítős dram, van belőle soic tokos is, kb 2k huf áron berendelhető. A pichez mellé dobsz egy max232-est, és egy mezei soros porton összedugod pc-vel. Hogy ram vezérléshez egy 18-as hogyan fogja bírni speeddel, az már más kérdés.
(#) pajti2 hozzászólása Okt 25, 2009 /
 
C fordító környezetet bármilyen pic-hez (8 bitestől 32-esig) használ valaki parancssoros környezetben ?

Kellene nekem egy scriptes toolchain. Mplab-ot ki kellene hagyni a játékból. Teljesen. Böhöm nagy vacak, és nem kell amúgy semmire. Jobb híjján rákukkantottam egy MCCxx doksijára, és elvileg meg lehet csinálni. Ha senkinél sincs még ilyen, nekiesek én magam, de ha már van, jelezze plz (ds33F).
(#) icserny válasza pajti2 hozzászólására (») Okt 25, 2009 /
 
Ilyesmire gondoltál?
Bővebben: Link
(#) jdani hozzászólása Okt 25, 2009 /
 
Hali. Készítettem régebben egy PIC égetőt. Működött is. Ma elkészítettem újra, de nem megy. Emlékszem, hogy régebben pár alkatrészt módosítani kellett, mert anélkül állítólag nem működött. (én csak a módosítottal próbáltam ki, eredeti alkatrészekkel nem) Lehet hogy Újra Módosítani kellett volna az alkatrészeket, és működne? a kapcsolás
(#) Norberto válasza jdani hozzászólására (») Okt 25, 2009 /
 
Miért ne építsünk JDM-et?

Megszámoltam csak a Te kedvedért!

Ez a link jelen topikban 19-szer van meg minimum.
(#) jdani válasza Norberto hozzászólására (») Okt 25, 2009 /
 
De ha ez a kapcsolás, ugyanez a nyák Nekem működött. megépítettem újra, és nem megy... Az a válasz hogy miért ne JDM-ezzünk?
(#) pajti2 válasza icserny hozzászólására (») Okt 25, 2009 /
 
Olyasmire, csak éppen windows alatt. Mostanra nekiestem saját magam scriptet faragni. Bineknek igazából minden szükséges dolog megvan a microchip tanulós C fordítója alatt is - elvileg.

Arra persze kíváncsi lennék, hogy azt a 60 napos korlátot hogyan kellett érteni? Talán a fordító progi mindig bemászik a registrybe, vagy roseb tudja hova, és számolja a napokat, aztán 60 nap után nem fog nekem optimalizálni?
(#) Norberto válasza jdani hozzászólására (») Okt 25, 2009 /
 
A válasz konkrétan más is lehetett volna, de most, hogy ki akarod húzni belőlem, hát leírom.

A JDM mozaikszó hallatán szinte mindenki undorral gondol arra a bizonyos áramkörre. Sok-sok, PIC-es berkekben járatos embernek herótja van az áramkörtől és tízmilliószor le lett róla beszélve egy csomó próbálkozó/kezdő, s jópáran bele is fásultak az egészbe az állandó JDM-gondok felemlegetése miatt. A linken minden lényegeset összeszedetten elolvashatsz, ami a JDM-mel kapcsolatban felmerülhet.

Ha nem működik a kapcsolás, akkor szét kell tárni a kezeket, jó nagyra kinyitni a szemeket és hosszan csodálkozni és elmélkedni; atombiztos sosem lesz az áramkör, a konkrét, egyedi problémáit pedig lehetetlen és nem is érdemes kikutatni és kijavítani, legalábbis vállalkozó szellemű embert nemigen fogsz találni... (ehhez talán már nem is lenne elég a vállalkozó szellem)
(#) pajti2 válasza jdani hozzászólására (») Okt 25, 2009 /
 
Szerintem olvasd el azt a cikket, és majd megérted.

Pld: most éppen máshova volt kedve statikusan kiragadni a soros portodnak, ergo nem működött. Éppen valami futott a háttérben, elmászott valami időzítés. Vacakolt a +12V-od. Fizikailag egy másik soros portra kötötted, és ott mások a tényleges fizikai feszültségszintek. Azt állítod "működött", de elfelejtetted hozzá tenni, hogy csak egyetlen pic-en próbáltad ki, és azon is csak egyetlen alkalommal. Kicsit korán örültél.

És nem, nincs mit tenni ellene. A világon semmit se tehetsz azért, hogy biztosan működjön. Egyszerűen csak azért nem működik, mert ha valaha valahol valakinek működött is, az majdhogynem egy lottó nyeremény esete. Amikor a JDM-et megtervezték, még mások voltak a soros port vezérlő áramkörök, és azóta már változott a világ. Álmodoztak a srácok, és nem kiforrott dolgokon törték a fejüket, hát eljárt a JDM felett az idő.

Meg kellene venni azt a pickit-et.
(#) jdani válasza pajti2 hozzászólására (») Okt 25, 2009 /
 
Kösz a válaszokat, de a Te válaszodból megtudtam amit akartam
(#) icserny válasza pajti2 hozzászólására (») Okt 25, 2009 /
 
Idézet:
„számolja a napokat, aztán 60 nap után nem fog nekem optimalizálni?”

Igen, és ezenkívül szövegel is. Erre számítania kell egy scriptnek, ha a fordító üzeneteit akarja értelmezni.

(#) pajti2 válasza icserny hozzászólására (») Okt 25, 2009 /
 
A nyavajás! Direkt a student verziót szedem le, amire azt ígérik, békén hagy, de a doksijában ugyanúgy ott a figyelmeztetés, és ugyanúgy izélget is.. *broaf*

Nincs valami másik windowsos C fordító legalább ds33F családhoz?

A scriptben arra akaszkodtam rá, hogy fordítás előtt letörlöm a kimeneti object állományt, és fordítás után ha nem létezik, akkor hiba van. Ha létezik, akkor max warningok kikerültek menet közben a képernyőre, de azt úgyis látom.

A scriptes hátteret most már megcsinálom én magam, mert nem olyan bonyolult az, viszont normális binárisok kellenének hozzá. Valami tipp?

Ja igen, akad valami olcsóbb termék esetleg, amihez jogtisztán az üzleti verziót is ideadják a C fordítóból?
Következő: »»   593 / 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