Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1013 / 1319
(#) El_Pinyo válasza watt hozzászólására (») Aug 6, 2011 /
 
Lehet, hogy félreérted, vagy én nem voltam teljesen világos. Tehát így működik:
  1. __CONFIG _CONFIG1H, _IESO_OFF_1H & _FCMEN_OFF_1H & _PRICLKEN_ON_1H & _PLLCFG_OFF_1H & _FOSC_HSHP_1H
(#) watt válasza El_Pinyo hozzászólására (») Aug 6, 2011 /
 
Assemlerben én nem tudok más megoldásról...
(#) El_Pinyo válasza watt hozzászólására (») Aug 6, 2011 /
 
A PIC18-as típusoknál jelent meg az újfajta konfigurációs szó megadása, mely nagyon hasonlít a C18-nál alkalmazottakhoz. Ez az alábbi:
  1. CONFIG FOSC=HSMP, PLLCFG = ON, PRICLKEN = ON, FCMEN = OFF, IESO = OFF

Ha belekukkantasz a PIC .inc fájljába, akkor láthatod a konfigurációs beállításoknál, hogy javasolják ezt a fajta jelölést (kommentben olvasható). Ha a régebbi verziót használjuk, akkor egy 230 kódú warning message-t is dob az assemblálás során.
Elvileg az MPASM Suite mappában van egy .chm help fájl, melynek címe: hlpPIC18ConfigSet.chm, ebben írja ezt az újfajta megadási módot.
(#) Hp41C válasza watt hozzászólására (») Aug 6, 2011 /
 
A 8.73a - mint írtam - megcsinálja így is:
  1. list    p=18F26K22
  2.         #include <P18f26K22.inc> ; processor specific variable definitions
  3.                 CONFIG  FOSC = HSHP
  4.                 CONFIG  PLLCFG = OFF
  5.                 CONFIG  PRICLKEN = ON
  6.                 CONFIG  FCMEN = OFF
  7.                 CONFIG  IESO = OFF
  8.         End
(#) watt válasza El_Pinyo hozzászólására (») Aug 6, 2011 /
 
Én még ma is így adom meg sokszor:
  1. __CONFIG        _CONFIG1H,      b'00100010'

Utána kommenttel...
(#) NyariG hozzászólása Aug 6, 2011 /
 
Adott ez a részlet a Nullától a Robotokig cikkben:

START
BCF STATUS,RP1
BSF STATUS,RP0 ;BANK1-be átlépünk
;PORTA Digitális I/O-vá tétel
MOVLW 0x06
MOVWF ADCON1 ;Mindegyik PORTA digitális
MOVLW B'00011111' ;Betöltjük az akksiba a TRISA-ba írandót


De fogalmam sincs ez mi lehet: MOVLW 0x06
az ok hogy ezt töltjük be az ADCON1 be de ez honnan jött hogy ezt kell? Pic adatkönyvéből? Mit kell ide beírni hogy visszategyük analógra?

plusz ez:

CBLOCK 0x20 ;A 0x20 egy szabad memória rész kezdő címe
T1
T2
T3
ENDC

az a 0x20 honnan jön? mért pont az?
(#) Hp41C válasza NyariG hozzászólására (») Aug 6, 2011 /
 
Szia!
Igen a 16F87x vagy a 16F87xA adatlapjából.
(#) NyariG válasza Hp41C hozzászólására (») Aug 6, 2011 /
 
Ok, az megvan ki is nyomtattam, forgatom is... de nem találok semmit... Egyáltalán milyen formátum ez, mire való? Hogy kell értelmezni?
(#) Hp41C válasza NyariG hozzászólására (») Aug 6, 2011 /
 
- Assembly forrás kód. Nézd meg az utasítások leírása fejezetben.
- Töltsd le a MpLab programot...

Továbbiakban inkább a Pic kezdőknek topikban...
(#) marek hozzászólása Aug 6, 2011 /
 
Sziasztok!
PIC16F877-est használok hogy "beszélgessek" a PC RS232-es portjával. Igazából működik rendesen, de van valami amit nem értek. A PIC adatlapjában meg vannak adva hogy milyen számokat kell írni az SPBRG regiszterbe, hogy a megfelelő baud rate-en működjön a PIC. 4MHZ-es kristályt használok, de valami miatt mindig egy sorral feljebbi értéket kell a programba írnom, mint amit a táblázatban előírnak. Pl. 4MHZ-es kristályhoz, és 8.929 KBaud-hoz elvileg 6 tartozik, de így nem működik az áramköröm. Ha az egy sorral feljebbi 25-öt írom be (ami 2,404 KBaud-hoz tartozik elvileg), akkor viszont tökéletesen működik minden. Valakinek van ötlete hogy mi lehet a magyarázata ennek?
Üdv,
Marci
(#) icserny válasza marek hozzászólására (») Aug 6, 2011 / 1
 
A BRGH bit beállításától függ, hogy melyik táblázatot kell nézni. BRGH=1 esetén 25 a jó érték.
(#) marek válasza icserny hozzászólására (») Aug 6, 2011 /
 
Köszönöm a segítséget, erre nem figyeltem, de így már mindjárt érthető a dolog
(#) edison14 hozzászólása Aug 7, 2011 /
 
Helló. Éppen egy PIC16F88-assal küszködök melynek egy másik PIC-hez kellene küldenie adatokat USART-on. Mindent jól beállítottam de a szimulációnál a következő üzenetet kapom vissza:
Idézet:
„UART-W0005: Synchronous mode is not implemented in USART. Use Asynchronous mode only.

A microchip fórumán azt írták hogy ez egy korlátozás a szimulációra. Hogyan lehetne ezt kikerülni vagy valaki találkozott már hasonlóval?
(#) Hp41C válasza edison14 hozzászólására (») Aug 7, 2011 /
 
Szia!

Valóban csak a szimuláció nem terjed ki rá (meg az SPI -re, az I2C -re stb..). Az adást nem tudod tesztelni, de a vételt igen - stimulus, regiszer injection...
(#) edison14 válasza Hp41C hozzászólására (») Aug 7, 2011 /
 
Hát ez elég rossz. De nem baj nem csüggedek. Köszönöm.
(#) Hp41C válasza edison14 hozzászólására (») Aug 7, 2011 /
 
Ne csüggedj, nagyon jól használhatók a stimulusok... Az összes aszinkron soros kapcsolatot is stimulussal teszteltem le.
(#) Andre90 hozzászólása Aug 8, 2011 /
 
Üdv Mindenkinek!

Adott jó pár PIC12F675, ilyennel szeretnék PWM jelet előállítani kb. 100 kHz-es tartományban egy lábon. Sajnos ezeknek a chipeknek nincs hardveres PWM moduljuk, így szoftveresen kéne megoldanom. A kérdésem az lenne, hogy esetleg valaki tudna tanácsot adni miként érdemes ezt megoldani. Annak is örülnék, ha valaki mutatna egy példát erre.
Én elsőre egy timer interrupttal gondoltam megoldani, csak felmerült benne pár kérdés. Az járható út-e, hogy a TMR0 regisztert mindig akkora értékre állítom be, hogy a kívánt időközönként kapjak egy interruptot, és az interrupt elején újra beállítanám a kívánt értékre a TMR0 regisztert. Szeretném változtatni is a kitöltési tényezőt, de hogy pl. 8 lépésben ezt megtegyem, ahhoz legalább 800 kHz-es frekvenciával kéne a timer interruptot meghívni.
Szerintetek egy ilyen alsó kategóriás PIC-kel ez megoldható, vagy ne vesződjek vele, és inkább szerezzek be olyat, amin van hardveres PWM?

A válaszaitokat előre is köszönöm.

Üdv: András

u.i.: Elsősorban az alacsony lábszám miatt választottam ezt a chipet, számomra ez is mérvadó, maximum a 20 lábas chipekig mennék el.
(#) potyo válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
12F683 nem lenne jó? Bár a 100kHz érdekes lesz, de úgy emlékszem, megoldható. Vagy 12F1822?
(#) Andre90 válasza potyo hozzászólására (») Aug 8, 2011 /
 
Szervusz!

Én is nézegettem, hogy a 12F683 jó lenne, csak sajnos a nyakamon maradt jó pár 12F675-ös, és ha lehet azokat használnám, nincs szívem kidobni őket.
(#) vilmosd válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
Mivel tobbet akarsz csinalni, erdemesebb rogton HW PWM-es uC-t valasztani. Arban hasonlo mindegyik. Pl 12F683, 12F1822. Egy problema azert akad. A 100 khz PWM freki egy kisse magas. Ehhez 20 MHz-rol kell jaratni a procit, kulso kvarcrol. Ez elvesz ket labat. 78 kHz pwm freki eseten 8 bit felbontast lehet elerni 20 MHz oraval. 8 MHz eseten 76 kHz kimeno frekinel 6 bit felbontasu a kitoltes. 14 labasok is hasonlo arfekvesben vannak. 16F684, 16F1823. Ezekben is van HW PWM.
(#) trudnai válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
Annyira nem veszes szerintem a dolog. Ha 4MHz belso oszcirol megy, akkor ugye 100kHz az azt jelenti, hogy FOSC/4 azaz 1MHz / 100kHz tehat lb 10 lepest tudsz elmeletileg elerni (10%-kos lepesekben valtoztatni a dudty cycle-n). A megszakitasban kell a szamlalot ugy beallitani,hogy 10, 9, 8 stb -nyire legyen az FF (ill. Timer1 eseten a FFFF) ertektol. Elobb beallitod, hogy mekkora a duty cycle, majd ha az a megszakitas megjon, akkor hogy mekkore a Period-Duty ideje... Valoszinuleg azert a frekit megnovelnem, vagy csak a timert hajtanam nagyobb frekivel, hogy a felbontas novekedhessen. De szerintem nem annyira veszes a dolog mint amennyinek elsore hangzik.

Valoszinuleg azert egy HW PWM modules eszkozzel jobban jarnal, ha ugyis most valasztod ki a chip-et.
(#) icserny válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
Számold ki, hogy 800 kHz-es jel esetén hány utasítás jut egy eseményre (pl. a Timer megszakítás kiszolgálására), majd gondold végig, hogy ennyi utasításból meg tudod-e oldani!

Kvarc nélkül Fosc= 4MHz, amiból 1 utasításciklus = 1 us. Egy kétciklusú utasítás már 2 us. Kvarccal legfejebb 5-ször jobb a helyzet.
(#) watt válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
Ha a PIC-nek mást nem kell csinálnia, akkor talán belefér, de nem érdemes megszakításban, mert az is idő, míg elmented a szükséges regisztereket.
Ha más feladatok is vannak, főleg időkritikusak, akkor nem fog menni.
(#) adamhollos hozzászólása Aug 8, 2011 /
 
Sziasztok!

Utánanéztem ahogy mondtátok a CAN protokollnak. Az lenne a kérdésem, hogy melyik mikrokontrollert válasszam a feladathoz? Ti hogy választjátok ki a célnak megfelelő PIC-et?

Én a 18F26K80-at találtam, de sehol sem találok hozzá datasheetet. Szerintetek van ennél a PIC-nél jobb megoldás ha nekem csak az kéne, hogy legyen minimális EPROM-ja, legyen CAN perifériája, legyen 10 I/O portja, legyen benne belső oszcillátor és legyen benne Watch Dog Timer? Nekem ugyanis az az érzésem, hogy ez a kontroller túl sok ehez a feladathoz Esetleg lehet. hogy jobb ötlet lenne ha külön lenne egy CAN vezérlő és egy PIC?
(#) vilmosd válasza adamhollos hozzászólására (») Aug 8, 2011 /
 
Esetleg a MCHP oldalan a 18F26K80 cimszo alatt lehet hogy megtalalod az adatlapot.
(#) potyo válasza adamhollos hozzászólására (») Aug 8, 2011 /
 
Én mindig úgy szoktam, hogy google-ba beírom a pic típusát "PIC18F26K80" formában, és akkor az első találat az szinte kivétel nélkül arra az oldalra mutat, amit vilmosd linkelt, a második találat meg általában a pdf szokott lenni :yes:
(#) adamhollos válasza potyo hozzászólására (») Aug 8, 2011 /
 
Igen, igen, én is ezt szoktam csak az volt a baj, hogy a 18F66k80 volt az adatlap címe és azt hittem, hogy ebben a PIC16f66K80-ról lesz szó ezért először bele se néztem.
(#) El_Pinyo válasza Andre90 hozzászólására (») Aug 8, 2011 /
 
Szia!
Ha csak annyi a feladat, hogy a kotroller egyik kimenetén előállítsd a PWM jelet, akkor véleményem szerint teljesen felesleges a Timerrel vesződni, tekintettel arra, hogy a PWM frekvencia relatíve magas. Mivel ismerjük a kontroller működési frekvenciáját (tegyük fel, hogy 4 MHz), így az utasításv égrehajtási időt is tudjuk. Ebből szoftveres késleltetéssel simán kihozható a PWM jel. Mivel nem volt jobb dolgom, így bátorkodtam a feladatot megoldani. A mellékletben csatolom az MPLAB projectet. A működésről annyit, hogy a kontroller belső 4 MHz-es órajelét használjuk, a kitöltési tényezőt pedig a GP4 GP2 GP1 GP0 portlábakon levő kapcsolók segítségével lehet beállítani. A kitöltési tényezőt bináris formában kell megadni, a forrásfájlban részletezett módon. A kontrollert ezután resetelve a beállított kitöltési tényezőjű PWM jel fog megjelenni a kontroller GP5 kimenetén. Minimális hardverrel megvalósítható a feladat: kell a 100 nF kerámia kondi a táplábak közé, kell pl. egy DIP switch (sima kapcsolók is lehetnek, de a DIP switch elég kultúrált megoldás) a kitöltési tényező beállításához, egy nyomógomb a resethez és a 10 kOhm felhúzó ellenállás az MCLR lábra. A kapcsolókhoz nem muszáj felhúzó ellenállás, mert a kontrollernek van belső felhúzója. Ha ettől eltérő hardvert szeretnél, akkor a kódban módosítás szükségeltetik. Nézd át a projektet, ha más nem, akkor ötletadónak talán jó lesz. Megjegyzésként hozzátenném, hogy csak az MPLAB SIM szimulátorával teszteltem, ott jól működött.

SoftPWM.ZIP
    
(#) kissi válasza adamhollos hozzászólására (») Aug 9, 2011 /
 
Szia!

Nem tudom ismered-e ezt az oldalt, ha specifikációk alapján keresel, akkor nagyon hasznos:
Bővebben: Link ?

Steve
(#) kissi válasza Andre90 hozzászólására (») Aug 9, 2011 /
 
Szia!

Ha csak egyszer kell beállítani a kitöltési tényezőt, akkor jó lehet az El Pinyo kolléga megoldása, ha közben is változtatni kell, akkor már lehet, hogy kevés a sebesség!

Az egyik Kónya könyvben volt egy megoldás a szoftveres PWM-re: egy PWM-re jellemző számot adok hozzá mindig egy változóhoz és ha van carry, akkor '1'-es a kimenet, egyébként '0' ! Ez szűrés szempontjából kedvezőbb, nekem tetszett a megoldás és többször használtam már ( nem számoltam ki, de lehet, hogy ezen az elven még 4 MHz-el is működhet a folyamatos állítás ! ) !

Steve
Következő: »»   1013 / 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