Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   14 / 153
(#) watt válasza user hozzászólására (») Ápr 17, 2010 /
 
Szimulátorban nézd meg, hogy az 500ms az biztosan 500ms?
(#) user válasza watt hozzászólására (») Ápr 17, 2010 /
 
Igen a delay-ok jónak tűnnek,mert ha nagyobbra állítom pl.5másodpercre akkor kivárja és utána megy magasba a kimenet.
(#) icserny válasza user hozzászólására (») Ápr 17, 2010 /
 
Kapcsolási rajzot mutatnál? Hogy vannak bekötve a LED-ek?
(#) user válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Igazából a kapcsolást most a picsimulatoride program helyettesíti,de ezt kell elképzelni egy 877-essel 4mhz-es kvarccal.

névtelen.jpg
    
(#) watt válasza user hozzászólására (») Ápr 17, 2010 /
 
Nade először nincs is Delay, akkor mit vár ki? Pont fordítva kéne, 5sec után kéne elaludjon!
Próbáld meg While(1)-el inkább a for helyett!
(#) icserny válasza user hozzászólására (») Ápr 17, 2010 /
 
Jó, akkor ezt képzelem el. A HEX fájlt csatold már be. Ha van lista fájl, akkor azt is.
(#) icserny válasza vicsys hozzászólására (») Ápr 17, 2010 /
 
Idézet:
„nem hexa-ban kellene megadni a TRIS-t?”
A nulla az bármilyen számrendszerben nulla. De a nullától különböző értékeket sem kötelező hexadecimálisan megadni, csak többnyire áttekinthetőbbnek tartjuk.
(#) user válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Ez már while-al van.

void main()
{
TRISB = 0x00 ; // set PORTB as OUTPUT

while(1) // forever
{
PORTB = 0xff ; // turn all LEDs ON
Delay_ms(500) ; // wait 500 ms
PORTB = 0 ; // turn all LEDs OFF
Delay_ms(500) ; // wait 500 ms
}
}

hex.HEX
    
(#) icserny válasza user hozzászólására (») Ápr 17, 2010 /
 
Az általad küldött HEX tökéletesen működik MPLAB IDE alatt. Csak szimulációhoz nem érdemes ilyen hosszú időzítéseket használni, ahhoz 50-100 us (nem ms!) is bőven elég volna! Ha ahhoz az utasításhoz tettem a töréspontot, ahol nullába állítja vissza a B portot, akkor 500008 utasítás után állt le először, majd 1000000 utasításonként került oda ismét. Ezt írtad elő a programban is, tehát azt csinálja, amit kell.

Lehet, hogy csak türelmetlen voltál, és nem vártad ki az 500009. utasítást, ami nullába állítja a B portot?
(#) user válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Sajnos nem pedig frankón meg van írva.
Nekem úgy tűnik mintha,csak egyszer hajtaná végre a ciklust.Az összes kimenet állva maradt.

led.jpg
    
(#) user válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Igen már látom, nem vártam ki eleget.
De akkor hogy lehet elérni,hogy a simulátoron a valós 1 másodpercenkénti villogás legyen?
Pontosan erről a prg-ről lenne szó:pic.simulator.ide.6.73.
(#) icserny válasza user hozzászólására (») Ápr 17, 2010 /
 
Nem tudom, hogy mi ez a PIC Simulator IDE, de szerintem egyik szimulátornak sem célja, hogy az időzítést valósághűen jelenítse meg. Sokkal inkább az a cél, hogy a regiszterekben történő adatáramlás helyesen legyen szimulálva, a program utasításainak megfelelően, s hogy a folyamat megállítható, ellenőrizhető és szükség esetén felülbírálható (pl. valamelyik regiszter átírásával) legyen.
(#) user válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Igazad lehet.
Most egyébként ha a pic-ben próbáltam volna ki (nem pedig a szimulátorban), akkor 500ms-onként villogott volna?
Tehát,ha szimulátoron nézem akkor us-os tartomány,ha pic-be égetem akkor ms-os?
A mikroc a valós értékeket fordítja a pic számra?
(#) icserny válasza user hozzászólására (») Ápr 17, 2010 /
 
Nem 500 ms-onként villog, hanem 500 ms-onként vált állapotot (tehát 1000 ms után kerül azonos állapotba, magyarul másodpercenként villog).
Idézet:
„A mikroc a valós értékeket fordítja a pic számra?
Ha jól adod meg a PIC órajel generátorának afrekvenciáját, akkor kiszámolja, hogy a megadott késleltetéshez hány utasításciklust kell beiktatnia. Ha az órajel 4 MHz, akkor az utasításciklus 1 us, így a szimulátorban mért 500 000 utasításciklus valóban 500 ms-nak felel meg.
Idézet:
„Tehát,ha szimulátoron nézem akkor us-os tartomány”
Hacsak nem akarod, hogy kinőjön a szakállad, s teleírja a fél winchestert a nyomkövetési adatokkal, akkor igen, célszerű rövidre venni!

A PIC-be meg tizedmásodperces (100 ms nagyságrendű) késleltetések kellenek a LED villogtatásához, hogy a szemünkkel követni tudjuk a változásokat.
(#) watt válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Neked hogy fordult le? Nekem egy órát kellett szenvednem(mivel nem értek a HI-Tech C-hez) mire egyáltalán lefordult! Egy halom olyan dolog volt amibe belekötött a fordító!
(#) watt válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Ez nekem nem fordult le, csatoltam ami már igen...

villogo.c
    
(#) watt válasza user hozzászólására (») Ápr 17, 2010 /
 
Kicsit keveredés volt, mert azt hittem Te csatoltad a forrását a programodnak! Mindegy, nézd meg amit csatoltam annak működnie kell! (Feltéve, hogy Hi-Tech C-ben dolgoztál...)
(#) icserny válasza watt hozzászólására (») Ápr 17, 2010 /
 
Idézet:
„Azt hittem Te csatoltad a forrását a programodnak!”
Szerintem itt található a becsatolt HEX forrása, és úgy tudom, hogy MikroC-vel fordult, s az MPLAB szimulátora szerint működik az is.
(#) watt válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Simpi Hi-Tech C forrást csatolt(ami mellesleg lefordíthatatlan volt), user hex-et, én meg összekevertem, hogy ki mit csatolt.

user! Feltettem azt a hex-et, ami elvileg jól kéne működjön, legalább a kapcsolásodat letesztelheted.
(#) icserny hozzászólása Ápr 17, 2010 /
 
Csak ijesztgetésképpen: JAL nyelven meg így néz ki ugyanez a program.
  1. include 16f877                    -- target PICmicro
  2. pragma target clock 4_000_000     -- oscillator frequency
  3.  
  4. enable_digital_io()               -- disable analog I/O (if any)
  5. TRISB = 0
  6. forever loop
  7.    PORTB = 0xFF
  8.    _usec_delay(500000)
  9.    PORTB = 0
  10.    _usec_delay(500000)
  11. end loop
(#) potyo válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
A nyelv szintaktikája ugyanaz, de nem lehet egy az egyben átültetni. Ha viszont asm-ben meg tudsz oldani kisebb-nagyobb dolgokat, és ismered a C-t, akkor a kettőt már nem nehéz összeházasítani és kontrolleren használni.
(#) icserny válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Idézet:
„Mikrovezérlőnél tudom majd hasznosítani?”
Feltétlenül.
(#) Szárnyas válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Ha a könyv példáit szeretnéd kipróbálni, arra ott van az ingyenes Dev-Cpp fejlesztői környezet és fordító, ha jól emlékszem a könyv is ezt ajánlja.
(#) watt válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Ezt a forrásból másoltam ki:
  1. #ifdef HI_TECH_C
  2. #include <pic.h>
  3. #endif
(#) watt válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Jobban jársz, ha olyan nyelvet tanulsz meg, amit támogat a gyár, és sokan hasznáják. A Hi-Tech-C nagyon hasonló és jó user manualja van!
(#) icserny válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
Az előző becsatoláskor nem mellékelted az internals.h állományt, ami a Flowcode tartozéka lehet, azért nem fordult le.
(#) watt válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2010 /
 
- Itt - csatoltam azt a forrást, ami a tiedből lett. Van néhány dolog, ami más, mint amit a Flowcode gyártott. Ne is akarjuk, hogy egyforma legyen, csak legközelebb ha ilyen segítséget adsz, add meg az infót, hogy milyen fordítóval készítetted.
(#) kissi válasza icserny hozzászólására (») Ápr 17, 2010 /
 
Bocs, most kerültem gépközelbe és látom, mivel szenvedtél... Szimulációnál láthatod, hogy mennyi idő telt el ( a szimulátor alapján ,ha jól van beállítva az órajel sebessége ) és azt vedd alapul, ne a valós időt!

Steve
(#) user hozzászólása Ápr 18, 2010 /
 
Köszönöm mindenkinek a segítséget a tegnapi témában.
Most nézem ezt az lcd példát,de sajnos hasonló jelenséget produkál.Az eszköz mikroc-ben és a szimulátorban is egy 16f877 (4mhz xt).A kód le is fordul szépen,de szimulátor lcd-jén semmi nem jelenik meg.
Az látszik hogy a b portra küldki adatot,de a kijelző nem reagál.
Az időzítésekkel lehet a baj?

LCD.txt
    
(#) pipi válasza user hozzászólására (») Ápr 18, 2010 /
 
pont a lényeg nem látszik a programban, hogy mi van az lcd_init-ben. 4v.8bit .... szerintem itt lesz a kutya elásva, valahogy tuti lehet konfigurálni
Következő: »»   14 / 153
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