Fórum témák
» Több friss téma |
Sziasztok!
Az lenne a kérdésem hogy lehetne a TIMERT-t megszakitani egy másik bementtel, pl. KAPCSOLO. Megnyomom a gombot, elindul a timer, ledre ugrik. Ha timer közben a kapcsolot megnyomom/kapcsolom, visszaugorjon a gomb figyelésére. Nem tudom mennyire értehetö a megfogalmazásom. BTFSC GOMB CALL TIMER BRA LED TIMER movlw .96 movwf T10 movlw 0x00 movwf TMR1H movlw 0x00 movwf TMR1L BSF TMR1_START
Köszi! Igazából a W-reg mentése volt rossz a megszakításban.
Sziasztok, lenne egy kerdesem.
Gondoltam elkezdek pic-et tanulni, es beirtam egy peldaprogit a kpen lathato modon. Kesobb annyit sikerult elernem, hogy elismerte az egyik fajtat movlw vagy a mov wf et de a masikat hibas szinnel jelezte mindel igy tett. Mi lehet a hiba? Mindent beallitottam amirol tudok.
Szerintem az lehet a hiba hogy a parancsot és a paramétert nem tabulátorral hanem szóközzel választottad el.
Koszi.
Hmm.. az lehet ha lesz turelmem es idom tabolva is megirom. Mas finomsag amit muszaly tudni de nem latszik ha nm jol csinalom?
Az 1. oszlop a címke helye, a parancs a 2. bekezdéstől jöhet. Tegyél a parancsok elé egy tabot! (De a címkék elé ne!)
"Nem tudom mennyire értehetö a megfogalmazásom."
Nem nagyon. Mit is szeretnél megvalósítani?
A timer lefutását megszakitani az idözités alatt egy másik bemenettel (KAPCSOLO), és visszaugorjon a figyelés a gombra.
Ugyanazt leírtad, mint korábban. Ha az ember meg tudja (tudná) korrektül fogalmazni a feladatot, akkor félig már meg is van (lenne) oldva a dolog!
Jó, akkor megpróbálom én kitalálni hogy mit is szeretnél. Tehát: - ha megnyomsz egy gombot, egy LED világítani kezd, és elindul egy számláló - ha a számláló lejár elalszik a LED, és kezdődik minden elölről - ha számlálás közben megnyomsz egy másik gombot akkor is elalszik a LED, és kezdődik minden elölről Ha mégsem ez a feladat, akkor légyszi írd le, de korrektül!
Ahogy Te megfogalmaztad teljesen jo. A lényeg hogy a számlálot bármikor le lehessen állitani
Vázolom a menetét (ciklikus mód):
1.) Gomb1 megnyomva és LED nem világít ? -> LED bekapcsol, időzítő beállít és indít 2.) Gomb2 megnyomva és LED világít ? -> LED kikapcsol, időzítő leállít 3.) Időzítő lejárt ? -> LED kikapcsol, időzítő leállít 4.) Vissza az 1. sorra
Sziasztok.
Lenne egy pici problémám amire nem jövök rá hogy a fordító hibája vagy az enyém, konkrétan c-ben írtam egy kis rendőr lámpa vezérlő programot, de a hexet nem futtatja az oshon szimulátora(konkrétabban csak a B0 és B4 kimenetre ad jelet onnan nemlép tovább felteszem a hexet-is.
köszönöm a segítséget
Gomb1-re ezt gondoltam, a gomb 2-re még semmi ötletem.
GOMB1 BTFSC GOMB ;gomb megnyom led nem világit. BSF LED CALL TIMER ;idözités indul BCF LED BRA GOMB1 TIMER movlw .96 movwf T10 movlw 0x00 movwf TMR1H movlw 0x00 movwf TMR1L BSF TMR1_STAR
Bocs, de ez nem program, hanem egy zagyvaság. Eleve az utasítások használatával nem vagy tisztában.
Megírtam PIC16F628A-ra az én elgondolásomat; ez kiindulásnak jó.
Kapkodok. A 12. és 13. sorban PORTB-t akartam írni.
Mellékelem a (remélem) jó kódot. (A gombok alaphelyzetben magas állapotúak, megnyomva testre zárnak. PortB-n lehet használni a beépített felhúzóellenállásokat. A LED aktív magas.)
Bizony a C nem arra lett kitalálva, hogy attól legyen gyorsabb egy program. Viszont a kód alkalmazás szintű részei cpu verzió függetlenül hordozhatóak lesznek akár arm-ra is, és az azért nem kicsike előny. Ami meg a teljesítmény veszteséget illeti, nos, azért kell egy teljesítmény erősebb pic. Persze ez relatív, függvénye az elvárásoknak. Egy led villogtatáshoz pld bármilyen vacak kicsi pic megteszi a belső gagyi generátorával. LCD vezérléshez már nem biztos, hogy bármi elég lesz az épelméjű sebesség peremfeltételével. Végső soron a kényelem mindig is pénzbe fog kerülni. Ez ellen ugyan hiába hadakozol..
Köszönöm, valami lehet még vele, mert beégetve nem indul el, 4mhz külsö quarz, bemenetek felhuzva, 4.2V táp.
Probáltam a PIC Simulator IDE-vel, ott csak villog az RB2, bemenetekre reagál, de ha jol látom nem gomb nyomásra indul.
Itt vegulis nem errol van szo, hanem hogy egy kezdo, nulla elektronikai es programozasi ismeretekkel rendelkezo versenyzo hogyan kezdjen el megmartozni a uC vilagaban. Erre szoktam mondani, hogy egy 12F6xx szintu PIC + ASM az ajanlatos kezdo keszlet. Olcso, keves koltseg, IDE gratisz. Mi kell meg? Persze turelem a versenyzo es a forum kozossege reszerol. De egy ilyen PIC32 + C ajanlat csak megzavarja az amugyis zavaros ismereteket. Lehet hogy aki mar tizen eve gyuri a programozast annak a cel erdekeben egyszerubb egy (atom) eromuvel es valami draga C-vel dolgozni, de o" mar nem azon fog gondolkodni, hogy a LED aramat hogyan korlatozom, es hogyan lehet egy labat kimenetnek vezerelni.
Egyetértek, annyi változtatással, hogy debuggolható típus legyen ( a hibakeresés megtanulásához és gyorsításához ), amire a 12F6xx nem a legjobb/jó ajánlás!
Steve
Ami azt illeti, én is pontosan arról beszéltem, csak úgy látszik, a mércéink különbözőek.
Amikor én elkezdtem anno, foggal-körömmel kapartam a falat mire lenyeltem azt a 450valahány oldalas pic doksit olyan szinten, hogy jó a felét kvázi bemagoltam, mire össze tudott állni a kép, hogy mi hogyan. Szerintem híztam közben vagy fél kilót.. Márpedig ha valaki áramköri alapról asm-ben készít egy cuccost, nem igazán kínálkozik más megoldás. De ez egy precizitási elv. A mai "fiatalok" nem szükségszerűen csinálják így. A C nyelv, és a létező alkalmazás lib-ek nagyon sok mindentől meg tudják kímélni a mai friss indulókat. Össze tudnak rakni úgy alkalmazást, hogy az MC lib-nél lejjebb nem mennek. Az adott eszköz elektronikai konfigját is supportolt include-okból szedi valami alap init a forráskód könyvtárak legmélyén. Nem kíváncsiak rá. Nem akarnak tőle fél kilót hízni. Még a hajszálaikat sem akarják abba beleőszíteni. És az a szitu, hogy én valahol meg is tudom érteni őket. Sokkal könnyebben lehet úgy megszerezni az első sikerélményeket, mintha muszáj lenne egyáltalán bármilyen adatlapot átolvasniuk. De ilyen supportot csak a legújabb pic-ekre kapnak igazán kényelmesen, a régiekre már nem. Ha meg csak egy ledet megvillogtatni kell, kezdésnek arra is inkább az expressz pickit2 csomag saját paneljét használnám, mert egészben a kezükbe tudják kapni (lépésről lépésre szájbarágós fotókkal illusztrált leírás cakk-pakk mindenről), és részemről ebből a megfontolásból inkább annak a pic-nek az adatlapját javasolnám első továbblépésnek. Külön dugaszpanelt fogni, huzalozgatni szerintem nyugodtan rá érnek második körben is, ha valaki mégis inkább a precíz teljesítményű dolgokra kíváncsi. Ugyanis nem biztos, hogy arra kíváncsi. A mai "elektroamatőrök" között egyre csak nő azok száma, akik nem is ismerik a papírzacsik illatát. Valaha ilyet el se hittem volna. De az már régen volt. Ilyenné lett a világ. Ha a system on chip feeling irányába menne tovább valaki, akár soha sem lesz szüksége az adatlap kotorászásokra, és inkább egy periféria felszerelt boardot fog szeretni. Szerintem.
Hát igen... Amikor a színre lépett az USB és az Ethernet hálózat miatt a C, egyből megjelentek a kétszer - négyszer nagyobb programmemóriával rendelkező pic -ek... A 18F252 után a 18F2550, 18F2620 stb.
Ha egy nagy rendszered van már készen C -ben, akkor értem, hogy könnyebben portálhatod más kontrollerre, de itt még a kezdetekről van szó. Egy led villogtatásnál nem a portálás a lényeg... Nem is a C -t elleneztem, hanem a nagyágyúval LED -re lövést. A 16F886, 18F2550 kezdésnek pont jó: - Kidolgotott tematikus mintapéldasorozat, forrással pl. a mikroelektronika oldalán, - Sok kész alkalmazás érhető el itt a fórumon és máshol is, - Debuggolható, szimulálható, - Elég sok modul van bennük, sok mindent ki lehet próbálni, - Memória egy darabig elég lesz, - Assembly, szimulátor, IDE, (többféle) C, Pascal, Basic, stb. fordító ingyen letölthető (csak korlátozott tulajdonságú lehet), - Nem csak felületszerel tokban kaphatók, nagyáramú kimenetekkel rendelkeznek, 5V -ról táplálhatók - Egy breadboardon elindíthatók, - És az áruk is kedvező 500 .. 1500 Ft. Egy véletlen zárlat, túlfeszültség csak ennyit kockáztat, nem tízezreket.
Persze a korszakváltások...
Annó egy panelen egy Z80 -ról még azt sem tudhattad a beültetés után, hogy egyáltalán ki tudja olvasni az EEProm memóriáját, azt is le kellett tesztelni, hogy az utasítás megérkezi-e időben a processzorhoz, hogy a megfelelő memória van-e kiválasztva. Egy mikrokontrollernél ezek belső kötések, nem kell ellenőrizni. Magas szintű programnyelveken (a periféria működését nem ismerő) programozók szokták kérdezni itt a fórumon, hogy miért nem megy az uart vétel az első karakter vétele után? De sokszor írtam ide le, hogy a válasz adása alatt ráfutás történik a vevőben... Ugyanis nem látja, hogy az adás programozottan megvárja az előző karakter elküldését.
Szép estét minden kedves fórumozónak!
Meg építettem EZT! az IR vevőt, amit rá lehet tanítani akármilyen távirányító 3 gombjára és be lehet állítani, hogy a relé csak egy pillanatig húzzon be, vagy behúzva maradjon, amelyt az után kell beállítani, hogy a 3 gombot rá tanítottuk. Na most sikeresen rá tanítottam a 3 gombra, de nem lép tovább. Lehet az a gond, hogy nem tettem a kimenetre a szükséges alkatrészeket (relé, tranya, ellenállás), hanem csak egy 3 ledet tettem a 3 kimenetre? Kicsit kacifántosra sikerült, de remélem, hogy azért ki lehet bogozni, hogy mit is akarok. Előre is köszönöm a válaszokat! mhatalyak
Biztos, hogy nincs összefüggés. Valami más a gond...
Szép estét!
Sajnos bénáskodom és a probléma újból feljött a táblázatkezeléssel kapcsolatban, amit hittem, hogy megoldottam. Elolvastam a segítségként linkelt olvasmányt, de nem teljesen értem. A programom akárhonnan felvesz egy értéket ami után hívja a táblát dekódolni az adatot és 50 definiált karakterem van. Ezzel a program teljesen hibásan működik. A programban több végtelen ciklus van amit gombbal lehet váltani, és a táblázat a kód érthető kijelzésre van egy 14 szegmenses kijelzőn. A táblázatom retlw utasításokból áll és a kód végén van, olyasmi kellene hogy akárhonnan hívja a táblát egy rutin megoldaná a PC címét és nem össze vissza menne. Vagy hogyan lehetne, kellene minden loopba valami mutató növelő? Kicsit összezavarodtam kivételesen ezzel.
Még arra is gondoltam, hogy talán amiatt lehet, hogy más típusú az infra vevő, meg nem 38Khz, hanem 36Khz, de szerintem nem ez a probléma mert érzékeli a távirányítót, egyszerűen csak nem lép tovább. Viszont rajz szerint kötöttem az 1. kimenetre mindent, de így nem is fogadja el a távirányítót, ezért gondoltam, hogy talán nem mindegy mi van a kimenetein.
Meg lehet oldani benne van a kódban hogy momentary meg hasonló és azthiszem van egy boost led amit szintén feleslegesnek tartottam. Azthiszem ez ha nyomod csak akkor magas a kimenet.
Na jó, de én most ezzel mit kezdjek? Nem értek sajnos a PIC-ekhez, csak vásároltam egy pickit2-t és annyi hogy bele tudom égetni a HEX filet.
Többször olvasva rájövök,nem is értem a problémád. Nem lép tovább. Ez mit jelent, mi nem lép hova?
Hát annyi a lényeg, hogy van egy nyomógomb, amit ha meg nyomok, akkor világít az 1. LED ami az 1es relé lenne, addig világít még nem értelmezi a jelet a távirányítóból, ha ez meg van, akkor át lép a 2. ra és így tovább a 3. LED ig. ha ezt végig csinálom, akkor egy státusz led, elkezd gyorsan villogni és itt kell valahogyan beállítani, hogy melyik kimeneten mit csináljon a relé, tehát gombnyomásra behúzva marad, még ujból meg nem nyomom a gombot, vagy pedig addig húzzon be, ameddig nyomom a gombot, de nekem itt semmire sem reagál. Angol tudásom sajnos elég szegényes, de ennyit tudtam ki venni a szövegből.
|
Bejelentkezés
Hirdetés |