Fórum témák
» Több friss téma |
Idézet: „Watt kollégánk párhuzamos port alapú PIC programozóját építettem meg, ha visszanézed a hsz-okat.” Rendben, csak programozo helyett valami meghajtot emlegettel A tobbit mar watt megvalaszolta, ill. en is reagaltam.
Lehet, hogy a proteus nem figyeli a konfig biteket, csak a programot értelmezi. Ha nem jól kerül a hex-be a konfig, akkor nem fog jól működni. Ezért kéne egy összehasonlítás a te és az én általam fordított hex között! Megaztán, ha én betöltöm azt amivel próbálkozol és nem megy, akkor egyértelmű, hogy jók a PIC-ek!
Megnéztem, az új leíró bázissal, ami letölthető a gyártó oldaláról, kezeli a saját programjával a PICKit2 is a PIC-et.
Amit Te küldtél c-fájlt, azt nekem le se fordítja, mert kidob egy csomó hibát (nem ismeri az unprotectet...stb.). Az a baja, hogy nem látja a PIC h-fájlját, amit akkoriban szintén mellékeltél. Orvosolható a probléma, ha beírom az első include után, hogy
Egyelőre annyi, hogy a két fájl(c is, hex is) amit küldtél egyforma, függetlenül melyik h-val fordítod, ami egyébként normális, miután ezt várja el az ember egy adott programtól, hogy a fordító azonos kódot generáljon. A h-ban is ugyanazok a kódok vannak, csak más elnevezéshez rendelve.
Délután beégetem, szerintem nálam működni fog.
Hát igen, azonos c fájlhoz eltérő h fájlok esetén is ugyanazt a kódot várjuk a fordítótól, ez jogos Várom a fejleményeket!
Szia!
Betöltöttem a hex-edet a PIC-be, működik...
Akkor ezek szerint a PIC-eimmel van a baj... lehet, tényleg ártott nekik, hogy a rosszul megépített LPT kábel miatt tönkrementek. Ami viszont szerintem azért érdekes, mert ma már védik az IC-ket az esetleges túlfeszültségtől. Bár az is lehet, hogy valamelyik lábon túl nagy áramot kaptak. Tegnap is sikerült tönkretennem egy feszültség- és áramstabilizátor IC-t (rövidrezártam véletlenül a kimenetét), és forró lett mint az állat, meg is égette az ujjam, úgy felforrósodott.
Na mindegy, szerintem szerzek ilyen PIC-et, aztán megpróbálom újra. Köszi a segítséget, watt!
Nem lehet minden hülyeségre felkészíteni az áramköröket. Az ellen nem lehet megvédeni, ha nagyobb feszültséget kap a tápján vagy valamelyik bemenetén. Statikus töltéstől lehet valamennyire védeni, de ha valahonnan folyamatos táp van, azzal nemnagyon lehet mit kezdeni.
Az ilyen 7805 típusú stabilizátorokat a kimenet rövidrezárásával nagyon ritkán lehet tönkretenni. Miután lehűlik, ezek működni szoktak tovább.
Nem is 7805 típusú volt, hanem a jó öreg L200-as Szörnyű régi adatlapja van, némelyik ábra nehezen értelmezhető, mert nincs semmi leírás a kapcsoláshoz (méretezés). És akkor a lábak fizikai elhelyezkedéséről ne is beszéljünk... De amúgy elég jó dolgokat lehet csinálni vele.
Szia!
Mi a problémád vele? Első oldalon írják, hogy "SHORT CIRCUIT PROTECTION" --> rövidzár védett és az 1.ábrán láttam a méretezési képleteket is ( rövidzárási áramra és a kimeneti feszültségre is ! ) az általad belinkelt adatlapban ?! Steve
Bocsi, összetévesztettem egy másikkal, az L200-as adatlapjában tényleg vannak méretezési képletek (azt hiszem, valamelyik LMxxx adatlapjában voltak ilyen jellegű hiányosságok). Látom, hogy az L200-as rövidzárvédett, de nekem rohadtul megdöglött, 0V volt állandóan a kimenetén (jól volt minden beforrasztva, ilyen probléma nem lehetett, bemértem a panelt), és kibaszottul forró volt.
Kicseréltem egy másikra, ez már működik, de ha bekapcsol az áramkorlát, még mindig rohadtul felforrósodik, pedig tettem rá egy kicsi TO-220 hűtőbordát. Nagyobb terhelésre (amikor nem kapcsol be az áramkorlát) is meleg egy kicsit. Lehet kicserélem egy nagyobbra a hűtőbordát, hátha segít rajta.
Sziasztok!
Hogyan tudok egyidejüleg két programszálat futtatni? nyelv: HI-TECH C
Vannak ezek az RTOS-ek, azoknál nézz körül. De ehhez legalább 18F kellene szerintem.
Egyébként miért van szükség két szálra?
Idézet: „Hogyan tudok egyidejüleg két programszálat futtatni?” Ha tudnál, akkor nem kérdeznéd... Bonyolult dolog ez, s az optimális megoldás függ attól, hogy mi ez a két szál,milyen viszonyban vannak, s milyen erőforrás igényük van. Megoldásként számbajöhet egy állapotgép, az interupt/főprogram szint kreatív alkalmazása, korutinok, kooperatív RTOS, preemptív RTOS, stb. Ha bele akarsz csapni a lecsó közepébe, akkor: - Tiny threads - OSA RTOS
Az egyértelmű, hogy egyszerre két szál nem futhat, csak felváltva, kvázi multiplexelve, más néven időosztásban. Ez egy PIC esetében nagyon erőforrás pazarló(mindegyiknél, csak a PIC-nek kevés van eleve), ha nem muszáj, nem kell erőltetni. Ha muszáj, nem PIC-et kell választani, vagy ha PIC, akkor nagy(32).
De nem hiszem, hogy szükség lenne egyidőben két szálra, pontosabban meg lehet úgy oldani, hogy úgy tűnjön, hiszen egyébként is csak úgy tűnik...
Meg annyi kiegeszitest az elottem szolokhoz ha szabad, hogy igazandibol a gondolkodasmod az amiben kulonbozik egy RTOS hasznalata a hagyomanyos allapot gepes es megszakitasos modszerektol. Magyaran ugy gondolsz a szalakra vagy feladatokra, hogy azok parhuzamosan hajtodnak vegre noha fizikailag nem igy tortenik -- igy viszont konyebb elkepzelni a folyamatokat. Amugy ha bele gondolsz a PC-k is ugyanezt teszik, kiveve ha tobb processzoros vagy tobb magos CPU-d van...
Van meg egy lenyeges szempont is, hogy az RTOS egy csomo terhet levesz a valladrol, segit szinkronizalni es utemezni feladatokat ill a kommunikaciot a feladatok kozott. Szoval nem rossz dolgok ezek, de ahogy watt mester is emlitette sok eroforrast elvesz a hasznos programod elol.
Sziasztok!
C30 -ban hogyan tudom egy változó bitjeit elnevezni, és később hivatkozni rájuk? A p30F6012A.h -ban néztem hogy SFR esetén hogyan csinálják, de nem megy.
esetleg
Uhhh.. köszönöm..
De még mindig nem jó valami: error: syntax error before '.' token
Ez egy tipus definicio, nem csinaltal belole valtozot... Kellene valami hasonlo:
Kicsit részletesebben kérhetném? Próbálom assembly után megérteni a C-t, de még nagyon nem állt össze a kép..
Esetleg nezz szet a konyvespolcon. Talasz irodalmat, mintapeldakat PIC-re es C nyelvre.
A 'typedef' az tipust definial (Type Definition -- Tipus Definicio). Tehat mikor azt csinalod, hogy:
Akkor csak egy tipusod keletkezik, valtozod nem. Tipusnak pedig nem lehet erteket adni, igy kell valtozot csinalnod belole, pl:
De csinalhatod maskepp is, nem csinalsz tipust a strukturabol:
Es ekkor van egy 'enValtozom' nevu valtozod, de nincs tipusod, tehat ha meg egy ugyanolyan tipusu / szerkezetu valtozot szeretnel, akkor gondban vagy... Ezert lehet nevet adni a strukturanak:
Ami hasonlit a tipus dekaraciohoz, tehat abbol meg valtozot kell csinalni:
De tenyleg a konyv atolvasasa jo otlet.
Köszi a segítséget, nehezen, de megérettem..
Üdv!
Először is azzal kezdeném, hogy teljesen kezdő vagyok e téren. Most nem rég kezdtem el olvasgatni a pic-ek életéről. Remélem jó helyre írok. Van a pic kezdőknek topik is de ott ahogy láttam több az assambly-s probléma. A problémám az, hogy szerettem volna egy programot írni ami véletlenszerűen számokat generál. Először nekifutottam az ugyancsak nem épp dús C tudásommal és megírtam úgy mint: Idézet: „randomize; x=random(szám);” Ezt persze a CCS nem ismerte fel és következett az error. Ekkor módosítottam a parancsot a következőre. Idézet: „srand(szám); x=rand();” Ezt a CCS elfogadta és beírta a PIC-be de nem generálja le a kért számokat. Hogyan lehetne lefuttatni másképp és lekövetni a program működését illetve elakadását?
Szia!
A rand() fuggveny (nem parancs!) egy un pseudo-veletlen szamgenerator. Azaz nem igazi veletlen szamokat negeral, hanem egy jo elore meghatarozhato, veletlennek tuno szamsorozatot produkal neked. Ez a szamsorozat fugg az un. 'seed' -tol, amit az srand() fuggvennyel adsz meg. Azonos seed eseteben ugyanazt a szamsorozatot fogja neked adni -- azaz ha mindig ugyanazt a szamot teszed bele az srand() parameterebe kozvetlenul a rand() hivasa elott akkor mindig ugyanazt a szamot fogod eredmenyul kapni...
Szia!
Akkor hogyan lehet véletlenszerű számot generálni amivel később dolgozhatok? Pont mint a C parancs amit először írtam be.
Igazi veletlen szamot nehez generalni, de pl ha van user interface akkor mikor a user megnyomja a gombot az eppen a szabadon futo timerben levo szamot lehet az srand-nak atadni. Egyenlore csak ugy csinaldd, hogy az srand() -ot egyetlen egyszer hivod meg az inicializalaskor, es nezdd meg tetszik-e az neked.
Mivel kezdő vagyok ezért leírom mit szeretnék. Persze tudom, hogy véletlen szám nem létezik de mert megadott algoritmus alapján jön létre minden. Nekem az kéne történjen dióhéjban a programban, hogy X idő után visszatér a program és generál magának egy új számot amit majd én felhasználok. A program lefutásának ideje konstans maradna de mindig amikor visszatérne egy új értékért akkor generálódjon egy új szám. Persze a szám intervallumot is szeretném megadni.
Pont mint C-ben. pl.: randomize; random(10); és nekem generálna egy számot 1-től 10-ig.
Még lenne egy sokkal egyszerűbb kérdésem is amin fenn akadtam.
Idézet: „while(1){ if (n==0) output_high(PIN_A1); if (n==1) output_high(PIN_A0); if (n==2) output_high(PIN_A7); if (n==3) output_high(PIN_A6); .... delay_ms(500); n++; }” Na ez meg mi a fenéért nem működik? Az elvárásom az lett volna, hogy lábakat sorra mind tápfeszültségre emelem. Erre fel az első if-be mindig bemegy és végrehajtja. Nem tudom miért van ez. Az "n" nem növekszik? Miért nem ha ez a baj. Csak ez lehet a baj mert ha nőne akkor az első if-be nem menne be. |
Bejelentkezés
Hirdetés |