Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   646 / 1319
(#) watt válasza googa hozzászólására (») Jan 20, 2010 /
 
A gyártó oldalán találsz mass-storage firmwaret. Persze nem tudom, hogy ez minden további néllkül kompatibilis-e minden számítógép harverrrel...
(#) gyengus válasza googa hozzászólására (») Jan 20, 2010 /
 
Szerintem nézegesd a Microchip Application Framework USB Device - Mass Storage - Internal Flash nevű demóját. Ha jól értem a doksiját ennek segytségével a PIC pendrive-ként látszik és FAT fájlrendszert s emulál.

Én úgy képzelném el az olvasást, hogy lenne egy fájl a meghajtón logikailag, persze. Amikor azt a fájlt olvasod valamilyen programmal, akkor a PIC küldené adott formátumban az adatokat. Tehát végül a fájlban lesznek az adatok.

Hú, ez nagyon zavaros lett. Azért remélem más is érti rajtam kívül. Bocs.
(#) smrtln hozzászólása Jan 20, 2010 /
 
Sziasztok!

Írtam egy programot és még nem sikerült kipróbálnom. És az lenne a kérdésem hogy megnézné-e valaki hogy nincs e benne valami hiba.
Ez egy LED váltogató program lenne kezdetben


List p=16f877
#include "p16f877.inc"

;Konfigurálás

__CONFIG _HS_OSC & _WDT_OFF & _CP_OFF & _LVP_ON

;Kezdő pozíció

ORG 0

GOTO START

;Program

START

;PORTB beállítása digitális kimenetre

BSF STATUS,RP0 ;BANK 1-re váltás
MOVLW 0x06
MOVWF ADCON1
CLRF TRISB
MOVLW b'00000000'
MOVWF TRISB
BCF STATUS,RP0 ;BANK O-ra váltás

MAIN

MOVLW b'00100000'
MOVWF PORTB ;RB5
NOP
NOP
NOP
NOP
NOP
NOP
NOP

MOVLW b'00110000'
MOVWF PORTB ;RB5,RB4
NOP
NOP
NOP

MOVLW b'00000100'
MOVWF PORTB ;RB2
NOP
NOP
NOP
NOP
NOP
NOP
NOP

MOVLW b'00010000'
MOVWF PORTB ;RB4
NOP
NOP

GOTO MAIN

END

smrtln
(#) kissi válasza smrtln hozzászólására (») Jan 20, 2010 /
 
Szia!

Valószínűleg olyan gyorsan fog villogni, hogy nem látod, de ez az órajeltől függ ( azt meg nem írtad, de a HS az nagy sebességre utal!) ! Az LVP-t biztos, hogy ON-ba szeretnéd?

Steve
(#) smrtln válasza kissi hozzászólására (») Jan 20, 2010 /
 
Szia!

10 MHz kristályt akarok rákötni, LVP-t azt beakarom kapcsolni vagy te mit tanácsolsz inkább on vagy off legyen és még lenne egy kérdésem, hogy a NOP helyett milyen késleltetés parancs van, nem tudsz valamit?

smrtln
(#) kissi válasza smrtln hozzászólására (») Jan 20, 2010 /
 
Mivel akarod programozni ?
Késleltetés parancs nincs, hanem ciklust kell szervezni ( DECFSZ utasítás környékén nézegess!) !

Steve
(#) trudnai válasza smrtln hozzászólására (») Jan 21, 2010 / 1
 
Szamoldd ki, hogy ha 10MHz a kristalyod, akkor 1 utasitas 400ns alatt hajtodik vegre (mar az 1 ciklusosak persze, a 2 ciklusos nyilvan ennek 2x-ese). Tehat 5 db NOP-al mar 2us-ot ersz el... Szamoldd ki, hogy hany db NOP kellene 1s eleresehez!

Ahogy irtak hosszu idozitesekhez ciklusokat kell csinalni, vagy masik lehetoseg, hogy a timert hasznalod es annak tulcsordulasat figyeled, de egyenlore ezt lehet meg hanyagolni kellene.

Amugy vannak meg olyan trukkok, hogy:
  1. wait4us
  2.     goto    wait3200ns
  3. wait3200ns
  4.     call    wait1600ns
  5. wait1600ns
  6.     return


ugye GOTO/CALL/RETURN 2 ciklusosak, mindegyik 800ns kesleltetest eredmenyez. Azaz meghivod a wait1600ns-t CALL-al, az mar eleve 800ns, majd a RETURN miatt lesz 1600... A tobbi kalkulaciot rad bizom.

Na, es ezeket es ehhez hasonlo idoziteseket tudsz pl. hasznalni cikluson belul. Erdemes olyan varakozo rutinokat letre hozni amelyek egy elore ismert idonyit varnak, pl. 1ms -nyit. Es ezt lehet akkor egy ciklusbol hivni, ami pl 250x hivogatja ezt, azaz 250ms idozitest eredmenyez. Ezt pedig egy szinten masikbol meghivod 4x, igy lesz 1s-od... Stack-re figyelj, mert korlaozott a merete!
(#) Attila86 hozzászólása Jan 21, 2010 /
 
A PIC18F4520 adatlapjában van egy táblázat az A/D konverternél ami arról szól hogy az A/D bemeneteket hogyan lehet használni. Nem lehet azt hogy mondjuk csak az AN8-at és az AN3-at használom, hanem csak vagy AN1, vagy AN1 és AN2, vagy AN1 AN2 és AN3 stb.

A PIC18F14K50 adatlapján viszont nem találok erre utaló táblázatot. Ennél a PIC-nél akármelyik A/D lábat használhatom?
(#) potyo válasza Attila86 hozzászólására (») Jan 21, 2010 / 1
 
Úgytűnik, akármelyiket használhatod.
(#) icserny válasza Attila86 hozzászólására (») Jan 21, 2010 /
 
Idézet:
„A PIC18F14K50 adatlapján viszont nem találok erre utaló táblázatot.”
A PIC18F14K50 adatlapja I/O portok c. fejezetének a 9.4 Port Analog Control c. alfejezet foglalkozik ezzel (ANSEL és ANSELH regiszterek szerepe és bitkiosztása)
(#) smrtln hozzászólása Jan 21, 2010 /
 
Sziasztok!

Köszönöm szépen a segítségeteket, akkor kipróbálom ezt a trükköt és ha nem sikerül akkor kiszámolom hány NOP-ra lesz szükségem.
Ja amúgy assemblyben programozok

smrtln
(#) vicsys hozzászólása Jan 21, 2010 /
 
Mesterek!
Segítséget kérnék, nagy tisztelettel.
Egy panelműszert készítek (Vés A mérés) és az gondom, hogy billeg (konkrétan ugrál) a voltmérésnél a tized és század.
Nagyvonalakban:
TL431-es referencia (hidegítés és mindenféle trükközés nélkül). A feszméréshez egy 1:20-as ellenállás osztó majd egy LM358 egyik fele, feszültség követőként bekötve és innen a PIC AD-re. Ha testre teszem az osztót (ugye az 0V) akkor is ugrabugrál. Maga az AD konzerzió jó lenne, csak akkor kezd ugrálni amikor felszorzom a mért értéket a ref és osztó értékével. Ha nincs beszorozva, csak a szimpla AD értéket nézem, akkor okés.
Mértem a feszt multiméterrel a bemeneten is és TL-en is, de az stabil. Próbáltam már azt is, hogy átlagolok (10x mérek majd 10-zel osztok), de akkor is ugrál. Breadboardon csillagpontosan dugtam össze a ref-val. Mit lehet még kipróbálni? Mire nem figyeltem?
Csatolom a mérést, testelt osztóval.

mérés.txt
    
(#) potyo válasza vicsys hozzászólására (») Jan 21, 2010 /
 
Mutasd meg a kódodat meg erről a mérésről is kicsit több infó kellene, hogy hogyan történt.
(#) vicsys hozzászólása Jan 21, 2010 /
 
Csatolok egy lecsupaszított kódot. Rajz is kell?

main_1.c
    
(#) PLaci hozzászólása Jan 21, 2010 /
 
Sziasztok!
Bocsi az elemi kérdésért, de már kinéztem a szememet és nem találom. Hogy lehet a 16F628-nál a PWM-t 10 bitesre állítani? Az világos hogy ebben az esetben a 2 LSB bit a CCP1CON 4. és 5. bitje, de hol kell beállítani? Jól gondolom, hogyha átállít(anám) 10 bitre, azzal a 0-100%-ig történő változá ideje is négyszeresére nő? Próbaképpen egy LED-t akarok szabályozni, a belső 4 Mhz-s oszcival, előosztó 16-on, PR2 FF, és így 0-ról a 100%-t kb 1 sec alatt érem el. Az lenne a cél, hogy ez kb 4sec legyen. Természetesen a belső óra frekije nem változhat
(#) potyo válasza PLaci hozzászólására (») Jan 21, 2010 /
 
Emeld lassabban a kitöltési tényezőt. Nem muszáj minden megszakításban egyel magasabb értéket beállítani, maradhat háromszor ugyanaz, és csak negyedszer növeled.

Amúgy a PWM mindig 10 bites módban van tudtommal, csak esetleg az alsó biteket fix értéken tartjuk és úgy lehet elérni látszólag kevesebb bitet.
(#) potyo válasza vicsys hozzászólására (») Jan 21, 2010 /
 
Hát, jobban örültem volna nem CCS kódnak...

Én ezt:
  1. volts = (float)((adc_0/1024)*2.5)*24;


Így csinálnám:
  1. volts = ((float)(adc_0*60)/1024;


Nemtudom, hogy ettől ugrál-e, de egy próbát megér.
(#) vicsys válasza potyo hozzászólására (») Jan 21, 2010 /
 
Átvariztam 1 kicsit.
  1. set_adc_channel (0);
  2.    for (cnt=0;cnt<50;cnt++)
  3.    {
  4.    adc_0 = read_adc();
  5.    delay_us(16);
  6.    aaa=adc_0+aaa;
  7.    }
  8.  volts = (((aaa/50)/255)*2.5)*24;   //
  9.    printf("%3.3f ", volts);
  10.    aaa=0;
  11.    delay_ms(1000);
  12.  
  13.    printf("\n\r");

Ekkor 1 kicsit stabilabb lett, viszont az AD csak 8 bites.
Csatolom a tápra dugott feszmérést. Még mindíg elégedetlen vagyok.
Kipróbálom amit írtál, csak nem értem miért változna bármi is. Magyarázat egy vak és süket embernek?

usbfesz.txt
    
(#) PLaci válasza potyo hozzászólására (») Jan 21, 2010 /
 
Mekkora ötlet!!! Köszi! Én meg milyen egységsugarú, hogy ez nekem nem jutott ez eszembe.
(#) gydanee hozzászólása Jan 21, 2010 /
 
Sziasztok!

Van itt egy pár ultrahangos távolság mérő. Ezek többnyire I2C-vel rendelkeznek. Sajnos ezzel a kommunikációs busszal még nincs tapasztalatom. Az volna a kérdésem hogy mennyire bonyolult egy kezdőnek ilyen bus-t konfigurálni, valamint vannak még olyan érzékelők aminél ez van ki írva: Returns a positive TTL level signal, width proportional to range
Ez mit jelent? Hogy fogom a kimenetén megkapni az értéket?

Válaszotokat előre is köszönöm!
(#) potyo válasza vicsys hozzászólására (») Jan 21, 2010 /
 
Ez az eredmény már egész kultúráltnak tűnik, a múltkoriban voltak nagyon durva ugrások. A kód így már szerintem jó, most kellene megnézni a kapcsolást.
(#) trudnai válasza vicsys hozzászólására (») Jan 21, 2010 /
 
Szerintem varnod kellene a set_adc_channel() es a read_adc() kozt -- oda kellene az a 180us varakozas inkabb... Amugy meg felesleges a cikluson belulre tenni a setupot, azt eleg egyszer felkonfigni hacsak nem akarsz minden alkalommal mas-mas csatornat beolvasni...
(#) vicsys válasza trudnai hozzászólására (») Jan 21, 2010 /
 
Szia
Köszi, kipróbálom. (Nézted a második variációt?)
Csatolom a rajzot. A hidegítés csak a PICnél van, mert rontott a helyzeten ha rákerült.

vameter_1.pdf
    
(#) Hp41C válasza PLaci hozzászólására (») Jan 21, 2010 /
 
Szia!

Ahhoz, hogy a PWM 10 bites legyen, a timer2 előosztójának 4-et vagy 16 -ot kell osztania.

Szia
(#) potyo válasza Hp41C hozzászólására (») Jan 21, 2010 /
 
Nem kell. Ha 1:1 arányra állítod a timert, akkor a hardverben van egy osztó, amit ekkor használ. Figure 9-3 alatti Note 1-et nézd meg.
(#) jdani hozzászólása Jan 22, 2010 /
 
Hali programozók. lenne egy PIC12F675 , és egy TSOP1736-os infra vevő. A meló az lenne, hogy írni rá egy programot. Nem tudom mik a PIC kimenet lábai:, de amit kellene csinálnia az ez: Egy gombot megnyomok a PIC áramkörében, és akor fogadja a jelet. Ezt eltárolja. Megnyomom emgint, fogja a jelet, és eltárolja. Megnyomom megint, fogja ajelet és eltárolja. Aztán ha megnyomom a távirányítón azt a gombot, amit első programozásnál nyomtam, akkor pl, az egyik kimenet láb, és a GND összekapcsoljon, tehát egy kapcsolóként funkcionáljon. Egy infravevő cucc lenne, ami a távolból vezérelne, 3 más nyákba ültetett gombot.
(#) watt válasza jdani hozzászólására (») Jan 22, 2010 /
 
Nagyszerű, mi a kérdésed?
(Gondolom nem itt keresel valakit, aki nekiáll neked programozni, mert ha így gondoltad, akkor az apróhírdetésben a helye a problémádnak.)
(#) Doncso hozzászólása Jan 22, 2010 /
 
Sziasztok, én azt szeretném kérdezni, hogy Pickit2 vel lehet programozni 16F690-et a hagyományos módon?
Mert a manual device select be nem találtam ezt a chip-et.
(#) watt válasza Doncso hozzászólására (») Jan 22, 2010 /
 
Biztos, hogy lehet programozni, de nem biztos, hogy a kézi kiválasztásban megtalálod. Másik családban keresd! Fel kell ismerje a család kiválasztásakor a PIC-et. (Szerintem ez kicsit bénán sikerült nekik, én is jobban szeretem, ha a PIC nevét látom a kiválasztáskor!)
(#) Doncso válasza watt hozzászólására (») Jan 22, 2010 /
 
Oké, köszönöm, csak azért kérdeztem, mert jön át délután egy barátom, és megkért , hogy programozzam fel neki a 690-esét, és nem akartam beégni, hogy itt bénázok, közbe meg nem is lehet. Na de akkor ha minden rendbe, akkor fel kell hogy ismerje. Mondjuk jobban megnézve, a 628-as sincs benne a kézibe mégis felismeri.
Köszi a választ.
Következő: »»   646 / 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