Fórum témák
» Több friss téma |
holnap haza hozom a melóból. A hétvégén próbák hada.
Melyik a másik program?
Timer0-ban nincs! Adatlap 126. oldal.
"Selectable clock source (internal or external)". Ez nem oszcillátor. A hozzászólás módosítva: Nov 30, 2012
Tudod, írtam, hogy lehet Timer2-vel a PR2 beállításával hardveres osztással és lehet más Timerrel, regiszterfeltöltögetéssel megszakításban, ami sok esetben hibákkal terhelt.
A hozzászólás módosítva: Nov 30, 2012
Nincsen olyan láb, hogy T0CKO, nem lehet külső kristály a Timer0-on. (Adatlap FIGURE 11-1: és FIGURE 11-2: rajzok.)
A T0CS-vel lehet kiválasztani, hogy külső, vagy belső forrásról járjon a TMR0, más lehetőség nincs. A TMR0-nak nincs belső oszcija se külön, csak a PIC fő belső oszcijáról járhat, annak negyed részével. Ezt a Timer0 blokkban ki lehet választani. A hozzászólás módosítva: Nov 30, 2012
Melyik kvarcról és melyik oszciról van szó? A fő oszciról? Akkor még is hogyan gondoltad, hogy egyszerre megy a kettő?
És hogyan jött a képbe a Timer0 nem létező külső oszcija? Kicsit nem tudlak követni most reggel!
Igen emlékszem. Kicsit letisztult fejjel előjönnek az emlékek.
Végül is ez áramkörileg nem lenne lehetetlen, mert elég leválasztani az oszci belső kimenetét, kint rezeghetne, csak akkor az a két láb használhatatlan lenne, mint I/O port. Mivel nincs olyan beállítási lehetőség, hogy a PIC belső oszciról menjen, de a lábak nem I/O-ként, hanem leválasztott diszkrét külső oszcillátorként funkcionáljanak, marad az I/O.
A timer2 hogyan jön a T0CKI-hoz?
Először azt hittem, hatszöget fogsz kapni, de aztán leesett, hogy ez a Flowcode C fordítója!
Valami okból nem kerestem rá, nem hittem el, hogy létezik ilyen doksi! Nagyon örülök neki, köszönöm! Mit tudok róla? Valahogy lefordítja a folymatábrákat, baromi nagy hex állományba! Ennél többet nem nagyon. Te mire lennél kíváncsi? Most nézem elvileg MPLAB alá be lehet integrálni, bingó! Lehetne szimulálni, amit a Flow-ban nem lehet! Utánanézek a hogyannak! A hozzászólás módosítva: Nov 30, 2012
Ez az! Már megérte feltenni.
Mi az a hatszög? A hozzászólás módosítva: Nov 30, 2012
Olvasd el a legutóbbi neked címzett kék hozzászólást!
Megérte, de hogy ez benne van a telepedett Flowcode\v5\Tools\boostc könyvtárban, arra végképp nem számítottam! Te is ott találtad?
Éppen menüt programozok és ugye a menühöz kell kijelzés, nem kevés. Észrevettem, hogy nagyon fogy a programmemória. Kíváncsi voltam mi fogyasztja ennyire. Kiszedtem 10db Print_LCD-t és 0,7%-ot csökkent a program mérete! Ez azt jelenti esetemben, hogy 20 programszó helyet foglal el egy ilyen LCD-s makró amikor egy int számot íratok ki vele.
Na ilyenkor dobom le az ékszíjat! Megnéztem az ASM kódot, sehol nem használ 18F-es MOVFF utasítást(kivéve megszakítás mentéseknél, ahol meg nem szabad! ), amivel egy lépésben tudna áttölteni regisztereket egymásba. Helyette a 16F-es-ek utasításkészletét használja, ami kétszer nagyobb kódot is eredményezhet. Ez nagyon nem jó így!
Nagyon nem. Programozom a szobatermosztátomat. Már kétszer túlléptem a 16F628 méretét és még menü sehol sincs. Nyilván amit kezdőként összedobok, azt erősen lehet majd optimalizálni.
Azt hiszem mégis csak tovább kell tanulni. Legalább a C-t.
Szia!
Az XC8 -nál vettem észre, hogy nem használja ki az Advanced Midrange utasításait. Sőt a részeredményeket mindenáron el akarja tárolni auto változókba.
A 1617 sor miért nem lsrf ??_main,w? Arról nem is beszélve, hogy az egész megoldható a lsrf WREG,f utasításokkal. Aztán a c = a & 0x1F sor esetén az a -t előbb átmásolja a c -be aztán jün az movlw 0x1F és az andwf c,f. Sajnos ez még hibás működéshez is vezethet, hiszen a megszakítás elválaszthatja a utasításokat. A movf a,w / andlw 0x1F / movwf c rövidebb, és mindig jól működik. Nem értem, még a bankváltáshoz sem kell a WREG...
Na ezt mar mondtam egy par hete, de mindenki lehurrogott. Amivel foglalkozol most a, homersekletszabalyzassal, sokkal egyszerubben meg lehetne csinalni C nyelven, es meg a kod is sokkal kezbetarthatobb lenne. Ja es sokkal kisebb. Nekem vannak egyszeru kezdoknek valo mintaprogramjaim, azt hiszem a PIC kezdok totyikban mar feltettem egy parszor. Keresd, de ha nem talalod, ott irjal, es felteszem megegyszer. Nem bonyolult a C, csak el kell kezdeni turelmesen az alapoktol, es vegigjarni a szamarletrat.
A hozzászólás módosítva: Nov 30, 2012
Sajnos a 16F628A kicsi. Amit én írok azt egy 18F4550-be írom és már 70%-nál járok. Még az is lehet, hogy bele se fér! Igaz, hogy 1000 bájtot a bootloader lefoglal. Ettől függetlenül nem tudom miért 28672 bájtot vesz alapul a Flow, mikor elvileg több van. Közben rájötem, hogy nem 20 szó, hanem csak 20 bájt egy kijelzés, ami 10 programszó. Az se kevés.
A C sem mindenható. Nekem le kellett cserlénem a 627A-kat 628A-ra amikor átírtam C-re az egyik panelem programját. ASM-ban félig se volt tele a 627A.
A másik, hogy nem egyszerűbb C-ben megírni egy hőfokszabályzót, ez nem igaz, most már én is tudom, hogy folyamatábrával sokkal gyorsabb és könnyebb.
Nézd meg ezt a "kijelzést" ez mekkora helyet foglal ? Így nem takarékosabb ?
Egyértelműen úgy érdemes szervezni, hogy ne keljen sok LCDPrint blokkot felhasználni. Én is optimalizálni fogok tovább, ha rákényszerülök, de hidd el, nem egyszerű a menüm.
Azt egyébként tudni kell, hogy akármilyen stringet töltesz be egy string változóba, azt mindenképpen eltárolja a fordító a program területre, ami növeli a kódot. Ezért ha egyforma szövegek több helyen előfordulnak, akkor jobb constanba tenni. Igaz azt nem tudom, de megnézem, hogy ha egy constanst betöltök egy szrtingbe, akkor azt hogyan fordítja a fordító, mert nem lepődnék meg, ha mindannyiszor letárolná, mert úgy kisebb fejtörést jelent annak aki fejleszti a fordítót.
Hát elhiszem . Én nemrég csináltam egy 1/100 ad másodperces stoppert ami 51 versenyző
idejét és a bírótól kapott hibapontjait eepromba menti az sem volt egyszerű de belefért a 18f886 ba , Most csak a véleményedre lettem volna kíváncsi , hogy érdemes e ezt a vonalat fejleszteni ? A hozzászólás módosítva: Nov 30, 2012
Idézet: „Ez a lehető legrosszabb hozzáállás, ha magadtól nem csinálod soha nem jutsz tovább. Ötletet lehet meríteni mások programjaiból, de ha nem látod át semmit sem ér az egész.” SZiasztok kicsit megcsuszva de vagyok. Sajnos igazatok van a hozzáálásommal kapcsolatban de igy van, viszont ugy érzem többet tanultam tölettek mintha bármilyen szakkönyvet olvastam volna. A ti tapasztalataitok sokkal tanulságosabb mint egy könyv. Az ollozás részben igaz mert vannak akadások amit a ti programjaitok segitségével küszöbölök és ezért köszönet. Szerintem aki elolvassa ezt a totyikot az csak tanulhat. Az osccilátoról csak annyit hogy valoban több ezerszer irtátok le de nem sikerült megértenem mig nem irta le kkrisz75, szájbarágosan amivel sikerült beleverni a kicsi agyamba a lényegét. Pjg álltal feltett PIC timer calc. program is sokat segitett a felfogásban. Nem merem azt mondeni hogy értem de van elképzelésem a lényegéröl illetve meg merem kockáztatni hogy valamit már el tudok késziteni ezek ismerete alapján. Röviden köszönök mindent.
Kipróbáltam, rosszabb! Pedig én is azt gondoltam, hogy jobbnak kell lennie!
Létrehoztam 4 constanst szövegnek, majd letöröltem 4 PrintLCDSting blokkot és helyette egyet tettem a közös ágba. létrehoztam egy string változót feltöltöttem az ágakban, ahogy te is. 100bájttal nagyobb lett a program!
Valóban.
Viszont kiderítettem, hogy ha constas-ba teszel striget és ezzel töltesz fel egy változót, legalább nem tárolja le mindannyiszor, hanem a letárolás helyéről veszi. Így lehet spórolni, ha egy szöveget sok helyen kell kiírni. Viszont a változók feltöltögetése több memóriát igényel ezek szerint, mint a kijelzés blokkja! Ezt aztán nem gondoltam volna!
Tudom hülye kérdés, internal RC clock out és intarnal RC no clock között mi a különbség? Egyszerüen nem tudom felfogni föleg mot hogy mi az oka hogy nincs clock és közben megadom hogy belsö. És ráadás ez külsöben megadva.
A hozzászólás módosítva: Nov 30, 2012
Én köszönöm az ötletet, mert van folyománya!
Visszacsináltam a kijelző blokkokat, majd lerögzítettem a szövegejet konstansba és ezeket töltöm bele az LCD blokkokba. Valószínű rövidebb kód kell constans-ból való kiolvasáshoz, mert 12bájttal kisebb lett a program! Tehát minden ágba lehet kijelző blokkot tenni, mert azzal nem lehet spórolni, de nem bele kell írni a szöveget, hanem constasba és azt kiíratni. |
Bejelentkezés
Hirdetés |