Fórum témák
» Több friss téma |
Elektro.on ilyesmire gondolt (legalább is szerintem):
Így a Szunet(ms); paranccsal bármilyen várakozási idő kiadható 0-65536 ms közt, erőforrás spórolósan... A hozzászólás módosítva: Dec 19, 2016
Beírtam, de továbbra sem történik semmi. El se kezd futni a kód. Csak ezt a hibát obálja a szimulátor:
Kedves DJozso tudom mire gondol Elektro.on azért köszönöm
![]() Kedves Elektro.on gondolom tapasztaltabb vagy ezért megkérdezem amit tudunk for ciklussal megoldani akkor azzal oldjam meg a hely sporolásért??
Sajnos a MicroC és a MicroPascal fejlesztői valami okból csak úgy tudták megoldani a Delay ms késleltetést, hogy mindenhová ahová beírod berak egy méretesebb asm ciklust ami konkrétan a késleltetést végzi. Ezért ha több helyre írod gyorsan megtölti a memóriát. A leírásban ők javasolták a fügvény hívást, mert így mindig "oda ugrik" a program és azt futtatja. Ezért csak egyszer foglalja a helyet. Djozsó azért javasolta pluszba a függvénybe a for ciklust, mert így nem csak egy előre beállított értékkel tudsz késleltetni. Hanem ha a Delay -t monjuk 1 ms re állítod és a függvény hívásnál megadod paraméterként hányszor fusson le, akkor a programodban olyan értéket állíthatsz be amire szükséged van.
Remélem érthetően fogalmaztam és a segítségedre lessz.
kedves Elektro.on értem ezt használom is de más esetekbe is érdemes for ciklust használni hely sporolás miatt??
Nem tudom, mit csináltál vele, nálam működik az MpLab 8 Szimulátorában.
A hibajelzés arra utal, hogy eljut a programtár végére (0x7FE)... A láthatóság kedvéért a delay idejét 1ms -ra írtam át. A hozzászólás módosítva: Dec 19, 2016
Nem feltétlen. Itt a Delay késleltetés sajátossága miatt hasznos lehet. De például neked a programodban nagyon sok helyen kell késleltetés de mindenhová ugyan annyi, akkor nem kell a for ciklus csak simán a Delay -t teszed egy fügvénybe.
Azt, hogy mikor érdemes ciklust használni, kizárolag a megoldandó feladat, és a programod szerkezete határozza meg. Ez mindig egyedi. Érdemes mindig tagolt, funkcionális részekre elkülönülő jól átlátható kódot írni. De ez gyakorlat és tapasztalat kérdése. Elöbb utóbb te is ráérzel.
Tagolással kapcsolatban itt egy korábbi kódom. Ez sem tökéletes és ráadásul pascal, de a tagolás lényegét talán láthatod benne.
Bővebben: Link
Nem igazán értem mi nem megy ezen a programon.
Nincs mi rossz legyen.. A szimulátorban milyen kapcsolás van?
Na ez kezd érdekes lenni. Csatolom a kapcsolást.
A szimulátor azt állítja, hogy be sem lép a main metódusba. Szóval nem tuom, hogyan érhet a program végére. Ez egy rejtély, úgy látszik.
ó! Mevan a hiba! Rosz PIC volt a kapcsoláson.
![]()
Sziasztok
![]() Jól állítottam be??
Szia!
Majdnem jó. A PR2 értéke csak 249 kell,hogy legyen.
Ebben neked tökéletesen igazad van, csak most jól megkeverted kriszrap-ot, mert a miérteket nem tetted hozzá.
Anélkül pedig hanyatt esik a matematika. Tehát: Mivel PR2 értékét be kell töltenie a rendszernek a timerbe, minden lejárat után, ezért ez a művelet egy számolási ciklust elhasznál. Így ha 250 kerül beírásra, a tényleges osztás 251 lesz.
Vagy is a betöltési idő is fontos....
Most te keverted meg szegényt, mert nem szoftveres, hanem hardveres az összehasonlítás. Amikor a timer 2 eléri a PR2 értékét, ekkor nullázódik, viszont az említett egységnyi idő az a nullátó az 1-ig telik el.
Ez van, ha az ember a google fordítóval fordít műszaki tartalmat.
De végül is tökmindegy. A lényeg abban van, hogy megértsük a miértet . De a nullától egyig való számolás is a számolás része, tehát nem töblet. A nullázási művelet a töblet. A hozzászólás módosítva: Dec 20, 2016
Ne legyen igazam, de szerintem a kollégának tök mindegy, hogy mitől, csak működjön...Legalábbis abból amit eddig olvastam, nekem ez jött le.
Hát.... Azért nem ... Sok kolégátol kapok pmbe segítséget.Csak One wire/timer kicsit új nekem ennyi nehéz belerázódni.
Egy 16 bites PIC en a következő problémába ütköztem.
Van egy struktúra változó, melyet adatokkal töltök fel. Amikor ezek kiolvasom a PIC little-endian tárolása miatt nem a kívánt sorrendben jelenek meg a byte ok az ssss változóban. (0xAA - 0xBB - 0x08 - 0x00 - Op)
Hogy lehet orvosolni a fenti problémát?
Van pár lehetőség,de az lenne a legegyszerűbb,ha az int-eket felcserélve tárolnád el,így lépkedve meglenne a jó sorrend.
A mutatókkal így macera,mert az első a Ptr+1 , Ptr , Ptr+3 , Ptr+2 , Ptr4 lenne a kiolvasási sorrend,ami még megoldható,de amikor itt a példádnál char az utolsó,ott már nem kell csere.Ezt meg lehetne írni ciklusban,de egyszerűbb a csere.
Bár nem pontosan értem a dolgot, de nem lenne egyszerűbb még a struktúrában felbontanod byte-okra az adatokat?
Sziasztok ! Érdeklődnék,hogy BAS kiterjesztésü fájlt,hogyan tudnám átforditani HEX-re.Előre is köszönöm a segitséget
Lennél szives ajánlani egyet. Köszönöm szépen
Szerintem ez attól is függ melyik Basic környezetben írodott a kód. Ott van például a MicroBasic. Tartalmaz olyan beépített fügvényeket amit más gyártó fordítója nem.
Mikroelectronika: Mikro BASIC
PIC Basic Pro Free BASIC Proton BASIC Swordfish - Modular BASIC for PIC Great Cow BASIC OshonSoft PIC Basic Compiler Proton PIC® BASIC sbt... Goooogle: "basic compiler for PIC" |
Bejelentkezés
Hirdetés |