Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nekem lefordította a _BOR_OFF -ot, és pl 16f690-nél CSAK EZZEL működött...
Én megnéztem az MPASM fordító helpjét és ott _BOR_OFF volt.
Kellene az oldalra egy Ring szekció... Vitás eseteket virtuális izombajnoksággal el lehetne dönteni
Nálam sem működik a _BOR_OFF , csak a _BODEN_OFF .
Most próbáltam...
támogatom... és az nyerne aki síkbarajzol egy K3,3 gráfot :p
Vagy tegnapi dátummal létrehoz ma egy topicot
Jé modi csata van!
Komolyra fordítva, annak van igaza, aki az xxFxxxx.inc fájlokat megnézi, hogy abban hogyan van deklarálva a kérdéses szimbólum. Mivel a PIC-ek nem egyformák, előferdülhet, hogy másként neveznek bizonyos dolgokat. Sőt még hiba is lehet egy inc fájlban! Tehát, ha nem megy, keresd az INC-ben! :yes:
Tudod ritka, mikor valaki hasonlóan gondolkodik, mint jómagam(ezt nem szerénytelenségből írom!), ezért örömteli, mikor az történik, amit én is elképzelnék javítási menetnek, tőlem függetlenül.
Ezért igazi felüdülés volt ez a menet! Remélem még sok jó kérdésed lesz, amire tök jól tudunk válaszolni!
Észrevettem egy apró elírást a cikkben:
a 9. oldalon +5V tápfeszültség előállításáról van szó, és 7805 bemeneti feszültségtartománya 6-12V közöttinek van feltüntetve egy eagle rajzon. Az általános 7805-nek 2V a dropfesze, ezért legalább 7V ra van szüksége a megfelelő működéshez. elmegy +6V-ról is, csak akkor 3,5-4V lenne a kimenő feszültség, de ez még elégséges a uC táplálásához Idézet: „Komolyra fordítva, annak van igaza, aki az xxFxxxx.inc fájlokat megnézi, hogy abban hogyan van deklarálva a kérdéses szimbólum.” Én is ezért csatoltam egy részletet az előző oldalon az INC fájlból :yes: Ott egyértelműen látszik, hogy az adott típusnál hogyan hívják a tápfesz leesését figyelő "detektort".
Hali!
Na a 18F2550-esre (SOIC) esett a választás. Azért is mert 28 láb bőven elég, másrészt a 40 lábas SMD-nek tul sűrű a lábazása. akkor egy gyakorlati kérdés: -leszámítva a programozó+táp+kvarc a többi szabadon hsználahtó bármire? Tehát hogy szokás? megtervezem a panelt ahogy a legpraktiküsabb, és majd ami ahova esik úgy programozom le a lábakat? (semmi extra funkció nem kell, csak digit I/O) Másik: mindkettő GND-t rá kell kötni? vagy szabadon választható praktikussági szempontból? Köszi!
-leszámítva a programozó+táp+kvarc a többi szabadon hsználahtó bármire?
Igen Tehát hogy szokás? megtervezem a panelt ahogy a legpraktiküsabb, és majd ami ahova esik úgy programozom le a lábakat? Ugyanahhoz a dolgohoz tartozó biteket 1 portra szokás pakolni Másik: mindkettő GND-t rá kell kötni? vagy szabadon választható praktikussági szempontból? Igen, mindkét oldalon rá kell kötni a földet és a tápfeszt (GND, Vdd) Idézet: „leszámítva a programozó+táp+kvarc a többi szabadon hsználahtó bármire?” Igen, ahogyan azt az adatlap megengedi! Ezt azért emeltem ki most, mert pl. analóg bemenetként nem minden láb funkcionálhat... Idézet: „hogy szokás? megtervezem a panelt ahogy a legpraktiküsabb, és majd ami ahova esik úgy programozom le a lábakat?” Igen, általában így. De azért néha nem árt egy kis logikusságot is belevinni a témába :yes: Pl. ha egy 8 bites adatvonalú, általános LCD-t hajtasz meg, akkor azt nyilván úgy célszerű bekötni és vezérelni, hogy az egyik PORT kompletten illeszkedjen az LCD adat- (avagy vezérlő) vonalához... Idézet: „mindkettő GND-t rá kell kötni? vagy szabadon választható praktikussági szempontból?” Nem muszáj bekötni őket, de célszerű! Elméletileg a PIC-en belül össze vannak huzalozva, de biztosabb működést (és érzést :yes: ) ad, ha mindkét oldali, azonos funkciójú táplábak össze vannak kötve. Idézet: „leszámítva a programozó+táp+kvarc a többi szabadon hsználahtó bármire?” Igen. De arra figyelj, hogy az RB6 és az RB7 lábon keresztül programozod fel, tehát az égetőnek ezeket el kell engednie a felprogramozás után, ha áramkörben programozod. Idézet: „megtervezem a panelt ahogy a legpraktiküsabb, és majd ami ahova esik úgy programozom le a lábakat?” Igen. Idézet: „mindkettő GND-t rá kell kötni?” Igen. Idézet: „Az általános 7805-nek 2V a dropfesze, ezért legalább 7V ra van szüksége a megfelelő működéshez.” Köszönöm! Hamarosan javítom!
Többiek már válaszoltak, én csak kiegészíteni tudom és pontosítani:
1. Minden táplábat be kell kötni és a lehető legrövidebben kondizni(SMD legkisebb 100nF-os kondija pont befér két láb közé!) 2. Ha nem kell kvarc pontosság, akkor még a kvarc lábakat is fel tudod használni, mert van belső 8MHz-es oszci is. 3. Ha az RB6(PGC), RB7(PGD)-en keresztül progizol, akkor azokat állítsd bemenetnek, akkor nem okozhatnak bajt.
Sziasztok !
Újabb kérdésem lenne, ha tudnátok segíteni. A 877 es után szeretnék 12F508 at programozni. A gond már az inicializálásnál elkezdődik, mivel nem fogad el semmit amit a 877 es elfogadott. Én azt hittem az összes PIC "egykaptafa" ebből a szempontból, tehát értem ez alatt hogy az adott eszköznek megfelelő paramétereket ugyanolyan formában kell megadni mindegyik típusnál. Vagy mégsem? A másik gondom hogy a project felépítésénél (MPLAB IDE 7.0) a program hiányol, vagy (ha a 877 es nek megfelelően írom be) nem értelmez egy .inc fájlt. Ezt hol kellene találnom? Vagy milyen formában kell beírnom? Az 508 as adatlapján nem találok erre vonatkozót....(lehet hogy csak én nem...?) Az eszközöknél kiválasztottam az F508 at. Idézet: „Én azt hittem az összes PIC "egykaptafa" ebből a szempontból, tehát értem ez alatt hogy az adott eszköznek megfelelő paramétereket ugyanolyan formában kell megadni mindegyik típusnál. Vagy mégsem?” Az egy családba tartozók között érvényes az egy kaptafa. A 16F877 és a 12F508 nem egy családba tartozik. Idézet: „hiányol, vagy (ha a 877 es nek megfelelően írom be) nem értelmez egy .inc fájlt. Ezt hol kellene találnom?” Ott, ahol a többi inc fájl van: MPASM Suite mappában.
A megfelelő inc fájlt kell kiválasztanod a programod elején. Keress rá az MPLAB könyvtárában az inc-kre, és meg fogod találni a megfelelő fájlnevet(Szerintem 12F508.inc lesz).
Azt, hogy mit fogad el a fordító, ebben a fájlban megtalálod.
Megvan, köszönöm. "P12F508.INC" nek hívják, én PIC12F508 al meg 12F508 al próbálkoztam ezért nem volt jó.
Köszönöm a válaszokat!
"Ugyanahhoz a dolgohoz tartozó biteket 1 portra szokás pakolni" Viszont ezt nem tudom megcsinálni mivel az kijelzőhöz 7 kimenet kell (+2) A Port - csak 6 I/O B Port - csak 6 I/O (8, de -PGD és -PGC) C Port - csak 6 I/O [RC4 és RC5 csak bemenet (adatlap szerint)]
Nyugodtan teheted bármelyik lábra, csak nehezebb egy bájtot kitolni a szanaszét lábakra.
Ha írsz rá egy rutint ami ezt végzi, akkor tök mindeg melyik lábra mit teszel!
watt!
A múltkor egyébként pont ezen a dolgon gondolkoztam... Mármint hogy valahogy lehetséges lenne-e megoldani azt, hogy ASM-ben a program elején megadnék előre egy regisztert, pl. mondjuk 0x40 címmel, és azt úgy beállítani, hogy mindenáron azt használja "kimenetként" a program...tehát "összerakosgatjuk" a portlábakból ezt a regisztert, mint egy puzzle... Feltételezve pl. PORTA 0-3-ig legyen a 0x40-es regiszter első 4 bitje... ...aztán PORTC 2-3 legyen a következő 2 bit... ...és végül a PORTD 0-1 legyen az utolsó 2 bit a 0x04-es helyen levő regiszterben... Tehát ilyesfajta összemixelésre gondoltam...és akkor mondjuk azt mondom programban, hogy: movlw B'01010001' movwf 0x40 És akkor megjelenne >>> PORTA 0-3-ig lábakon: 0001 PORTC 2-3 lábakon: 01 PORTD 0-1 lábakon: 01 De szerintem ez így nem igazán megoldható, ha jól sejtem...csakis egy rutinnal, ahogy fentebb írtad, igaz? Pedig milyen szép is lenne, ha lenne ilyenre lehetőség :yes:
Első körben azt mondanám, hogy csak rutinnal lehet, de majd gondolkodom más megoldáson.
Mindenképpen szoftveresen kell a dolgot megcsinálni, és innen már mindegy, hogy magunk írunk rutint rá (pl. BTFSS/BTFSC+BSF/BCF utasításokkal), vagy egy beépített funkciót használunk. ASM-ben nem hiszem, hogy lenne beépítive, C-ben lehet ilyen mutatványokat csinálni (hogy pontosan ezt lehet-e, nem tudom).
Köszi!
Igen, sejtettem, hogy ez lesz a "megoldás"... Na nem mintha azonnal kellene használnom...csak felmerült bennem, mint lehetőség Talán azért, mert korábbi tanulmányaim során a 8051-es családnál mintha találkoztam volna ilyesmivel...
Üdv!
Én a pic guruktól kérdezném, hogy hogyan lehet piccel 10bites belső AD átalakítót használva pontosan megmérni egy feszt / hőmérsékletet. Leírom, hogy én hogyan tettem. Hw: Először is én a pic A0 AD bemenetét használtam. Elé beraktam egy 74hc4051 analóg multiplexert. Sw: Kód részlet: AD átalakító beállítása bank1 movlw b'11000100' movwf ADCON1 bank0 movlw B'10000001' movwf ADCON0 Majd engedélyezem az átalakítást és tesztelem a Go/Done bitet. Ez idáig mind OK! Megvan az eredmény. Majdnem jó csak néha előfordul, hogy 1-2 értéket változik. -> Ez még elmenne. Ezután van némi kérdésem. Hogy kell ebből a 10 bites eredményből pontos szám értéket varázsolni? Leírom a gondolat menetemet. 2.017V-ra kapok 01A0 hexa értéket (416 dec), ja és ez 34,6 foknak felel meg. Ebből számolok egy konstanst. 416:34,6=12,023 Ez után fogom a 416-ot és megszorzom 10-zel, hogy pontosabb konstanssal tudjak számolni a PIC-kel. Konstans ezután már 120 Utána 4160:120=34.6666 Egész: 34 => kiírom + tizedes vesszőt is utána rakom. Maradék: 80 => elmentem a későbbi számításokhoz. Majd az egész kiiratása után fogom a maradékot és megszorzom 100-zal. 80*100=8000, ezután 8000:120=66.6666 Egész: 66 => kiírom A maradékokat eldobom. És meg is van az eredményem. Szerintetek jó ez az elgondolásom? Kipróbáltam és működik csak nem az igazi…. Segítségeteket köszönőm.
1-2 értéket változni is fog, mert van mérési bizonytalansága, ami 1 digit, ha jól emlékszem.
Mit értesz azalatt, hogy nem az igazi? |
Bejelentkezés
Hirdetés |