Fórum témák
» Több friss téma |
Nem boldogulok vele ez(ek) az.Az a baj nem tudom mennyire kellene pontosan időzíteni ,egyik másik leírásban eltér a dolog
(a harmadikat méretkorlát miatt nem tudom feltölteni)
Mindkét doksi egyformán (jól) írja le a kommunikációt, már ami a bitsorrendet illeti, ami megegyezik az SPI bitsorrendjével(először a bit0(D0)). Nincs fordítva a példa 9Ch-sem. bit0->0011 1001<-bit7 megérkezve ez lesz 10011100, azaz 9Ch.
Tehát ennek működnie kell sima SPI hardverrel. Persze be kell tartani a jelzett időket a Reset és a CS vezérlésénél az órajel, azaz az adat elküldése előtt. Ezek az idők is fel vannak tüntetve a 3vezetékes kommunikáció rajzánál.
Na ezen én is túl vagyok ,köszi.Nem megy.Bíztam benne ,hogy menni kell ,5 napja ezzel szívok.
Nem megy.Mindent beállítottam ,mármint amit lehet.Nem lehet pl. az adatküldés órajelét. Meg azt sem tudom állítani ,hogy adatküldés magasból induljon A hozzászólás módosítva: Máj 17, 2013
Mit tudok tenni ezzel a SPI dologgal ?Hogy lehet magasból indítani az adatokat tudod esetleg ?
A hang IC-d alacsonyat vár először, ezért nem hiszem, hogy ez a baj. Igazából nem tudom mi lehet a gond, mert ennek mennie kéne. Sajnos nem néztem bele a Flow-ba annyira, hogy tudnám mit művel belül(a C kódban sem látszik hogyan küldi el valójában az adatot az SPI-re, valami vezérlő lábakkal is kínlódik, amit definiálni kell és nem tudni esetleg itt nem kutyul-e el valamit). Ilyenkor van az, hogy nem tudod a fejlesztő környezet, az elektronikád, vagy a céleszköz hibás-e. Sajnos nincs annyi időm, és valószínűleg elegendő adatom se, hogy ezt kiderítsem. Kéne egy valódi szkóp, amivel az SPI-t tudnád tesztelni, hogy kijön-e rajta bármi és az hogyan. Esetleg két PIC-et összekötni, és így tesztelni. Nagyon sok a lehetőség, valamelyiken el kellene indulni lépésenként!
A hozzászólás módosítva: Máj 18, 2013
Van szkóp ,néztem is az adatokat ,kijönnek.Ami a baj ,hogy a SPI clock 10-20us és nekem ez túl gyors ,ezt kéne lassítani ,de nem tudom hogyan .
Azt nem próbáltad, hogy a Flowcode-ban pl. 8 MHz-et adsz meg, miközben 4 MHz-ről járatod?
Az a szkóp hülyeségeket mutatott, azon a képen, amit feltettél!
Az SPI-nek nem a flowcode időzíti az órajelét, csak beállítja az SPI tulajdonságoknál mi legyen(ezért tök mindegy milyen órajelet állítasz be)! Be lehet állítani az SSPxCON1, SSPM3:SSPM0 bitekkel , hogy a Timer2/2 legyen az SPI órajele! A Flow ezt nem támogatja, ahogy látom, ezért C blokkban kellene bekonfigolni ezeket a biteket a megfelelő helyen a programban(C forrásban kell megnézni, hogy a fordító által beállított regiszterek után kerüljön sor a felülírásra. Valószínű ez nem okoz gondot, mert amit a folyamatra írsz, az utána történik, de le kell ellenőrizni). A hozzászólás módosítva: Máj 18, 2013
Az a baj fogalmam sincs a C kódhoz
Itt egy kép a szkópról ~20us a CLK és és 01010101 (85) az adat. A hozzászólás módosítva: Máj 18, 2013
Ez jó. (55)
Ki kellene próbálni a Timer2-t SPI frekiforrásnak...
Hidd el azon vagyok ,de nem tudom hogy kell.
Mi 55 ? 64+16+4+1 = 85 A hozzászólás módosítva: Máj 18, 2013
Úgy néz ki sikerült !
Legalábbis a timer2 vel a SPI CLK. Köszönöm !
55h=85dec. Általában nem decimális számokban beszélünk, ha bináris számokat digitális átvitelnél említünk. De végül is ez nem olyan fontos, csak félreérhető volt...
Az jó hír, hogy sikerült, gondolom feltöltötted az SSPxCON1-et a megfelelő értékkel az adatlap alapján? A hozzászólás módosítva: Máj 18, 2013
Értem ,köszi !
Na mindegy ,még mindig nem jó .Van benne 7 db wav 0-6 címen.Csak az elsőt hajlandó lejátszani ,de azt sem stabilan ,tehát nem mindig. Most már a 16us helyett a képen láthatóan alakul a CLK. Valamit még mindig nem jól csinálok Idézet: „Az jó hír, hogy sikerült, gondolom feltöltötted az SSPxCON1-et a megfelelő értékkel az adatlap alapján?” Valami hasonló. Akármit küldök ki (1;2;3 csak a 0-t játsza és az is rapszodikusan . A hozzászólás módosítva: Máj 18, 2013
A szkóp alapján a jelek rendben vannak egymáshoz képest(felfutó órajelnél adódik át a bitadat). Nem igazán tudom értelmezni az idő adatokat. Mi 200usec, egy osztás, vagy a teljes képernyő(gondolom ez utóbbi)? Milyen a freki most? Mit mond az adatlap mekkora freki kellene? Milyen hosszú és milyen vezetékek kötik össze a PIC-et az IC-vel? Min van felépítve most az áramkör?
A hozzászólás módosítva: Máj 18, 2013
Egy kocka 200us ,sajnos timer2 -vel ez a legmagasabb,de elméletileg azt írja az adatlap hogy a CLK 40us és 2ms között jó.A freki most ~250us/teljes órajel.A kék az órajel , a sárga az adat és "1" -et küldök.Vezeték hossz ~5-6cm.
A hozzászólás módosítva: Máj 18, 2013
Elvileg működnie kéne. Az már teljesen off lenne itt, hogy az áramköri felépítésedet boncolgassuk, de szerintem ott lesz a baj. Jó hibakeresést!
Simpi,
Kösz a segítséget LCD ügyben. Müködik. Ennek örömére átalakítottam a vezérlését. Csak a változó szövegrészeket tölti újra, a statikus feliratok csk egyszer futnak le és íródnak ki. A PWM segítséget is kösz. Bár a beépített helyett külön kellett összerakni, de most gombal állítható a fényerő, és az LCDn vonalskála jelzi. Már csak az i2c kommunikációra lennék kínáncsi flow alatt hogy működik.
Sziasztok!Most ismerkedem a flowcode-al és szeretnék építeni egy fordulatszámmérőt 16f84a-ra.Nagyjából megvan a program de van két problémám vele.1.Nemtudom hogyan kell pontosan belőni a timert,kerestem de sajnos ne világos,most nagyjából kipróbálgattam ezzel a módszerrel de nem 100%os.A másik a fordulatszám számláló az életben mindig 2550 et ír és nem mozdul onnan.Hálás lennék ha valaki ránézne és segítséget nyújtana.Előre is köszönöm!Minden segítségért hálás vagyok.
Nézz szét 2011 év elejétől kezdődően ebben a topicban. Komplett megoldások vannak. Azokból tudsz ötletet meríteni. Több féke mérési mód van. Azt is el kell dönteni melyik jó neked.
Rendben,értelek és szét is néztem!Láttam az rpm progikat,e én azt szeretném ha valaki az én programom módosítani "jóra" mert abból értenék igaznán.Nem vagyok lusta visszaolvastam szinte az elejéig a fórumot!Előre is köszi!
Sziasztok! Tudnátok segíteni egy picit? Írtam egy egyszerűbb programocskát, analóg változásra kapcsoljon egy-egy bitet. Kapcsolását tekintve arról van szó, hogy egy pic16f88-as mikrokontroller 3 analóg portjára rákötöttem ugyanannyi fototranzisztort (0-5V) és ezen adatok figyelésével kapcsoljon két lábat, azokon 1-1 5Vos relét. Problémám ott kezdődne, hogy a jel feszültség szépen megjelenik a lábakon, viszont válasz jelet nem ad egyik lábon se. Esetleg kellene egy felhúzó ellenállás is sorba a fototranzisztor és a pic lába közé? A programot csatolom, ott szimulációban tökéletesen működik.
Szia én is tanulgatom a progit de több hibát is láttam. Nem kell bemenetnek megadni majd feszültséget külön olvasni egy adott lábon, a feszültségolvasás lebegöpontos mint ahogy az ki is van irva hogy FLOAT igy a változodat is lebegöbontosnak kell beállitani. A másik hogy én nem szivesen terhelem a kimenetet egy relével, inkább tranzisztoros megoldás amit javallanék.
Kapcsolásokat különben a PIC kezdöknek topikban találsz, és ott elég sok minden le is van irva hogy mit hogyan. Üdv Kovács
Inkább rávezetlek... megpróbálom... (Néztem a programod(most hogy nem telefonon vagyok), csak kicsit kusza nekem)
A fordulat szám, nem más mint adott idő alatt megtett fordulatok száma. Si jele 1/m Vagyis 1 perc alatt mennyit fordul körbe az adott dolog. Mint látom RB0 porton nézed a bejövő jeleket. Akkor te inkább frekvenciát mérsz. (Csak mert Pjg, és Watt nem régiben kommunikálta a periódus idő mérést, és ha jól tudom az alapján mértek fordulatszámot, de az kezdőnek nehéz.. szerintem) Visszatérve ha te tudod hány "fogú" a jeladó kerék, vagyis 1 fordulat alatt mennyi jel jön be, akkor neked nem a bejövő jelek idejét, hanem adott idő alatt bejövő jelek számát kellene számolnod. (Ehhez meg ott a példatárban flowcode könyvtárban, a frekvencia mérés.) Ha jól sejtem a programod alapján, te akkor akarsz kiíratni fordulatszámot amikor bejött a 10db jel. Ezzel az a baj, hogy amilyen gyorsan forog olyan gyorsan akar frissíteni. Ha forog valami 6000 1/m akkor 6000 szer akar frissíteni percenként, ha forog 10et akkor 10 szer. Az LCD erre képtelen... 100ms esetén is már olyan gyorsan számlál és változik, hogy olvashatatlan az utolsó számjegyek.. egyesek, tizesek. Ehelyett, használj fix idő alapot. 50-100ms ot. És számold meg mennyi jel jön be az alatt. Abból már könnyen számolható a fordulatszám. (nagyon egyszerű, és alapként, ha nem kell halál pontos érték, hamar összerakható) Ha vissza nézted, egyik hozzászólásban, ott a képlet is hozzá. Tmer beállításnál láttam 15Hz-et. Nem kevés. A timer megszakításba másodpercenként 15ször fog kilépni és lefutni a hozzá rendelt műveletsor(amit a makróba tettél) Vagyis ha 250 ig számoltatsz benne akkor 250/15=16.666s ig számol miután az "ms" változónak ad 1 értéket. Amivel elosztod a 60at és megszorzod 10el, mondván ez a fordulatszám. De ezt akkor mikor bejött a 10db jeled. Gondold újra. 16 másodpercig számol, ez közben forog a "tengely" és 10 jelenként kiírja az értéket, de nem tudja mert ha 1000 fordulattal forog valami, akkor nem keveset fordul 16 másodperc alatt, és te 10 jelenként nullázod az értékét. Másik hiba, hogy a timer megszakítás meghív egy ido makrót, amiben számolsz, és ugyan ezt a makróban lévő számítást a főprogram ciklusa is meghívja. Vagyis akkor is lefut a program amikor a ciklus pörög és akkor is amikor kliép a megszakításba.
Ez nagyon korrekt válasz volt!Köszönöm,sokat segítettél vele,de sajnos nem működik nálam a program.A saját programomban azért számoltam el 250 ig mert a valóságban nem egy másodpercig számol,hanem sokkal gyorsabban,illetve amit írtál programot ott nem figyeli a bportot nálam.Valószínű én rontok el valamit de csak úgy figyeli a beteszem ciklusba és újra meghívom.
Köszi.Mindjárt próbálom!
|
Bejelentkezés
Hirdetés |