Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   326 / 1319
(#) teodor hozzászólása Okt 29, 2008 /
 
Sziasztok, lenne egy problémám.
Megépitettem a lancos féle égetőt , az a problémám, hogy nem irja a PIC-et.
Próbáltam már sokféle progival, szerintetek milyen beállitások kellenek ennek a programozónak.
A Winpic-ben állitva a vezetékeket a pic-en megvannak a feszültségek. Vagyis kapcsolhatóak a megfelelő lábakon.

Van valamilyen tippetek?

(#) kobold válasza dolfin hozzászólására (») Okt 29, 2008 /
 
Az utasítás-végrehajtás sebességével futnak a belső időzítők is, ez (lsd. adatlap) a meghajtó frekvencia negyede, 4 MHz-es kristállyal 1 MHz, vagyis ha nem volna előosztód, 1 us-onként történne egy számlálás. 32-es osztóval értelemszerűen 32 us az időtag.
(#) watt válasza dolfin hozzászólására (») Okt 29, 2008 /
 
Adatlap! (órajel/4/előosztó/számláló/utóosztó, ha van!)
(#) dolfin válasza watt hozzászólására (») Okt 29, 2008 /
 
Köszi. Megnézném én adatlapon, csak tudnám hogy hogy keressem .
Köszi
(#) potyo válasza dolfin hozzászólására (») Okt 29, 2008 /
 
Amikor Timerrel kapcsolatosan nem értesz valamit, akkor azt logikusan a Timerrel foglalkozó résznél. Ott pedig van(nak) blokkséma('k), azokon kövesd végig.
(#) watt válasza dolfin hozzászólására (») Okt 29, 2008 /
 
A kérdésedből nekem úgy tűnik, hogy magát az adatlapot nem találod?
(#) watt válasza teodor hozzászólására (») Okt 29, 2008 /
 
Egy linket betehettél volna, mert nem sok kedvem van keresgélni...
(#) teodor válasza watt hozzászólására (») Okt 29, 2008 /
 
A Ponyprog-ról van szó az ott található soros programozóról.Bővebben: poniprog
(#) watt válasza teodor hozzászólására (») Okt 29, 2008 /
 
Ez egy JDM klón. Ne haragudj, de sajnos nem tudok segíteni, kiráz a hidek a JDM-től.
(#) teodor válasza watt hozzászólására (») Okt 29, 2008 /
 
Köszi nem baj megoldódott, pedig nem csináltam semmit .
(#) Mate78 válasza szilva hozzászólására (») Okt 29, 2008 /
 


Közben kipróbáltam magam is szimulátoron a táblázatkezelést.
A db direktíva után álló első érték kerül a páros programmemóriacímre,a második érték pedig a páratlan memóriacímre,és erre voltam kíváncsi.


Potyo,Trudnai,Szilva,mégegyszer köszi a segítséget.

üdv

Máté
(#) watt válasza teodor hozzászólására (») Okt 30, 2008 /
 
Még sok bosszúságot okozhat. Csak jót akarok neked!
Olvasd el az oldalamon írottakat a JDM-ről, ha van kedved!
(#) mitch hozzászólása Okt 30, 2008 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni. Elég kezdővagyok a témában, de szorgalmasan tanulok .
Találtam a weben egy kis programot, amit szeretnék használni egy 16F690-es en.

  1. void main()
  2. {
  3.         TRISC   =       0x00;  
  4.         PORTC   =       0x00;
  5.         TRISA  =        000001;
  6. while(1==1)
  7. {
  8. if((RA0==1)) RC1 =1;
  9. else RC0=1;
  10. }
  11. }

Azt írták, hogy, ha RA0-ra +5V adok, akkor megjelenik a feszültség a RC1-en. Sajnos nekem valamiért nem működik.
Előre is köszönöm az építő jellegű segítséget.
Üdv:
Mitch
(#) trudnai válasza mitch hozzászólására (») Okt 30, 2008 /
 
Eloszori is milyen MCU-rol van szo? Ettol fugg ugyanis hogyan kell a portokat inicializalni.

Masodszor konfiguracios bitektol is fugg hogy viselkedik a processzor, no meg a kapcsolast itt nem latni, hogy hardver ugyileg mukodik-e a kontroller...

Harmadszor C-ben nem "igy" szokas programozni, a vegtelen ciklus az "while(1)" vagy "for(;", az "if(RA0==1)" az egyszerubben is leirhato "if(RA0)" formaban.
(#) teodor válasza watt hozzászólására (») Okt 30, 2008 /
 
Tudom, olvastam az oldaladat, csak valami megoldást keresek mert elszált a progi a Pickit2-ből, és nem jutok el vele pestre ujra iratni bele a progit.
(#) icserny válasza mitch hozzászólására (») Okt 30, 2008 /
 
Először is tisztázzuk, hogy milyen C fordítóval próbálkoztál, s hogy hogy néz ki a program eleje!

A konkrét C fordító ismeretében tudjuk megmondani, hogy a bitek kezelése hogyan történik. Az RC1=1 értékadás pl. feltételezi, hogy az adott C nyelv támogatja az egybites változók kezelését. Van, ahol a bitek különálló kezelése külön függvényhívást igényel (pl. output_low(), output_high() )

Az is gyanús a programoodban, hogy csak egybe állítod a kimenetet, nullába soha. Szerintem az

  1. if(RA==1) {
  2.     RC1=1;
  3. }
  4. else {
  5.     RC1=0;
  6. }


típusú kezelés logikusabbnak tűnik. Csak ne nekem kelljen kitalálni, hogy mit is akartál csinálni a programban.

Kód beidézésénél használd a {code=c} .... {/code} jelőlést, természetesen szögletes zárójellel helyettesítve a fenti kapcsos zárójeleket!

Amúgy a hardver az a Low Pin Count demókártya, vagy valami más?
(#) mitch válasza trudnai hozzászólására (») Okt 30, 2008 /
 
Köszönöm szépen a gyors reagálást. Idő közben az egyik kollégám megoldotta, a feladatot, és azt ígérte, hogy majd részletesebben elmeséli.
Mégegyszer köszönöm
(#) Thomas10100 hozzászólása Okt 30, 2008 /
 
Sziasztok!

Sehogy sem akar működni az áramkör és a program amit csináltam 18f4550-hez.
Nem csinál semmit, pedig csak egy gombnyomásra kellene világítania a PORTB LED-jeinek.
De meg sem mukkan. Belső oscillátort használok, MCLR láb jól van bekötve.

Nem értem.
A haverom által küldött progi sem működik

Segítséget kérnék!
Köszönöm!

proba2.asm
    
(#) trudnai válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
1. Hasznald a config definiciokat amik az include file-ban vannak - ezek a bitezesek alag csunyacskak

2. Nezd meg az adatlapban hogyan inicializaljak a portokat

3. ha mukodik akkor iszonyat gyorsan fog a portod porogni - scoppal nezed? Ha LED-ek vannak raaggatva, akkor debuggerrel csinald igy idozites nelkul es akkor latsz is valamit, de ha egyaltalan nem eg a LED annak a 2. pont utan majd menni fog...
(#) Thomas10100 válasza trudnai hozzászólására (») Okt 30, 2008 /
 
De nem értem, a haveromnak ment ez így.
Én így tanultam a port inicializáslást, a Kandón.
Bár ott nem próbáltuk ki hogy működik-e.

Megnézem az adatlapot. Amit már bogarásztam kicsit.

Köszi!
(#) szilva válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
Az asm-ben 18F4320-as include file-t használsz, holott 4550-ről írtál. Ez sem mindegy. Az sem mindegy, hogy esetleg a 4550-ben milyen extra funkciók vannak bizonyos portlábakon, amit lehet, hogy ki kell kapcsolni, mielőtt használni akarod digitális IO-ra a portot. Továbbá az asm-ben mindkét gombállapotra várakozó ciklusban BTFSS van, szerintem az egyiknek BTFSC-nek illene lennie.

Azt csak halkan jegyzem meg, hogy a változóknak sem illik direkt címet adni, hanem inkább valami komfortosabb megoldással, generált címekkel (cblock, udata, és hasonlók).
(#) Thomas10100 válasza szilva hozzászólására (») Okt 30, 2008 /
 
Helló!

Igen jogos.
MPLAB-ban átirtam 4550-re
És az alsó az BTFSC

Beirtam az ADCON1 regisztert is, de most sem jó. Meg se nyikkan.
(#) watt válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
Az a gyanúm, hogy azokat a configurációs adatokat egy másik, pontosabban a 18F4320-tól másoltad ide a programba. A 4550-nek teljesen más konfigurációja van, mert az egy USB-s PIC, és más az oszcija(pl. van neki _CONFIG1L-is!)! Mondhatni az egyik legbonyolultabb oszcija van! Ez így a haverodnak sem mehet!

Vedd elő az adatlapot és böngészd át a konfigurációs részt, és annak megfelelően próbáld beállítani a biteket!

Trudnai írta, hogy nem szép ez a bites megadási mód, én ezzel nem értek egyet, jó lenne ez így, nekem pl. sokkal áttekinthetőbb, csak a jó értékeket kéne oda beírnod, nem ilyen zöldségeket.

(#) icserny válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
Idézet:
„Beirtam az ADCON1 regisztert is”

Megtudhatjuk, hogy mit írtál bele?
0x0f-et,vagy valami mást?
(#) szilva válasza watt hozzászólására (») Okt 30, 2008 /
 
Ha az adatlapokban (illetve, egészen pontosan az inc fileokban) használt megnevezéseit használod a config lehetőségeknek, akkor sokkal fájdalommentesebb egy processzorcsere a program alatt. Sokszor ugyanaz a szimbolikus beállítás egészen más biteket jelent, ilyenkor ezt az inc file kicserélésével automatikusan követi.
(#) Thomas10100 válasza watt hozzászólására (») Okt 30, 2008 /
 
Helló jó a gyanu, mert nem találtam sehol sem 18f4550-hez példát.
De most megtaláltam az adatlapjában végre, és talán jól be is állítottam őket.

Ez eddig jó így? Ez lenne életem első PIC őprogramja, amit működésre is kellene birni.
Suliban csak elméletet nyomták, konfig bit-eket nem használtunk, meg semmi inicializálást. Valkai papa nagyon nem arra ment hogy megtanuljunk progizni.

vilagit.asm
    
(#) watt válasza szilva hozzászólására (») Okt 30, 2008 /
 
Ez lehet, viszont én nem látom át a neveket, mert nem adja magát, hogy mennyit kell használnod. A bitek megkövetelik, hogy mindegyikkel pontosan foglalkozz.

De nem akarok ez ügyben eldönteni semmit, én is használom a másik módszert C-ben, mert kénytelen vagyok. Az, hogy nekem jobban bejön a bites módszer, az se sokat számít. Ezért elfogadom, hogy igazad lehet.
(#) watt válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
Rengeteg hiányosság van ott még. Ennyi idő alatt senki nem képes áttekinteni a konfigurációt. Szánj rá több időt. Nézd meg az oszcillátor felépítését, az sokat segít. Aztán van ott még sok beállítás, ami eltér a sima 18F-ekétől. Mindegyik konfigbájtot nézd át, ne csak az oszcillátorokét!
(#) Thomas10100 válasza watt hozzászólására (») Okt 30, 2008 /
 
Holnap átnézem. Addig is köszi!
(#) szilva válasza Thomas10100 hozzászólására (») Okt 30, 2008 /
 
A konfig bitek programozási oldaláról adok egy tippet: ha előveszed az inc file-t, esetünkben a p18f4550.inc-et. Ennek a legvégén a bitenkénti config lehetőségek vannak definiálva, előtte kikommentezve van egy rész, ami emberi fogyasztásra sokkal alkalmasabb. Így kezdődik:

;===========================================
;
; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been
; superseded by the CONFIG directive. The following settings
; are available for this device.
;
; PLL Prescaler Selection bits:
; PLLDIV = 1 No prescale (4 MHz oscillator input drives PLL directly)
; PLLDIV = 2 Divide by 2 (8 MHz oscillator input)
; PLLDIV = 3 Divide by 3 (12 MHz oscillator input)
; PLLDIV = 4 Divide by 4 (16 MHz oscillator input)
; PLLDIV = 5 Divide by 5 (20 MHz oscillator input)
; PLLDIV = 6 Divide by 6 (24 MHz oscillator input)
; PLLDIV = 10 Divide by 10 (40 MHz oscillator input)
; PLLDIV = 12 Divide by 12 (48 MHz oscillator input)
;
; CPU System Clock Postscaler:
; CPUDIV = OSC1_PLL2 [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
; CPUDIV = OSC2_PLL3 [OSC1/OSC2 Src: /2][96 MHz PLL Src: /3]

Én ezt az egészet ki szoktam másolni a forráskódom elejére, aztán végigmegyek rajta, és minden konfiglehetőségből egyetlen sort kiemelek, és abból csinálok egy config sort, pl. így:

config PLLDIV = 5

Ezzel a módszerrel minden létező konfigopcióra adok valami nekem tetsző előírást, nem marad semmi ki.
Következő: »»   326 / 1319
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