Fórum témák
» Több friss téma |
Persze, a 40MHz valóban nem állítható elő a belső oszcillátorral. De a 40MHz-es kvarc meg kívül esik a kvarcmeghajtó specifikációján, tehát külső oszcillátor kell neki, az meg nem túl olcsó. Hacsak valami nagyon extrém okból nem ragaszkodik a 40MHz-hez, akkor én inkább 32 vagy 48MHz-en járatnám egy sima 4MHz-es kvarccal.
Hogy soros vagy párhuzamos, az jó kérdés. De eddig még amit adtak a boltban, mindig jó volt a frekvencia. Most így fejből nem tudom, de gondolom az a jóval elterjedtebb, amire a PIC kvarcmeghajtója tervezve van.
Kicsit sikerült átírni, Proteusban hibátlanul működik (a futófényes program), kicsit leegyszerűsítettem hogy csak a PortB 0. bitjén villogjon a LED.
I/O portok írásánál a LATB regisztert használd a PORTB helyett! Az indoklás ezen az oldalon is megtalálható.
Annyira hű, de nagyon nem ragaszkodom a 40 Mhz-hez, a 48 is megfelel. A lényeg, hogy 40 Mhz körüli legyen a sebesség.
Idézet: „Annyira hű, de nagyon nem ragaszkodom a 40 Mhz-hez, a 48 is megfelel.” Az oszcillátor frekvenciája, a CPU órajelének frekvenciája és a USB SIE (soros illesztőegység) órajele az három, különböző dolog. Az oszcillátor frekvenciája 4 MHz egész számú többszöröse kell, hogy legyen, amit belül az előosztóval 4 MHz-re kell leosztani. Ebből csinál a PLL frekvenciatöbbszöröző 96 MHz-et, s ennek fele lesz az a 48 MHz-es jel, ami USB 2.0 használata esetén a SIE számára kötelező (tekintsünk most el attól a (per)verziótól, hogy külső oszcillátor adja a 48 MHz-es jelet!). A CPU órajele lehet ettől független is, de különleges igényektől eltekintve (pl. kis fogyasztás, gyors elindulás) sok értelme nincs, tehát legegyszerűbb, ha a CPU is a 96 MHz-es PLL kettővelleosztott jelét kapja. Ekkor Fosc = 48 MHz, az utasítésfrekvencia pedig ennek negyede, azaz Fcy = 12 MHz, vagy másképpen: másodpercenként 12 millió utasításciklus. A legáltalánosabban használt 20 MHz-es kvarccal az órajelkonfigurációja így néz ki:
4 MHz-es kvarc esetén PLLDIV = 1 és FOSC = XTPLL_XT kell. Csak érdekességképpen: elvileg 40 MHz-es kvarchoz is be lehet konfigurálni a PIC18Fx550 mikrovezérlőket, de nincs rá gyártói garancia, hogy ezen a frekvencián még üzembiztosan működik az oszcillátor. Bővebben: Link
Tehát e helyett a rész helyett:
Idézet: „ MOVLW B'00000001' ;Betöltjük a W-be (akkumulátorba) a kirandó adatot MOVWF PORTB ;Akkumulátorból kiírjuk a PORTB-re CALL DELAY ;Várunk MOVLW B'00000000' ;Újra betöltjük a W-be az új adatot MOVWF PORTB ;stbstb. CALL DELAY” ez megfelelőbb: BSF LATB, 7 CALL DELAY CLRF LATB CALL DELAY Illetve a CLRF utasítással közvetlenül lehet I/O port (itt LATB) regiszeterét is törölni?
A CLRF minden regiszterre egyformán használható, így a LATB-re is.
Bitmanipuláció: BSF LATB,7 nem RB0-át fogja 1-be állítani, hanem RB7-et, így az általad megadott kódot BSF LATB,0 helyettesíti. A bit törlésére a BCF utasítás is használható. De mégegyszerűbb így:
Igen, a "LATB, 7"-et elnéztem...
A BTG utasítás mit csinál?
Így már tiszta... Köszi a részletes leírást!
Idézet: „A BTG utasítás mit csinál?” Ezt szépen leírja az adatlap, a PIC 18C MCU Family Reference Manual (DS39500) és nem utolsósorban én is leírtam már a PICCOLO projekt idevágó fejezetében. Ne légy lusta olvasni!
Szia!
DDS jelgenerátor egy 18F242/18F252-n alapul (évekkel ezelőtt terveztem, akkor még nem volt dsPIC) 1/16Hz - 500kHz -ig 1/16Hz lépéssel, USB illesztéssel. Mivel a jel generálása és az USB külön - külön is leviszi egy kontroller kapacitását, valamint a galvanikus leválasztás miatt, két kontroller van benne - az USB-t egy 18F2550 kezeli. Közöttük egy 100Kbit/s optocsatolt soros vonal van. HID eszközként kezelhető. 18F242-vel 55, 18F252-vel 119 féle jelalak, köztük letölthető is. Szia.
A NOP parancs is négy órajel periódusig tart? Tehát egy 4MHz-es kristállyal 1x10-6másodperc?
Igen.
4 órajel-ciklus, másképp írva 1 gépi ciklus.
Szia!
Nagyon felcsigáztál! Valami ilyesmin gondolkodom én is, de egyenlőre tök kuka vagyok a pic programozásához. Még csak most kezdem. Bár a generátor részt analóg ic-vel gondoltam megcsinálni, és azt vezérelném egy 18F4550-nel. A tied sokkal jobb, főleg a letölthető jelalakok miatt. Elkunyerálhatnám a kapcsolási rajzot és a programokat? Elsősorban a sweep megoldása izgat, egy a hangfrekvenciás sávot egyben átfogó frekvenciával.
Sziasztok!
Sikerült hozzájutnom egy PIC16F877A-I/P jelű mikrokontrollerhez. De teljesen kezdő vagyok a témában...Tudnátok ehhez egy működő felprogramozó kapcsolást ajánlani?
Keress rá a pickit2-re. A szilva féle változat az egyik kedvencem.
Néztem de a PICkit 2 nél csak 14 lábat számoltam oldalanként, az én PIC emnek viszont 20 lába van oldalanként.
Tehát csak néztél, de utánaolvasni semminek sem próbáltál magadtól, hanem várod a sült galambot...
Szia!
- Annyira nem szép a helyzet, amint ahogy látszik... A parancsok vétele illetve a beállítások módosítása (a frekvencia léptetése) alatt a jelgenerálás szünetel, így a sweep csak kicsi sebességgel megy... (Nagy prioritású timer IT növeli a növekményt...) - A kapcsolási rajz sajnos nincs meg elektronikusan... A megadott oldalon levőt dolgoztam át pic18F242/252-re. Az erősítés szabályzó 4 bites D/A helyett PWM kimenetet használtam fel. A kapcsolást kiegészítettem (a második PWM kimenettel) állítható DC offszet lehetőséggel. A soros illesztés (2 db tranzisztor) helyett az optocsatolt USB került... Szia
Amiből csak 5db-ot fogsz bekötni a programozáskor. A maradék 35 lábat majd másra fogod használni...
![]() Szilva féle pickit2 klón Ezt pedig olvasd végig (mind a 3 részt!) Bővebben: Link
Köszi
![]()
Szia!
Amint sikerül a konyharegenerálás, megpróbálok nekiugrani, de 18F4550-re gondoltam megoldani. Ha el tudnád küldeni a programjait, nagyon szépen megköszönném, mert a programozáshoz még kezdő vagyok, és lenne miből kiindulni. A sweepnek amúgy is alacsony sebességen kéne mennie erősítő mérésénél, mert különben plusz torzításokat hozhat magával. Az USB kapcsolat megoldása amúgy is nagyon fontos lenne számomra, mert tervbe van véve egy digitális tároló megoldás analóg szkóphoz. Van neki az egyes csatornától egy egyvoltos kimenete, amiről a jelet rögzítené, és a kettesen lehetne visszanézni. Ha pc-re is át tudnám vinni a jelalakot az maga a pompa. Köszönöm a képet!
Helo
Meg tudná mondani valaki, hogy ez miért a második karakter pozícióba írja ki az 'S't az első helyett? RB1-E , RB3 -RS , Data -RD LATD=0b00001100; Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop();Nop(); Nop(); LATB=0b00000010; Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop();Nop(); Nop(); LATB=0b00000000; Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop();Nop(); Nop(); LATD=0b01010011; Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop(); LATB=0b00001010; Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop(); LATB=0b00001000; Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop(); Nop(); Nop();Nop(); Nop();Nop(); Nop();
Helo
Előre is elnézést, hogy még mindig ezzel az LCDvel zavarkodok. Xlcd-vel szeretnék írni a kijelzőre. A portokat sikerült átírnom az általam használtra, de a kiküldött karaktersornak csak az első karaktere látszik folyamatosan, a többi csak bevillan itt-ott. Meg tudná mondani valaki, hogy hol keressem a hibát? #include "p18cxxx.h" #include "delays.h" #include "xlcd.h" #pragma config LVP = OFF #pragma config WDT = OFF #pragma config XINST = OFF #pragma config OSC = XT void DelayFor18TCY( void ) { Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); } void DelayPORXLCD( void ) { Delay1KTCYx(15); //Delay of 15ms return; } void DelayXLCD( void ) { Delay1KTCYx(5); //Delay of 5ms return; } void main( void ) { ADCON1 = 0x0F; OpenXLCD( FOUR_BIT & LINES_5X7 ); putrsXLCD("abcdefgh"); }
Hali
Probalj meg varni a kuldesek kozott 200-500 mS-t. Udv Vili
A főprogramba kellene egy végtelen ciklus!
|
Bejelentkezés
Hirdetés |