Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   328 / 1319
(#) watt válasza Thomas10100 hozzászólására (») Nov 1, 2008 /
 
Többi kérdésre a válasz? (tápfesz mérés?, LED lábakon a feszültségek? Többi lábon a feszültség?)
(#) trudnai válasza rhino hozzászólására (») Nov 1, 2008 /
 
Ha jol ertelmezem krisztian98 nem akar ECU-t csinalni, csak egy nagyon egyszeru interface-t a gazpedal es az ECU koze. Tehat neki az alapjarattal nem kell foglalkoznia, hanem pl egy digitalis potit vezerelni a PIC-kel, tehat az ECU azt hiszi a gazpedalt olvasgatja le. Ez persze nagyon leegyszerusiti a feladatot, nyilvan a vegkifejlet nem lesz tokeletes de hosszu egyenes utszakaszokon talan elfogadhato eredmenyt ad. Az nyilvan valo sokkal jobb lenne a sebessegmerore is raakaszkodni es annak fuggvenyeben szabalyozni.

[OFF]
Az en automban a tempomathoz (cruise control) 3 gomb tarsul, az egyik bekapcsolja, ill annak folyamatos nyomsaval noveli a beallitott erteket, a masik kikapcsolja ill. csokkenti a folyamatos nyomasaval, a harmadik pedig a legutolso beallitasnak megfeleloen ujra bekapcsolja - tehat legutoljara 70-en mentem, valamiert kikapcsoltam pl megalltam egy benzinkutnal, utana nem kell megint felgyorstanom es ujra beallitanom, hanem csak megnyomom es az felgyorsitja az autot.

Ehhez hozza tartozik, hogy eleg gagyi a dolog (opel omega amugy az auto), csak a feket figyeli biztonsagi kioldas vegett, ugye kupliung nincs mert automata de ha kilokom a valtot uresbe akkor elkezd ezerrel porogni a motor! Amikor vissza kapcsolom hogy ujra menjen 70-el es meg csak 40-el megyek, akkor erzekeli a nagy sebesseg kulonbseget, e kepes ra, hogy teli gazt adjon - aminek hatasara a valto vissza kapcsol es akkor ugy erzem magam mint egy repulon ami epp fel akar szallni (csak epp nekem kellene megallitani a jarmuvet ha gond van...). A sebesseg tartas viszonylag jol mukodik, +-5 km/h az atlag ami kozott mozog, kiveve ha hirtelen nagy emelkedo jon ahol lassan veszi eszre es aztan megint teligazzal felel az esemenyre, amire valto megintcsak vissza kapcsol... repulo effektus ujra
(#) watt válasza krisztian98 hozzászólására (») Nov 1, 2008 /
 
Én nem javasolnám, hogy az autót használd fel a PIC-ekkel való ismerkedésre! Még a végén balesetet okozol! Egy ilyen áramkör nagy bajt is tud okozni, 110%-os biztonsággal kell működnie! Egy rossz program ami úgy tűnik működik, csak jön egy olyan helyzet, amire nem gondoltál, és kész a baj. (mondjuk fogja magát csúcsforgalomban és egyesben odapakol!)

A PIC-et LED villogtatással kell kezdeni és szépen folyamatosan tanulni a buktatóit.

És ami itt nem PIC téma, hogy hogyan kell egy autót vezérelni, nem biztos, hogy itt kell majd kifejteni, de ez csak egy megjegyzés.
(#) Thomas10100 válasza watt hozzászólására (») Nov 1, 2008 /
 
Elismerem, meg kellett volna néznem
A LED-ek nem voltak jók

Köszönöm a segítséget!
(#) rhino válasza trudnai hozzászólására (») Nov 1, 2008 /
 
Idézet:
„nem akar ECU-t csinalni, csak egy nagyon egyszeru interface-t a gazpedal es az ECU koze.”


amit megfogalmazott, abból én is ezt láttam. Amit viszont leírt, az ez:

"Tempomatot szeretnék építeni a kocsiba"


(#) watt válasza Thomas10100 hozzászólására (») Nov 1, 2008 /
 
Imádlak!
(#) watt válasza trudnai hozzászólására (») Nov 1, 2008 /
 
Igazad van, nem ECU-t akar, és ezt mi sem gondoltuk egy percig sem .
Pontosan úgy van ahogy mondod, bele akar tenni egy elektronikát a gázpedál "jelébe"! Ezt nem tartod kissé veszélyesnek egy kezdő számára? Mi van, ha az áramkör elektronikai, vagy szoftveres okból hibásan kezd működni?
(#) trudnai válasza watt hozzászólására (») Nov 1, 2008 /
 
Idézet:
„Mi van, ha az áramkör elektronikai, vagy szoftveres okból hibásan kezd működni?”


Gubanc
(#) googa hozzászólása Nov 1, 2008 /
 
Sziasztok! Az lenne a kérdésem, hogy ha egy RC távirányító vevőjéből kiérkező jeleket szeretném PIC-el feldolgozni, akkor milyen bemenetét és milyen tulajdonságát kell felhasználnom a PIC-nek? Amit a vevő csatlakozójáról tudok, az annyi, hogy három PIN-je van. Egy 4,8V-6V-ig 'TÁP' kimenet egy 'JEL' és a 'GND'.
Kép: Hivatkozás
A fenti képen látható, hogy egy RC szervómotor hogyan működik a vevő kimenetére csatlakozva. Ha az impulzus 1ms ideig tart, akkor a servo az egyik végállásban van, ha 1,5ms akkor középen és ha 2ms akkor a másik végállásban van. A kettő között pedig proporcionális.
(#) watt válasza googa hozzászólására (») Nov 1, 2008 /
 
Én a Capture módot használom fel erre.
Úgy működik, hogy egy 16bites számláló számlál egy meghatározott frekin, jó gyorsan. A felfutó él megszakítást okoz a CCPx Compare moduljában,aminek a hatására a Timer értéke beíródik a CCpx modul regiszterébe. Ezt eltárolod, majd lefutó élre állítod a CCPx modul megszakítás érzékenységét. Ha megjön a megszakítás, akkor az előbb leírt dolgok történnek ismét. A korábban eltárol értéket kivonva a mostani eltárolt számláló értékéből előáll egy érték, ami fordítottan arányos az impulzus idejével. Feldolgoz, kiad a megfelelő vezérlőjel, működik, örül!

Persze a kiadott vezérlőjelet lehet cizellálni némi táblázatból kinyert jól megtervezett értékekkel, hogy a vezérlő gomb állássa lineáris ill. az elvárt hatást váltsa ki a vezérelt járművön, vagy egyéb jelenségen.
(#) Thomas10100 válasza watt hozzászólására (») Nov 1, 2008 /
 
Azt akarom megkérdezni még hogy kapcsolókat hogyan kössek be, és melyik portot ajánlod.

Úgy jó lenne ha GND-re 1kohm-al minden lába egy portnak, a láb pedig 10kohm-al kapcsolóval a Vdd-re.

Így alaphelyzetben 0 a bemenet gombnyomásra meg 1.
Ellenállások talán jók igy.

Mátrixot nem igazán akarok.

Köszi!
(#) googa válasza watt hozzászólására (») Nov 1, 2008 /
 
Hú, ez kicsit bonyolult így elsőre. De biztos csak azért, mert a capture-el nem is foglalkoztam még. Ez tök jó lenne, ha összejönne

Azt szeretném még megkérdezni, hogy ha include fájlként megadok olyan szösszenteket, mint pl. egy LCD modul kezelés, akkor egy másik fájlból lehet hivatkozni abban a fájlban található cimkére? Mert, mintha ilyesmi projektet látam volna. És így sokkal átláthatóbban tudnék programozni én is. ASM-ről van szó most.
(#) trudnai válasza googa hozzászólására (») Nov 1, 2008 /
 
Include file-t nem program kodok tarolasara kell hasznalni, hanem definiciok es makrok-ra. Program kodok szeletelesere tessek a relokacios modot hasznalni linker scriptekkel es tessek a linkerre bizni a projectbe agyazott forras kodokat, object kodokat es library-ket hova pakolassza majd a program memoriaban - es hogy a memoria valtozok vegleges helye mi legyen. Egyszer kell megtanulni es sokkal egyszerubb a vegkifejlet.
(#) watt válasza googa hozzászólására (») Nov 1, 2008 /
 
Olvasd el többször és meglátod nagyon egyszerű! Nézd meg hozzá az adatlapban az ide vonatkozó ábrát! Nézd meg az ide vonatkozó regisztereket, mit és mivel lehet beállítani. Ha valamelyiket nem érted kérdezd meg, ha tudunk válaszolunk.

Trudnainak igaza van az include-kkel kapcsolatban, de ettől föggetlenül simán meg lehet oldani így is a dolgot, csak arra kell ügyelni, hogy ahová teszed az #INCLUDE-t oda fog bemásolódni az a szöveg, ami a *.inc fájlban van.
Egy dologra figyelj, hogy két inc között csak CALL-al tarts kapcslatot, soha ne ugrálj más módon közöttük, mert abból iszonyatos kalamajka lesz a végén!

De ismétlem trudnainak igaza van, csak én is olyan lusta(és lehet, buta) vagyok, hogy még soha nem használtam a linkert. Nekem túl bonyolult.

Tényleg trudnai, el lehet mondani a működését egyszerűen? Mert a leírásokból én nem értek semmit, csak ideges leszek tőle!
(#) watt válasza Thomas10100 hozzászólására (») Nov 1, 2008 /
 
Bármelyik port megfelel, ha a bemenetnek konfigolod.

Én jobbnak tartom a felhúzó ellenállásokat és amikor a gomb testre zár. Ennek az az oka, hogy a PIC bemenete 2...2.5V felett gondolja azt, hogy a szint H, viszont kb. 0,8V alatt, hogy L. Ezért stabilabb a felhúzás. Az 1K az jó érték, de lehet 4k7-val is próbálkozni, ha sok a gomb és nem akarod hogy sokat fogyasszon az áramkör. Ez egyébként elemes táplálásnál lehet érdekes inkább, mert a felhúzón csak a gomb lenyomásakor folyik áram.

A programnak egyébként mindegy, hogy BTFSS, vagy BTFSC...
(#) googa hozzászólása Nov 1, 2008 /
 
Miért cserélgeti az MPLab és a PicKit2 saját programja a firmware-t a PicKit2-ben, ha felváltva használom őket?
Nem ez a mániám, csak néha napján rámjön, hogy az MPLab-ot tanulgassam.
(#) watt válasza googa hozzászólására (») Nov 1, 2008 /
 
Mert valamelyikben nem jó firmware van. Olvasd el a PICKit2 cikkemben az ide vonatkozó részt!
(#) fejesg hozzászólása Nov 1, 2008 /
 
Sziasztok!

Ismeri-e valaki közületek a PIC12F683-at? Elakadtam az AD átalakítónál... Alant bemásoltam a konverziós rutint; valamiért nem indul. MPLAB-bal is végigléptettem, semmi eredmény. Ott a hiba: nem megy a konverzió, mert nem megfelelő az "Acquisition Delay". Később leírják példával, hogy ez 1..5 mikrosec közötti (1 órajel?).

Üdv: fejesg

adc0

;

banksel TRISIO

bsf TRISIO,0

banksel ANSEL

movlw b'01110001'

iorwf ANSEL

banksel ADCON0

movlw b'10000001'

movwf ADCON0

; MINTAVÉTELI IDŐ
bsf ADCON0,GO

btfsc ADCON0,GO

goto $-1

;

banksel ADRESH

movf ADRESH,W

movwf adfelso

banksel ADRESL

movf ADRESL,W

movwf adalso

;
return
(#) googa válasza watt hozzászólására (») Nov 1, 2008 /
 
Kezdem érteni ezt a "kepcsör fánksön-t" Kép: Hivatkozás
(#) fejesg válasza googa hozzászólására (») Nov 1, 2008 /
 
Üdv.

?????????????????????

Milyen Capture Function-ra gondolsz?

fejesg
(#) watt válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Mennyi az órajeled(kvarc, vagy a belső oszci ?MHz)?
(#) watt válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Figyelj oda kinek íródik a válasz!
(#) googa válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Neked sajnos nem tudok segíteni. Igazából 'Watt'-hoz szóltam, és ez a fejlécből kiderül.

Watt: Közösíteni kell a PIC-em GND-jét az RC-vevőm földjével? Vagy ez evidens minden áramkör részletre nézve, amik együtt dolgoznak? Azért kérdezem, hogy elég-e bekötni a 'signal' nevű TTL jelet a PIC-re?
(#) fejesg válasza watt hozzászólására (») Nov 1, 2008 /
 
Szia googa & watt!

Bocsi, figyelmetlen voltam. A miki belső 4 MHz oszciját használom (ebből következtettem az 1 mikrosec-ra). Bemásolom a beállításokat:

Bár a PWM-et is használni szeretném, egyelőre kikapcsoltam, komparátorokat letiltottam. GP0 AD bemenet, GP1-2-4-5 kimenet, GP3 bemenet.

LIST P=12F683, R=DEC

#include "P12F683.INC"

__config _FCMEN_OFF & _IESO_OFF & _PWRTE_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _CP_OFF & _CPD_OFF & _INTOSCIO

;

CBLOCK 0x20

adfelso, adalso

ENDC

;

ORG 0x00

BSF STATUS,RP0
CLRF INTCON
movlw b'11001001'

movwf TRISIO
CLRF PIE1

CLRF ANSEL ;

clrf ADRESL

BCF STATUS,RP0
CLRF GPIO
CLRF PIR1
CLRF TMR2

CLRF T2CON
CLRF CCPR1L

CLRF CCP1CON

CLRF ADCON0

movlw b'00000111'

movwf CMCON0

fejesg
(#) watt válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Idézet:
„A miki belső 4 MHz oszciját használom”

Úgy érted 4MHz-et állítottál be? Nem látom hol? (max. 8MHz állítható be egyébként...)

Használd a Kód gomb asm lehetőségét(code=asm)
(#) icserny válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Idézet:
„Ott a hiba: nem megy a konverzió, mert nem megfelelő az "Acquisition Delay".”


1. Az ADON bit bebillentése és a konverzió indítása (GO bit bebillentése) közé tegyél néhány NOP-ot. Ha 4 MHz az oszcillátor, akkor egy NOP = 1 us. Ha 4-5 db-ot teszel, az szerintem elég.

2. Ugyancsak hagyj minden konverzió után néhány us időt a következő indításáig. Ehhez nem kell NOP, elég, ha a program közben csinál valamit ("feldolgozza" az adatot).

3. ANSEL felső bitjeiben a 0111 szerintem rossz választás! A 12F675-nél az pl. írják, hogy max.500 kHz-ig választható. Neked meg, gondolom, 4 MHz-en ketyeg az oszcillátor. Válaszd ezért inkább a Fosc/8 vagy Fosc/16 lehetőséget.
(#) icserny válasza Thomas10100 hozzászólására (») Nov 1, 2008 /
 
Idézet:
„Azt akarom megkérdezni még hogy kapcsolókat hogyan kössek be...”


Úgy, ahogy a tegnap neked küldött Olimex-es kapcsoláson látható. Vagy ahogy a Microchip demókártyáinak kapcsolási rajzain láthatod.

Pl. 10 kohmos felhúzás, a nyomógomb pedig a föld felé zárjon, közvetlenül. A PIC lába és a nyomógomb közé pedig egy védőellenállást érdemes beiktatni (470 ohm). Ez azért kell, hogy nehogy egy kimenetnek beállított lábat köss le közvetlenül a földre.
(#) fejesg válasza icserny hozzászólására (») Nov 1, 2008 /
 
Hi.

Köszi a választ. Az a helyzet, hogy 1:1 bemásoltam az user manual PDF-ből a rutint, abban így van az ANSEL beállítása, de megpróbálom Fosc/16-tal, ahogy írtad.

Egyébként én is így értelmeztem a 4-5 mikrosecundumot, hogy a konverzió elé meg utána berámoltam 6-8 NOP-ot.

fejesg
(#) trudnai válasza watt hozzászólására (») Nov 1, 2008 /
 
Idézet:
„Tényleg trudnai, el lehet mondani a működését egyszerűen?”


Vegulis egyszeru az eset Csak a beteg idokozben meghalt

Szoval project ablakban jobb kikk, add new file, processzorhoz tartozo LKR file-t fel kell venni - ugye ezek az MPASM konyvtaraban vannak. Ezenkivul ami gond nekem szokott lenni, hogy a friss MPLAB installban valamiert nincsenek beallitva az utvonalak megfeleloen. Tehat a Project / Language Tool Locations -nel be kell allitani az LKR utvonalat (Pl nekem az LKR: "C:\Program Files\Microchip\MPASM Suite\LKR").

Utana Project / Build options / Project -nel a Directries fulnel ellenorizni kell, hogy ezek az utvonalak be vannak-e alliva - ha nincs akkor katt a Suite Defaults gombra...

Ezekutan mar keszen all a project a linker scriptelesre, szoval mar csak hasznalni kell. Alapertelmezesben ha a standard linker scriptet hasznaljuk (amit fent felvettunk a projectunkbe), akkor nincs tul sok teendonk. Ami lenyeg:

1. Valtozo definialas: Tobbfele modon definialhatunk valtozot, a legegyszerubb, hogy az udata szekcioba foglalunk neki helyet:
  1. udata
  2. counter res        1 ; 1 byte
  3. uint    res        2 ; 2 byte
  4. ulong   res        4 ; 4 byte

Ez az un inicializalatlan valtozo (Uninitialised DATA --> UDATA).
Ez kb a CBLOCK-nak felel meg, azzal az elteressel, hogy ez valoban valtozot foglal a memoriaban. Hogy mit jelent ez? A CBLOCK az csupan egy konstans definialasara szolgalo block, azaz semmire sem figyel, megadunk neki egy kezdo erteket es a konstansok sorban kapjak a novekvo sorszamokat. Ezzel szemben az UDATA az egesz projecunkre vonatkozik es figyelembe veszi a linker scriptben definialt RAM teruletet, tehat ha kifutunk belole sikit a linker, azonkivul nem engedi, hogy ket valtozo ugyanarra a teruletre keruljon, mig CLOCK-kal el lehet ezt a hibat kovetni...

2. Kod terulet definialas
  1. code
  2. main
  3.         MOVLW    b'01110110'
  4.         MOVWF    OSCCON

Ez a legegyszerubb modja a kod elhelyezesenek, egyszeruen megmondjuk, hogy a 'code' teruletre kivanjuk helyezni a kodunkat. Nem kell semmivel sem foglalkozni, a linker majd szepen elhelyezi a kodot oda ahova kell. Ha valami miatt megis meg szeretnenk admi, hogy hova keruljon a kod, az sem gond:
  1. rst     code   0x000
  2.         GOTO    main
  3. ...
  4. main
  5.         MOVLW   b'01110110'
  6.         MOVWF   OSCCON

Nos, a 0x000 -lal megadjuk a cimet, elotte a nev az egy logikai hivatkozas lesz erre a szekciora.

Na jo, mara ennyit, ezzel mar el lehet indulni szerintem. Lehet inkabb egy cikket fogok irni, meg hatra lenne par dolog:
- overlay RAM terulet hasznalata
- shared RAM terulet hasznalata
- inicializalt RAM hasznalata
- es ami a lenyeg: tobb forras, objektum file-ok ill konyvtarak hasznalata / keszitese
(#) watt válasza fejesg hozzászólására (») Nov 1, 2008 /
 
Nem válaszoltál a kérdésemre...
Következő: »»   328 / 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