Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   97 / 361
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 26, 2012 /
 
Ja és nem kell táblázat, csak egy negyedfokú polinom függvény. Egyébként ez nem vicc, már leprogramoztam Flowcode-ban hőelemekhez, nem nagy ügy...
A hozzászólás módosítva: Nov 26, 2012
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Nov 26, 2012 /
 
Az MCP9700-hoz csak 1 pillanatra.

Nem néztem az adatlapját, mert nekem csak a kocsiba visszajelzőt működteti, 1-2 fok eltérés nem számít. Lényeg, a vízhőmérsékletet mutatja a termosztát házban. Hőgomba helyére van beszerkesztve.

Mivel ez egy faros 135ös skoda elég messze van az óracsoporttól. fonott árnyékolt vezeték. zavarszűrő kondival.

Lényeg, hogy a higanyos 100 fokos hőmérőhöz képest, pontos volt. Azt mutatta az óra amit le lehetett olvasni a hőmérőn. 90 fokig ellenőriztem, az fölé úgyse megy a víz.

Nem mondom, hogy ez halál profi cucc, inkább azt, hogy attól függ mire kell. Ha nem kalibrált hőmérőt csinálunk, lehet nem adnék ki 700Ft-ot 72Ft helyett.
(#) Kovabe válasza watt hozzászólására (») Nov 26, 2012 /
 
Ez az ár nettó de 3 nap alatt megvan és minden más is itt a legjobb illetve minden van, én inkább innét rendelek DS18B20 vagy ebay, most néztem fillérekért
A hozzászólás módosítva: Nov 26, 2012
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Ezt nem értem mit jelent.
Viszont mi van azzal,amit írtam a frekimérőről? Ilyen könnyen feladod? Le kéne csupaszítanod a programodat, kidobni minden felesleges dolgot, és előről kezdeni! Amúgy mi a célod? Milyen frekit akarsz mérni, milyen pontossággal?
(#) pjg hozzászólása Nov 27, 2012 /
 
Azt vettem észre a DS-nél, hogy amikor bekapcsolom a mérőt mutat egy értéket ami a következő pár másodperc alatt fellépked mintegy fél fokkal magasabbra.
Ez attól lehet, hogy a DS belső csipje melegszik és a belső hőmérséklet befolyásolja a mért értéket?
A hozzászólás módosítva: Nov 27, 2012
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Igen, ezt akartam javasolni, hogy órakvarcot, vagy óra blokkot (RTC) használj mérőjelnek. Én használok olyan RTC-t, amiben benne van a kristály és 5ppm szórása van. Tudsz 1Hz-et levenni róla, vagy az órafrekit(32,768KHz) is ki lehet venni. Gyakorlatilag ez a pontosság elegendő jobbat úgy sem tudsz készíteni. R2025s

Keress rá még az FDH.hu-nál a DS3231-re. 2ppm-es...
A hozzászólás módosítva: Nov 27, 2012
(#) watt válasza pjg hozzászólására (») Nov 27, 2012 /
 
Igen, ez ettől van és bele van kalkulálva a pontosságába. Bekapcsolás után kell neki néhány perc. Mindegyik ilyen egyébként, a TC77 is ezt csinálja...
(#) pjg válasza watt hozzászólására (») Nov 27, 2012 /
 
Tehát akkor a bemelegedés utáni érték a pontos.

Mi van akkor, ha az érzékelőt "felragasztom" egy 20cm2 felületű 2mm vastag fém lemezre? A hőtehetetlensége nagyobb lesz.
A hozzászólás módosítva: Nov 27, 2012
(#) watt válasza pjg hozzászólására (») Nov 27, 2012 /
 
Az érzékelő hőtehetetlensége nem változik, de a mérő rendszered hőtehetetlensége összességében igen és itt a nagyobb részt a vaslemez fogja adni.
A hozzászólás módosítva: Nov 27, 2012
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Na ebből már komoly műszert lehet építeni! fdh.hu-n keress rá a: MICRO CRYSTAL OCXOV-AV5-10.000 -ra.
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Nem jó a link.
Egyébként drága ami ilyen pontos, de láttad a MICRO árát? Lehet, hogy lassan nagyon offok leszünk...
A hozzászólás módosítva: Nov 27, 2012
(#) Hp41C válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Szia!
- Ne add fel, a TXCO elég jó időalapnak. FDH -nál lehet pontosat kapni, kinek-kinek a pénztárcájától függően.
- Ha nagy frekvenciát szeretnél mérni, nem csak 1Hz kapuidő kell majd. Ha a TXCO 10ppm pontosságú, akkor a 50MHz vagy még nagyobb frekvenciát nem kell 1 Hz pontosra mérni. Nagyon nagy számokhoz vezet, lassúak lesznek a műveletek, a kis helyiértékú digitek állandóan változni fognak. 5 digit pontossághoz elég a 10ppm és 24 bites számábrázolás.
- Egy ilyen kivitelű műszer mit kezd majd a 12.34 Hz -vel? Ha 1s időalappal méred, akkor 12 lesz az eredmény (2.83% hiba), ha 10s -vel, akkor 12.3 (0.3% hiba), ha 100s (majdnem két perc) 12.34. Túl lassú és pontatlan a mérés.
- Ha alacsony frekvencián is pontosan szeretnél mérni, periódusidőt kell mérni. Cseréld meg a kapu és a mérendő jel bemenetet. A kapujel származzon a bemenő jelről, a számlálandó jel a Timer2 - CCPR - PWM -ből. Ha 2MHz a számlálandó jel, akkor a 12.34 Hz-es jel egy periódusa alatt 162074 -ig, 12.30 Hz -esé alatt pedig 162601 -ig számol majd a számláló. Azaz nem jelent majd gondot, hogy 40mHz -et megkülönböztess (0.32% hiba 80 ms mérési idő alatt).
- Ha a fentieket is figyelembe veszed, akkor mégiscsak jobb lesz a Timer2 - CCPR - PMW időalap, mivel ki tud adni akár 5MHz -t is 40MHz bemenő órajellel járatott kontroller esetén. Ha a timer1 belső órajelről jár, akkor megvan a 10MHz is. Mindezt külső elemek nélkül, programból lehet váltani.
- Miért ragaszkodsz a FlowCode -hoz. A program 5.5 digit feldontásra, 40MHz -ről járatott 18F2523 kontrollerre, frekvencia és periódusidő kijelzésével (48 bites számok osztását igényli), 2x20 karakteres LCD kezeléssel, 100kbit/s (optikailag leválasztott) UART kapcsolattal nincs 4k assemblyben. Egy USB - uart konverterrel kapcsolódhat a PC -hez. Bővebben: Link
A hozzászólás módosítva: Nov 27, 2012
(#) pjg válasza Hp41C hozzászólására (») Nov 27, 2012 /
 
Egy gond van vele:

Sajnos a fejlesztése, más irányú elfoglaltság miatt, elállt azon a a szinten. Dokumentációm meg alig van... "
(#) watt válasza Hp41C hozzászólására (») Nov 27, 2012 /
 
Nézz vissza, a periódusidő, frekimérő, impulzusmérő 100kHz-ig már készen van. A nagyobb frekikre meg ez a mérési módszer a jó, amit simpi igyekszik megvalósítani. Itt csak a mérőjel pontossága, stabilitása ami gondot okoz. Teljesen mindegy milyen nyelven írod, ha működik. Nem látom, hogy Flowcode-ban ne lehetne megoldani ezt az egyszerű feladatot. Addig nem tudtam én sem, amíg nem próbáltam! Ettől függetlenül az asm és C nyelvek létjogosultsága megkérdőjelezhetetlen, csak nem mindig van rá szükség. Ha kiismeri magát az ember, szinte ugyanolyan gyors és tömör programot lehet írni sokkal gyorsabban. A számítások sem okoznak gondot, asm-ban annál inkább. Próbáld ki, meglátod meglepődsz!
(#) watt hozzászólása Nov 27, 2012 /
 
Nemrég beszélgettünk arról, hogy nem érdemes LED-et tenni, mert sok kód van mögötte, inkább az Output blokkot használjuk. Nos ez sem leányálom, ha mindenhol, ahol egy kimenet egy bitjét akarjuk beállítani, ezt teszünk! Inkább arra való, hogy egyszer beállítsuk a portot, utána el kell felejteni. Indok a következő tartalom, amit befordít a fordító.
  1. //Bolygat_Kimenet
  2. //Kimenet: 0 -> B4
  3. trisb = trisb & 0xEF;
  4. if ((0))
  5.         portb = (portb & 0xEF) | 0x10;
  6. else
  7.         portb = portb & 0xEF;

Ezt egyszer kell letenni, hogy a port be legyen állítva, többször nem.

Helyette inkább a Számítás blokkba tegyünk egy:
  1. $PORTB = $PORTB | 16

Ha a RB4-et be akarjuk kapcsolni, és egy:
  1. $PORTB = $PORTB & 239

Ha ki.
Még keresem, hogyan lehetne ezeket előre definiálni, hogy pl. csak LED1_Be, LED1_Ki kelljen beírni...
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Neked is csak azt tudom mondani, hogy mindegy milyen nyelven programozol, ha ismered a programozást. Az ASM sem sámánság, csak a PIC-et kell sokkal jobban ismerni! Aztán ha jól ismered, az minden más nyelven hasznodra válik! A gond ezekkel a magasabb szintű nyelvekkel, hogy nem ismerteti meg a PIC-et, ami nélkül LED villogtatáson kívül nem sokra lehet menni! Ezért akadnak el itt a kezdők. Ha ASM-al kezdenének, nem lenne gond a Flowcode-al továbblépni!
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Nem az Ulong a hibás, hanem a ToString$ az ulongot is sima longként értelmezi. Ezt már én is észrevettem, ezért nem használom a ToStringet. ahol ekkora számot kell kijeleztetni.
(#) watt hozzászólása Nov 27, 2012 /
 
Találtam még egy érdekes hibát a szimulátorban. Nem egyforma sebességgel szimulál ha le van nyomva egy gomb, vagy ha nem. Nyílván nem ugyanaz az útvonal, de alig van pár lépés eltérés és semmi nem indokolja. Jelentősen lassabb. A valóságban minden arányosan működik a PIC-en.
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Aha, ezt megnézem...

Korábban írtam, hogy nem jó használni a Kimenet blokkot sem és helyette érdemesebb portra írni. Hát nem hagyja magát a Flowcode, ezt fordította be C-be:
  1. //  $PORTB = $PORTB | 0b00001100
  2.         FCP_SET(B, 0xff, 0x0, FCP_GET(B, 0xff, 0x0) | 12);

Ránk erőlteti a szerencsétlen függvényeit. Ráadásul ezeket a függvényeket ki sem lehet listázni, csak ha fájlokban kutakodunk. De eleve, minek meghívni egy függvényt, mikor egyszerű műveletre fordítható a lépés!? Nem igazán értem...
Végül C blokk lesz belőle, de nem akartam ajtóstúl rontani, hogy elvegyem a kedvét a C-től óckodóknak. Megjegyzem, hogy semmivel sem bonyolultabb a C blokk itt, mint a Flow... Még futok pár kört aztán levonom a következtetéseket...
(#) watt hozzászólása Nov 27, 2012 /
 
Korábban azt írtam, hogy elég kicsi programokat lehet írni Flow-ba is, hát ezt csak a folyamatábrákra lehet igaz. Az előfordító olyan szinten pazarol, hogy félelmetes. Minden alkalommal mindenre kiterjedően bebiztosítva állítja elő a kódot. E miatt nem kell deklarálni a portokat külön, emiatt szószártyár és memória zabáló.

Megvan mindennek az ára!
(#) dark81 hozzászólása Nov 27, 2012 /
 
Sziasztok!

Készítettem egy programot, ami 16F876A - val tökéletesen működik, de 18F2550- re nem akar lefordulni. A program egyébként RC5 kódrendszerű távkapcsolók cím és funkció kódjait írja LCD kijelzőre. Ha valaki tud, legyen szíves segítsen!

Köszönöm
(#) watt hozzászólása Nov 27, 2012 /
 
Akkor nem elrettentésként, pont ellenkezőleg, szeretném megmutatni, hogy hogyan néz ki a fenti kód C blokkban:
  1. //C kód:
  2.         latb=portb | 0b00001100;

Magyarázatként annyi, hogy a 18F-eknél nem a portx-re írunk, ha ki akarunk vinni egy értéket a kimenetekre, hanem a LATx-re. Viszont a vagy-kapcsolathoz inkább a PORTx értékét olvassuk be.
Fontos, hogy ilyen C kód előtt a main-ban be kell állítani egy O(kimenet) blokkal a kiválasztott lábat. Esetemben az RB2 és RB3 lábat. A fenti kód ezeket kapcsolja be, miközben a többi lábat változatlanul hagyja. Mindezt egyetlen programlépésben.
A kikapcsolás a következő:
  1. latb=portb & 0b11110011;


Megfigyelhető, hogy a regiszterek neveit kicsi betűvel kell írni a flow C-ben és pontosvesszővel kell lezárni a sort. Csak ebben tér el az Értékadás blokktól.
(#) watt válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
De.
(#) dark81 válasza (Felhasználó 15355) hozzászólására (») Nov 27, 2012 /
 
Szia Simpi!

Nekem az alábbi fordítási üzenetet dobja:

Visszaküldenéd azt az fcf fájlt amit Neked sikerült lefordítani?

Üdv.
(#) watt válasza dark81 hozzászólására (») Nov 27, 2012 /
 
Nekem is lefordítja, nem változtattam semmit. Neked baállítási problémáid vannak. A Build Fordítási opcióknál tedd a defaultra a lenyíló menüt.
(#) dark81 válasza watt hozzászólására (») Nov 27, 2012 /
 
Átraktam defaultra, de most sem fordítja le, a hibaüzenet ugyanaz. Így még nem jártam. Egyéb ötlet?
(#) watt válasza dark81 hozzászólására (») Nov 27, 2012 /
 
Nem javítottál bele véletlenül? A Help-ben benne vannak az alap beállítások, érdemes lenne összehasonlítani!
(#) dark81 válasza watt hozzászólására (») Nov 27, 2012 /
 
Valamikor állítottam ott valamit, megnézem a help-ben.
(#) watt válasza dark81 hozzászólására (») Nov 27, 2012 /
 
Ne próbálkozz, nem fog menni ez a verzió, simpinek igaza van! De kérlek ne itt kezdjünk warezolni, nem ide való abszolút!
(#) dark81 hozzászólása Nov 27, 2012 1 /
 
Na végre sikerült. Hol lehet megvenni a teljes verziót?
Következő: »»   97 / 361
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem