Terminál Fórum https://forum.technokrata.hu/forum/ |
|
AVR kérdések (ATMEGA) https://forum.technokrata.hu/forum/viewtopic.php?f=5&t=29430 |
Oldal: 5 / 6 |
Szerző: | Ros-Co. [ kedd aug. 01, 2006 9:16 ] |
Hozzászólás témája: | |
MI az RSTDISBL? |
Szerző: | klavi [ kedd aug. 01, 2006 8:54 ] |
Hozzászólás témája: | |
gemo írta: Egy elpusztúlt attiny2313 lett az eredmény... Fel lehet ébreszteni az elprogramozott attiny2313-at??? Valószínűleg "external oscillator" üzemmódba kapcsoltad, azaz külső órajelet vár a uC. Próbálj meg külső négyszögjelet (pl. 1MHz) vezetni az órajel bemenetre, és ezalatt konfiguráld "kristáyoszcillátor" üzemmódba. Ha viszont az RSTDISBL bitet állítottad át, akkor már csak egy práhuzamos programozóval lehet visszaállítani... |
Szerző: | Ros-Co. [ kedd aug. 01, 2006 8:22 ] |
Hozzászólás témája: | |
Majd megnézem az adatlapot, de tílleg vigyázni kell mert ki lehet zárni magadat a chip-ből. És utána már csak valami párhuzamos programozó hozza helyre... |
Szerző: | gemo [ kedd aug. 01, 2006 7:19 ] |
Hozzászólás témája: | |
Egy elpusztúlt attiny2313 lett az eredmény... Pony proggal programoztam, előfordulhat hogy ez negáltan kezeli a FUSE-biteket... Ezt olvastam ki egy működő attiny2313-ból: 1 CKDIV8 0 CKOUT 0 SUT1 1 SUT0 1 CKSEL3 0 CKSEL2 1 CKSEL1 1 CKSEL0 ha ez negált akkor 01 10 0100 Most akkor mit kellene beállítanom a 4MHz külső kvarcomhoz???? Fel lehet ébreszteni az elprogramozott attiny2313-at??? |
Szerző: | gemo [ hétf. júl. 31, 2006 10:45 ] |
Hozzászólás témája: | |
Köszi! Este ki is próbálom, és megírom az eredményt! Gemo |
Szerző: | Ros-Co. [ hétf. júl. 31, 2006 10:41 ] |
Hozzászólás témája: | |
winavr-hez nemtom pontosan milyen égetőt adnak, mert én ponyprog-ot használom, cimbi meg az avrdude-t (Linux) Ez utóbbinál a konfig fájlban kell asszem megadni hogy FUSE 010000010010110 stb.... (ez csak egy példa volt) de mintha parancssorból is kiadható lenne. A winavr saját égetőjélben nem tom hogy kell, nézd meg a doksiban. Ja és vigyázz, mert valamelyik égetúő a CKSEL biteket (ami neked kell) fordítva (negáltan) jelöli... |
Szerző: | gemo [ hétf. júl. 31, 2006 10:35 ] |
Hozzászólás témája: | |
WinAVR-t használok, ebben hol lehet a FUSE-biteket macerálni? |
Szerző: | Ros-Co. [ hétf. júl. 31, 2006 10:30 ] |
Hozzászólás témája: | |
Nézd meg a FUSE biteket, hogy nem-e a belső 1MHz-es RC oszcillátoráról jár-e a cucc |
Szerző: | gemo [ hétf. júl. 31, 2006 10:25 ] |
Hozzászólás témája: | |
Hali! Attiny2313 programozgatok, eddigi projektjeimnél az időzítések nem voltak túlságosan lényegesek, de most egy rtc-t kellene írnom, aminél a pontosság azért lényeg lenne A probléma az, hogy hiába 4MHZ kristályt használok úgy tünik mintha csak 1MHz lenne, ami azért elég nagy gáz... Itt a program részlet ami most jól működik, de a számításaim szerint nem szabadna jól működnie... valaki megmondaná, hogy mit számoltam el????? Vagy a belső órajel kavar be valamit? #define TICKCOUNT 3700 ISR(TIMER0_OVF_vect) { i++; if (i == TICKCOUNT) { ss++; if (ss == 60) { ss = 0; mm++; if (mm == 60) { mm = 0; hh++; if (hh == 24) hh = 0; } } } } void init_clock(void) { cli(); TCCR0B |= 1 << CS00; TIMSK |= (1 << TOIE0); sei(); return; } A válaszokat előre is köszönöm. Gemo |
Szerző: | Ros-Co. [ csüt. júl. 13, 2006 22:37 ] |
Hozzászólás témája: | |
Köszi! |
Szerző: | gerry [ csüt. júl. 13, 2006 19:53 ] |
Hozzászólás témája: | |
Ros-Co. írta: Bocsánat hogy egy valószínűleg elhangzott kérdéssel állok elő: Szeretnék AT90S2313-ra készült kódot Attiny2313-on futtatni. A kódban semmilyen változtatás nem lehetséges, csak a bináris fájl van meg. A fuse bitek megfelelő beállításával lehetséges a dolog??? (vissza lehet kapcsolni 2313 módba?) Ha nem, esetleg disassemblerrel vissza lehetne fejteni a kódot, de ez véleményem szerint meg nem érné meg. A 90S2313-at már nem gyártják. Gondolom másnak is felmerült a probléma. Persze kompatibilis a tok, bele lehet égetni. Amire figyelni kell, ha programozod, hogy a ki kell kapcsolni valami conf. bitet ami a külső orajelet leosztja 8-al asszem CKDIV8(disable). Nem kell visszakapcsolni 2313 modba mert nincs ilyen funkciója. Legalábbis a Pony progban nincs. Bascommal is lehet égetni de csak az 1.11.8-al? De Róbert a avr.tavir.hu -n segít neked. üdv |
Szerző: | Ros-Co. [ csüt. júl. 13, 2006 16:46 ] |
Hozzászólás témája: | |
Bocsánat hogy egy valószínűleg elhangzott kérdéssel állok elő: Szeretnék AT90S2313-ra készült kódot Attiny2313-on futtatni. A kódban semmilyen változtatás nem lehetséges, csak a bináris fájl van meg. A fuse bitek megfelelő beállításával lehetséges a dolog??? (vissza lehet kapcsolni 2313 módba?) Ha nem, esetleg disassemblerrel vissza lehetne fejteni a kódot, de ez véleményem szerint meg nem érné meg. A 90S2313-at már nem gyártják. Gondolom másnak is felmerült a probléma. |
Szerző: | potyo [ csüt. júl. 13, 2006 14:13 ] |
Hozzászólás témája: | |
albinolynx írta: Közben Watt már tájékoztatott a PIC-es fórumban, hogy ezek mikrokontrollerek és nem PIC-ec. Én meg csak átmásoltam a postom. Guglizok egyet, köszi! |
Szerző: | albinolynx [ csüt. júl. 13, 2006 14:10 ] |
Hozzászólás témája: | |
Magyar oldalon nem találtam, ellenben külföldin ezt: link Mi a véleményetek róla? |
Szerző: | albinolynx [ csüt. júl. 13, 2006 13:43 ] |
Hozzászólás témája: | |
klavi írta: albinolynx írta: ... Adott három PIC: AT89C2051, AT89C1051, AT89C4051 ... Ezzel elárultad magad, látszik hogy fogalomzavarban szendvedsz... A Microchip gyárt PIC mikrokontrollereket, az ATMEL pedig (többek között) AVR és 8051 alapú kontrollereket... (Az általad említett uC-k 8051 alapúak) A Google-ba írd be: "AT89C2051 programozó", és már válogathatsz is a jobbnál jobb kapcsolásokban... Üdv: Klavi Közben Watt már tájékoztatott a PIC-es fórumban, hogy ezek mikrokontrollerek és nem PIC-ec. Én meg csak átmásoltam a postom. Guglizok egyet, köszi! |
Szerző: | klavi [ csüt. júl. 13, 2006 12:26 ] |
Hozzászólás témája: | |
albinolynx írta: ... Adott három PIC: AT89C2051, AT89C1051, AT89C4051 ... Ezzel elárultad magad, látszik hogy fogalomzavarban szendvedsz... A Microchip gyárt PIC mikrokontrollereket, az ATMEL pedig (többek között) AVR és 8051 alapú kontrollereket... (Az általad említett uC-k 8051 alapúak) A Google-ba írd be: "AT89C2051 programozó", és már válogathatsz is a jobbnál jobb kapcsolásokban... Üdv: Klavi |
Szerző: | albinolynx [ csüt. júl. 13, 2006 11:31 ] |
Hozzászólás témája: | |
Az előbb rossz topikba küldtem a postot. Egy az egyben átmásolom ide: Sziasztok! Bocsánat, hogy csak így egyszerűen bepofátlankodom a topikba! Adott három PIC: AT89C2051, AT89C1051, AT89C4051 Van egy .ASM, .BIN, .HEX file-om. Az egyik PIC-be amelyiket sikerül beszerezni, kellene beleégetnem a programot. Szeretném a segítségeteket kérni egy olyan programozó kiválasztásában, ami egyszerű, könnyen utánépíthető (com portra). Illetve ajánljatok windowsos programot, amivel végre tudom hajtani a beégetést. Sajnálom, hogy csak ilyen felületesen érek rá foglalkozni a témával! Nagyon kevés a szabadidőm. |
Szerző: | .watt [ csüt. júl. 13, 2006 10:29 ] |
Hozzászólás témája: | |
up |
Szerző: | MotoHacker [ vas. jún. 04, 2006 20:17 ] |
Hozzászólás témája: | |
Keresni kell vadul.Cben progizható kontrollerről van szó,és léteznie kell igen primitív ascii C megvalósításnak.(pl a mikrokontrolleren futó mini linuxokban..csakhát aki egy kernelben eligazodik..) De a serial-tcp,mint olyan,alapból egyáltalán nem olyan bonyolult,szinte egy billentyűzet illesztése komolyabb. Pl egyáltalán nincs semmiféle "kézfogás" vagy időzítés a nagy hibatűrés miatt,nincs "időkorlát",és nem köteles a net-en lógó végpont a csomagokat "átvenni" vagy valamiképp mindet nyugtázni.Ami elvész,az elveszett(fogadó nem reagál rá),ismételgetik,vagy nem,előbb utóbb hibára fut a tuloldali gép,tehát nem kell szenvedni vele,hogy mi is tudjunk TCP "server" lenni(lehessen a portjainkra kapcsolódni),elég ha csak hostként tudunk a legegyszerűbb csomagokra reagálni egyetlen TCP kapcsolat erejéig,egyetlen tuloldali géppel,egyetlen porton. |
Szerző: | solder123 [ szomb. jún. 03, 2006 21:38 ] |
Hozzászólás témája: | gprs net |
Hello! Én is akartam ilyet csinálni, s töb megoldás is van a könnyűtől a nagyon nehézig 1. megoldás: lehet venni belső IP stack-kel rendelkező gprs modemet kb 25-30 ezer forintért 2. Rendelsz egy 4000 Forintos IC-t ami megoldja az IP stacket, ilyet akartam én is rendelni de valami arab országból jött volna, s 8 ezer forint szállítási költséggel a nevére nem emlékszem de ha gondolod megkeresem... 3. Te magad leprogramozod a PPP protokollt, hisz ezzel mennek a gprs netek... solder |
Szerző: | HiMen [ pén. jún. 02, 2006 13:53 ] |
Hozzászólás témája: | ATmel Net |
Én ATMega32-vel dolgoztam eddig. Szerintetek hogyan lehetne megoldani, hogy mobil telefon hálóztaton keresztül az interneten kommunikáljon egy atmel. Gondolom valami gprs modul kellene. A pannonnak van olyan kártyája, ami nem előfizetéses és csak az adatforgalomért kell fizetni. Nos egy szerveren megjelenő file-t kellene olvasnia a kontrollernek, amiben paracsokat adok és azt végrehajtja. Az eredményeket pedig egy másik file-ba felteszi a szerverre. Tehát egyszerű ftp-t kellene megoldania. Hogy leghetne megoldani? |
Szerző: | Pepita [ hétf. máj. 29, 2006 19:40 ] |
Hozzászólás témája: | |
Nagyon köszönöm,már működik is a Tiny. Üdv:Pepita |
Szerző: | TavIR [ szomb. máj. 27, 2006 7:16 ] |
Hozzászólás témája: | |
Tiny és a 90S közt a következőt kell beállítani: DivClock/8 - Disable Órajelet kell még kiválasztani. Felülről a Tiny kompatibilis a 90S2313-l Bascom AVR programozási kézikönyv, minták: http://avr.tavir.hu |
Szerző: | Pepita [ vas. máj. 07, 2006 7:08 ] |
Hozzászólás témája: | |
Sziasztok! 90s2313 helyett szeretnék ATTINY2313-at használni.Tudna valaki segíteni hogyan kell beálítani a Ponyprogot,hogy működjön a dolog? Kezdő vagyok,érthetően kéne,pl melyik bitet mire állítsam,lock1,lock2,ckout,cksel stb. Előre is köszönöm. Üdv:Pepita |
Szerző: | snapscan [ csüt. feb. 09, 2006 11:48 ] |
Hozzászólás témája: | |
Sztem építs sima STK200-as programozót, az mindennel hajlandó együttműködni. szerk: szoftverekre gondoltam |
Szerző: | Sonar-X [ csüt. feb. 09, 2006 11:20 ] |
Hozzászólás témája: | |
Üdv! Tudna nekem segíteni vki. Egy avr programozót szeretnék építeni nézegettem a lancos oldalát egész jó, csak nem igazán értem, hogy mi a különbség az AVR ISP with SI-Prog és az STK200/300 között? csupán ennyi?: You can connect directly to the target system (ISP) through the 10 pin connector, alternatively you can connect a PonyProg adapter card for AVR, AT89S, SPI eeproms, microwire eeproms and feed external power to the device. Esetleg vmi mást? AVR ekbe tájékozatlan vagyok. (egyenlőre) üdv sonar |
Szerző: | .watt [ szer. feb. 01, 2006 17:58 ] |
Hozzászólás témája: | |
Idézet: Az első megszakításnál hogyan mondjam meg, hogy ne növelje a változót? Erre van valamilyen flag? Persze, hogy nincs, de Te majd csinálsz egyet nem? Amúgy jó érzékeled a dolgot. Kicsit trükkös, mert lehet, hogy egy nem is elég, de majd kialakul.. |
Szerző: | Ros-Co. [ szer. feb. 01, 2006 16:05 ] |
Hozzászólás témája: | |
Hopsza, tényleg felcseréltem.... Az első megszakításnál hogyan mondjam meg, hogy ne növelje a változót? Erre van valamilyen flag? No lassan ki is fogom prószálni a dolgot... |
Szerző: | .watt [ szer. feb. 01, 2006 15:54 ] |
Hozzászólás témája: | |
A rajz érthető, de lehet, hogy valamit elnéztél, és egy lehetőséget pedig nem vizsgáltál. Amit elnéztél, az a második képletedben a régi és az új számlálóérték felcserélése. Szerintem a régit kell kivonni: mért_érték = Tszáml - t(régi) + T(új). A t(régi) értékét(vagy akár a [Tszáml - T(régi)] értéket) akkor kell letárolni, amikor a Timer megszakítást okoz. Első megszakításkor még nem kell növelni a megszakításokat számláló változó értékét, csak a másodiktól. És akkor itt van az az előforduló lehetőség amit nem említettél, hogy a mérendő impulzus első fele a t3 kor érkezik, a következő imp. pedig a t6-kor, ami nincs a rajzodon és a második timer túlcsordulás után jönne. Nem kell azt vizsgálni, hogy a t(régi) kisebb, vagy nagyobb a t(új)-hoz képest, mert ez nem jó megközelítés, mert akár lehet nagyobb is. Csak azt kell vizsgálni a 3 különböző lehetőségnél, hogy volt e megszakítás. Ha nem volt: mért_érték = t(új)- t(régi) Ha volt : mért_érték = Tszáml * Timer_Int + (Tszáml - t(régi)) + T(új) Ez azért elegendő, mert ha csak egy megszakítás volt, akkor a Timer_int = 0 (ez számolja az egynél több megszakításokat), és ekkor az első szorzás eredménye is 0, ami nem változtatja az eredményt és a második képleted marad(az is javítva) |
Szerző: | Ros-Co. [ szer. feb. 01, 2006 13:18 ] |
Hozzászólás témája: | |
Köszi! Már jártam ott, de akkor még csak pár mondat volt a leírás. A kütyü tílleg egy kicsit túlegyszerűsít, de legalább hatékonyan használja a proccot... Én is vmi ilyesmit szeretnék. Egy kicsit rajzoltam a számláló kiolvasásával kapcsolatban: Remélem érthető a rajz. Jó az elgondolásom? Amikor akkor jönnek az impulzusaim amikor a számláló inkrementál, akkor csak kivonom a régi értékből az újat. Ha észreveszem, hogy az új érték kisebb mint a régi, akkor a számláló maximális értékéből kivonom az újat, és ahhoz adom a régit. |
Szerző: | .watt [ szer. feb. 01, 2006 6:34 ] |
Hozzászólás témája: | |
Ros-Co Megkerestem neked a motor vezérlő leírását a Lada oldalon. Linkelni nem lehet, így éred el: http://zsiguli.hu/ Ott: Cikkek/Gyújtásrendszerek ez alatt: Gyújtás-elektronikák, teljes vezérlések/Motor Vezérlő Rendszer Működési leirás a gt.racing Motor Vezérlő rendszerhez Ez egy igen nyers megoldás, de az elméleti megközelítésben sok hasznos dolgot lehet olvasni és a program is hozzáférhető! |
Szerző: | MotoHacker [ szer. feb. 01, 2006 1:31 ] |
Hozzászólás témája: | |
RosCo:Mielőtt teljesen szétoffoljuk a topicot Ide less,kedvcsináló,hogy néz ki egy ilyen: http://maskmanoka.tar.hu/ És a cucc: http://www.mskar.org/DME/Motronic911.zip |
Szerző: | MotoHacker [ kedd jan. 31, 2006 23:56 ] |
Hozzászólás témája: | |
Ott sem vesznek fel ihajj mennyiséget pedig(de azt jó helyen)..megpróbálom előásni neked a file-kat.Mivel ezek töréspontok,köztük is van "élet",adott meredekséggel növekszik,csökken,vagy változatlan marad a gyújtás. A mechanikus ketyerének ugye pont 1 vagy 2 "töréspontja" van,a vákuum meg egy rosszul közelítő görbe,valami csúnya parabolaszerű izé. Mégis működnek a mechanikus előgyújtásszabályzók(úgy ahogy).A régi zsigákon még vákuum(terhelésfigyelés) sincs!,nem csoda,hogy zabál mint az állat. Itt inkább a motorra optimalizálni az adatokat lesz kemény. A "3d" muszáj,mert két paraméter van,a terhelés figyelembevétele nélkül pont annyit ér az egész,mint a régi zsiga. De kár túlgondolni,hogy "juj 3d",simán 2 független számítás,ami megadja a végső eredményt,ezért hívják ezt "jellegmezőnek" ,mert szó szerint egy mező,egy 2 dimenziós tömb.A régi elektronikákban egy 128K epromban elfér az egész szóval nem lehet kismillió pont,talán még 64sem. Mert ugye ez már 64*64 adat,és nem csak egy jellegmező van,hanem minimum 2,egy a gyújtásnak,egy a befecskendezés alapidejének. |
Szerző: | Ros-Co. [ kedd jan. 31, 2006 23:35 ] |
Hozzászólás témája: | |
Hm. Az igaz, hogy a mechanikus jószág eléggé lexarja hogy milyen vezérlést adsz neki, de azért az nagyon durva lenne hogy az (500)..10000-es fordulatszám-tartományt cssk 64 részre osztanám. Ha több pont van, akkor meg szerkeszteni elég borzasztó... A 3D görbét még nehezebb kézben tartani, mármit ábrázolás és real-time módosítás ügyében, ezért én minimális pontszámra törekednék, közte interpolációval (persze ezt sem szabad nagyon leegyszerűsíteni) Turbósnál vigyázni kell ám nagy fordulaton is, mert tönkremehet a motor ha rossz helyen kapja a gyújtást. Persze ez akkor áll elő, ha a motor nagyon ki van hegyezve. A felhasználást ismerve nagyon ki lesz hegyezve. A V12 szép jószág lehet, mondjuk ez annyira erős, hogy alapból (elektronika nélkül is) röhögve viszi az autót, és sosem fog tönkremenni. Ha esetleg nem titkosak a táblázatok, szívesen tanulnék belőle, főleg hogy hogyan érdemes ábrázolni, és milyen felbontásban kell tárolni az értékeket. Úgy szeretném, hogy a legtöbb autóhoz felhasználható legyen. (az analóg modul cserélhető lesz) illetve a rengeteg eltérő jeladó-fogszám miatt vszínű hogy programozható előosztót is be ell rakni. Az Eprom nem gond, vagy a belső EEPROM-ot fogom használni, vagy pedig később egy külső SPI buszos flash-t. Ez már ki is van próbálva. |
Szerző: | MotoHacker [ kedd jan. 31, 2006 21:01 ] |
Hozzászólás témája: | |
Gyakorlatilag szinte nincs szükség interpolációra,de két érték közt egy harmadikat egyszerű átlaggal képeznék.(A+B)/2,ahol az osztás egy jobbratolás.Ha negyedelek,akkor ugye a két eredeti érték,meg a köztes,azok közt képzek további 2értéket,már van 3köztes értékem. A motorok alacsony fordulaton nagy nyomatékon kritikusak,amikor pörög "mint az állat",keveset számít,hogy 4500 vagy 4510 a fordulatszám. Tehát inkább nem lineárisan kellene az értékeket elosztani,persze ez sem egyszerű és nagyban függ a motortól. (én a V12-t extrém esetben pörgetem 2500-3000 felett nyilván,99%ban 2000 alatt üzemel). A táblázat viszont 2dimenziós,vákuum és röppsúly,tehát terhelés és fordulat!! Vannak ilyen táblázataim még az ősidőből,de nagyobb motorokra csak.Van valahol egy dosos pascal progi is,ami ezeket a "domborzatokat" 3D grafikonra rajzolja. Gyári vezérlések sima Epromban tartják az értékeket,újabban eepromban,egy 64k eeprom is valami komoly pénz..kuka alján fexik:) Annyit még lehet,hogy az értéket primitíven tömöríteni,mint az adpcm,tehát egymás utáni értékek diferenciáját nézni.A fordulat mechanikai okokból nem változhat ms-ek alatt,mindig sorban kell az értékeket olvasni amúgyis. |
Szerző: | Ros-Co. [ kedd jan. 31, 2006 19:16 ] |
Hozzászólás témája: | |
Bocs, igazad van! A zárásszög nem egy fix idő, hanem szög érték... És ráadásul egy adott fordulat felett meg kell növelni, hogy a trafó elegendően fel tudjon mágneseződni. Köszönöm hogy ilyen sokat segítetek, talán lesz ebből valami... Egy ős-példány még írtam régebben, pascal alatt, az az impulzusok frekijét már tudta mérni, és késleltetni is. De itt muszáj a timereket használni, nincs akkora nyers erő mint pl. egy 386-osban A gyújtáshoz tartozik egy táblázat. Első körben egy 64*8 bitesre gondoltam. Tehát az 500...10000-es fordulattartományt ennyi részre osztanám (nem tudom elég-e) és a köztes részeket lineáris interpolációval számolja. A táblázatot célszerűen az EEPROM-ban akarom letárolni. A lineáris interpolációra egy baráto ajánlott egy jó algoritmust, ami megkerüli az osztás használatát... |
Szerző: | .watt [ kedd jan. 31, 2006 16:48 ] |
Hozzászólás témája: | |
Idézet: Lehet hogy nem volt teljesen érthető, Ha nem, akkor sem benned van a hiba! A zárásszög kérdést nem látom át teljesen, de valamit sejtek. Egyébként könnyebb vezérelni, mint mérni, ezt már biztosan látom... Idézet: Viszont a kimenet megint problémás, mert egy nullponthoz (nevezzük felső holtpontnak -ez persze nem igaz-) képest kellene késleltetni a kimenő impulzust. Erre egy másik 16 bites timert gondoltam felhasználni a célra. Az ATMEGA128-nak 2 db 8 bites és 2 db 16 bites timer-je van, ez jó lesz sztem. Persze ez nagyobb proccot feltételez, de ez abszolút nem gond, van belőle jópár. Ez világos. Nem kell ám ide olyan nagy erő. Még egy 16F-es is elvinné. Láttam teljes megoldást a Lada baráti kör oldalon, ami 16F-el lett megépítve és allítólag működik. Az vákumot, injectort, gyújtást, lambdát stb. is vezérel... Nem is hinné az ember, mikre képesek ezek az IC-k! Még én is sokszor meglepődöm(mint jelenlegi projectemben is), hogy micsoda mennyiségű számítást tudnak gyakorlatilag egyidőben végrehajtani. Idézet: A késleletetést úgy gondoltam megoldani, hogy a számláló teker felfelé, és mindig nullázom, amikor bejön az impulzus, és az "output compare" regiszter pedig megkapja a késleltetéshez szükséges értéket. Szerintem ez is okés.. Idézet: Az a bajom, hogy a gyújtáshoz tartozik egy zárásszög is, tehát az lenne a jobb, ha egy nagyjából fix szélességű impulzust lehetne időben ide-oda tologatni, ez viszont két komparálási értéket feltételez. No ez az amit nem értek teljesen, mert a zárásszög az egy arány. A teljes periódus idő viszont egyre csökken a fordulattal. |
Szerző: | Ros-Co. [ kedd jan. 31, 2006 13:12 ] |
Hozzászólás témája: | |
Igen, pont azért tetszik, mert nem tudom, hogy még mit fog csinálni a procc, és a mérendő jel pontossága alapvetően fontos, különben minek csinálnám a gyújtásvezérlőt. Végül is hasonlót szeretnék,a mi te csináltál, csak te méred az impulzusokat, és egyéb paramétereket, emellett nekem még a kimeneten időzíteni is kell. Viszont a kimenet megint problémás, mert egy nullponthoz (nevezzük felső holtpontnak -ez persze nem igaz-) képest kellene késleltetni a kimenő impulzust. Erre egy másik 16 bites timert gondoltam felhasználni a célra. Az ATMEGA128-nak 2 db 8 bites és 2 db 16 bites timer-je van, ez jó lesz sztem. Persze ez nagyobb proccot feltételez, de ez abszolút nem gond, van belőle jópár. A késleletetést úgy gondoltam megoldani, hogy a számláló teker felfelé, és mindig nullázom, amikor bejön az impulzus, és az "output compare" regiszter pedig megkapja a késleltetéshez szükséges értéket. Az a bajom, hogy a gyújtáshoz tartozik egy zárásszög is, tehát az lenne a jobb, ha egy nagyjából fix szélességű impulzust lehetne időben ide-oda tologatni, ez viszont két komparálási értéket feltételez. Ezt úgy gondoltam átrhidalni, hogy amikor megtörtént az első komparálás, hozzáadok még egy fix értéket a regiszter értékéhez, így újra meg tud hívódni az ocr megszakítás. Lehet hogy nem volt teljesen érthető, de én még csak erősen ismerkedem az uC-jellegű programozással... |
Szerző: | .watt [ kedd jan. 31, 2006 11:54 ] |
Hozzászólás témája: | |
Idézet: Úgy nézem van ICP nevű bemenete az AVR-nek. (input capture) Igen ez az lesz. Idézet: A 65536-tal való szorzás gondolom megoldható eltolással, ami jóval eccerűbb... Sőt, mivel kerek bináris érték, ezért csak egy bájtba bele kell tenni a *Timer megszakításban számlált értéket és U bájtnak értelmezni, majd hozzácsapni alulra H-t és a L-t, ami a mérésből adódik és kész az érték 3 bájton. Gyakorlatilag nem végeztünk matematikai műveletet. Persze a H és L bájtokat ki kell előtte számolni, ami vagy összeadásból, vagy kivonásból fog születni(ez a megszakítások és a mérendő impulzusok időbeli elhelyezkedésétől fog függni) Idézet: Jó az ötlet, én nulláztam volna. Először én is ezt gondoltam jónak, de amikor más megszakítás lekezelése közben jött egy mérendő impulzus, akkor késtem a nullázással, ami hibás mérést okozott attól függően, hogy mennyire volt leterhelve a megszkítás kiszolgálással a PIC. Persze ennek is van megoldása, mert nem nullázni kell, hanem hozzáadni. De ekkor is lehetnek csúszások és egy csomót kell kalkulálni, hogy a hozzáadás közben, ill. az addig vezető programlépések közben mennyit számlált volna a Timer. Szóval ez felejtős. A mostani megoldáskor a megszakításkor harveresen tárolódik a Timer értéke, amit le kell tárolni és a következő értékhez képest számolni vele. Ekkor mindegy, hogy mikor kezeljük le a megszakítást, csak egy a lényeg, hogy a következő megszakítás előtt. Ez persze majdnem mindig teljesül, mert ha nem akkor azt a jelet nem lehet megmérni, vagy másnak a kárára lehet megmérni. |
Szerző: | Ros-Co. [ kedd jan. 31, 2006 11:29 ] |
Hozzászólás témája: | |
Hmm. Jó az ötlet, én nulláztam volna. De így valószínű gyorsabb. Úgy nézem van ICP nevű bemenete az AVR-nek. (input capture) A 65536-tal való szorzás gondolom megoldható eltolással, ami jóval eccerűbb... |
Szerző: | .watt [ kedd jan. 31, 2006 9:36 ] |
Hozzászólás témája: | |
Idézet: Ehhez szükségeltetik első körben egy kb. 10...350 Hz környéki jel pontos frekvenciájának ill/vagy periódusidejének mérése. Arra gondoltam, hogy a 16 bites számlálót használom. Az impulzus fel vagy lefutó élére megszakításból megállítom a számlálót, kiolvasom, majd nullázom, és így tovább. Az a baj, hogy elég nagy a pontosságbeli különbség az alsó és a felső freki között, mivel Van erre valami megoldás? Arra gondoltam hogy a számláló előosztóját állítgatom. Jól gondoltam? Nem pontosan értem cd334 elképzelését, de ez nem jelenti azt, hogy nem jó, ill. azt, hogy én most nem ugyanazt írom le. Ugyan én PIC-ben oldottam meg több impulzus mérését, de az elv ugyanaz. A jelet formázni-illeszteni kell és ha létezik a PIC-hez hasonló CCPx bemenete az ATM-nek, akkor arra kell vinni. Ez megszakításkor a hozzá rendelt számláló tartalmát beletölti a CCPx regisztereibe, ezért pontos. A CCPx-hez rendelt Timer bemeneti frekvenciáját úgy kell meghatározni, hogy a megmérendő legkisebb időt is megfelelő felbontással tudja mérni. Ezt a felontást, azaz pontosságot mi határozzuk meg. Ahogy írtad, ez olyan gondot vet fel, hogy hasszabb idők esetén a Timer túlcsordul, akár többször is. Erre a megoldás az, hogy a Timer is okozhat megszakítást túlcsorduláskor, amikor is egy számlálót növelünk. Kiértékelésnél(CCPx megszakításkor) ezzel a számlált értékkel szorzunk(Timer szélességével, 16bit esetén 65536-al), majd hozzáadjuk a bemért maradékot. De hogy ne okozzon mérési hibát a megszakítás lekezelés késlekedése, a Timert soha nem kell lenullázni, hanem a különbségét kell venni az előző és a most mért Timer érték között. Itt bejön, hogy mi van akkor, ha éppen a túlcsordulás előtt és a túlcsordulás után jön a megszakító jel, de ezt már meghagyom nektek.. |
Szerző: | cd334 [ kedd jan. 31, 2006 9:19 ] |
Hozzászólás témája: | |
Ros-Co. írta: Az Atmel oldaláról letölthető a FLIP nevű égető szoftver. Mit tudni erről? Ha annyira "flexibilis" ahogy a neve mutatja, miért csak a 8051 alapú kontrollereket tudja? Állítólag ezzel lehet égetni az AT89C51SND (MP3 dekóderes) kontrollert... (remélem jól írtam a nevét, de úgy is tudjátok miről van szó. Sajnos sem a FLIP-et sem a AT89C51SND-t nem ismerem, így érdemben nem tudok válaszolni rá. Ros-Co.1 írta: cd334: Szeretnék atmega 8 vagy 16-os kontrollerrel gyújtást vezérelni. Ehhez szükségeltetik első körben egy kb. 10...350 Hz környéki jel pontos frekvenciájának ill/vagy periódusidejének mérése. Arra gondoltam, hogy a 16 bites számlálót használom. Az impulzus fel vagy lefutó élére megszakításból megállítom a számlálót, kiolvasom, majd nullázom, és így tovább. Az a baj, hogy elég nagy a pontosságbeli különbség az alsó és a felső freki között, mivel Van erre valami megoldás? Arra gondoltam hogy a számláló előosztóját állítgatom. Jól gondoltam? Hány mexakítást lehet egyszerre használni? Mert valószínűleg más folyamatokat is időzíteni kell majd. Jó az ötlet. Én építenék egy kis smitt-triggert és a felfutó élek közti időt számolnám. Ugye a számlálók proci órajelével vagy bizonyos leosztott órajelről járathatóak. Járathatod nagy órejelről, de akkor számolnod kell, hogy hányszor futott körbe a számláló. Erre van interrupt. Bármennyi megszakítást használhatsz. Nincs korlátozva. A számlálónál beizzítanám a tulcsordulást figyelő interruptot, és amikor tulcsordul megnövelnék egy változót. Én az egyik int lábra raknám a smitt-triggerről jövő bemenetet, majd mikor bejön egy int(felfutó vagy lefutó élre), akkor indítanám el a számlálót és a következő interruptnál kiolvasnám a változót és a számlálót és ebből számolnám ki a frekvenciát. A számlálónál az előosztót oda állítod, ahol Neked kényelmes. Én hasonló módszerrel csináltam meg a gitárhangolómat. Az átlagolás sokat segít, lecsökkenti a mérési hibát. |
Szerző: | Ros-Co. [ hétf. jan. 30, 2006 16:20 ] |
Hozzászólás témája: | |
Az átlagolás segít vaklamelyest? Tehát ha több impulzus periódusidejének átlagát számolnám? Talán akkor pontosabb lenne... |
Szerző: | cd334 [ hétf. jan. 30, 2006 14:43 ] |
Hozzászólás témája: | |
Ros-Co. írta: Az Atmel oldaláról letölthető a FLIP nevű égető szoftver. Mit tudni erről? Ha annyira "flexibilis" ahogy a neve mutatja, miért csak a 8051 alapú kontrollereket tudja? Állítólag ezzel lehet égetni az AT89C51SND (MP3 dekóderes) kontrollert... (remélem jól írtam a nevét, de úgy is tudjátok miről van szó. Sajnos sem a FLIP-et sem a AT89C51SND-t nem ismerem, így érdemben nem tudok válaszolni rá. Ros-Co.1 írta: cd334: Szeretnék atmega 8 vagy 16-os kontrollerrel gyújtást vezérelni. Ehhez szükségeltetik első körben egy kb. 10...350 Hz környéki jel pontos frekvenciájának ill/vagy periódusidejének mérése. Arra gondoltam, hogy a 16 bites számlálót használom. Az impulzus fel vagy lefutó élére megszakításból megállítom a számlálót, kiolvasom, majd nullázom, és így tovább. Az a baj, hogy elég nagy a pontosságbeli különbség az alsó és a felső freki között, mivel Van erre valami megoldás? Arra gondoltam hogy a számláló előosztóját állítgatom. Jól gondoltam? Hány mexakítást lehet egyszerre használni? Mert valószínűleg más folyamatokat is időzíteni kell majd. Én építenék egy kis smitt-triggert és a felfutó élek közti időt számolnám. Kiegészített válasz később. |
Szerző: | Ros-Co. [ pén. jan. 27, 2006 23:22 ] |
Hozzászólás témája: | |
Az Atmel oldaláról letölthető a FLIP nevű égető szoftver. Mit tudni erről? Ha annyira "flexibilis" ahogy a neve mutatja, miért csak a 8051 alapú kontrollereket tudja? Állítólag ezzel lehet égetni az AT89C51SND (MP3 dekóderes) kontrollert... (remélem jól írtam a nevét, de úgy is tudjátok miről van szó. cd334: Szeretnék atmega 8 vagy 16-os kontrollerrel gyújtást vezérelni. Ehhez szükségeltetik első körben egy kb. 10...350 Hz környéki jel pontos frekvenciájának ill/vagy periódusidejének mérése. Arra gondoltam, hogy a 16 bites számlálót használom. Az impulzus fel vagy lefutó élére megszakításból megállítom a számlálót, kiolvasom, majd nullázom, és így tovább. Az a baj, hogy elég nagy a pontosságbeli különbség az alsó és a felső freki között, mivel Van erre valami megoldás? Arra gondoltam hogy a számláló előosztóját állítgatom. Jól gondoltam? Hány mexakítást lehet egyszerre használni? Mert valószínűleg más folyamatokat is időzíteni kell majd. |
Szerző: | cd334 [ pén. jan. 27, 2006 10:27 ] |
Hozzászólás témája: | WinAVR |
Sziasztok! Egy kis up! Megjelent a régen várt WinAVR új verziója! Letölthető a http://sourceforge.net/projects/winavr oldalról. Ez a verzió már támogatja vágre az ATMega640, ATMega1280, ATMega1281 AVR-ket, ezen felül rengeteg ujdonság van benne. Megjelent az AVRStudio 4.12(build 460)-hoz az SP1-es service pack(build 462). Letölthető az http://www.atmel.com/dyn/products/tools ... ol_id=2725 oldalról. Ha bármi kérdésetek van bátran! |
Szerző: | HA5DZS [ pén. jan. 06, 2006 21:22 ] |
Hozzászólás témája: | |
Hi all! Hol lehet kapni AT Tiny13-at? elkészült az első szoftverem, ki kéne próbálni. Illetve van még egy gond: A BASCOMban ha gyártok egy forráskódot, és le szeretném ellenőrizni, mindig kírja: File not found. Ezt fordításnál és szimulációnál is kírja. Mi lehet a gond? (mert piszokul nem írja ki miért fáj megint a hasa...) |
Szerző: | Csaka [ csüt. dec. 22, 2005 11:35 ] |
Hozzászólás témája: | |
cd334 írta: Idézet: Build started 21.12.2005 at 18:00:55 avr-gcc -mmcu=attiny2313 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,motor.o,-MF,dep/motor.o.d -c ../motor.c avr-gcc -mmcu=attiny2313 motor.o -o motor.elf C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/lib/crttn2313.o(.init9+0x0): undefined reference to `main' make: *** [motor.elf] Error 1 Build failed with 1 errors and 0 warnings... Akkor most mit próbáltál lefordítani a gcc fordítóval? Ha megvan c-ben is azt jobban szeretném, mert abban sokkal otthonosabban vagyok. De ha ez egy asm program, akkor nem fog műkodni vele. Amit küldtél kigyomláltam visszaküldtem. A az avr.inc legyen a projekt mappában motor.asm-mel együtt, úgy próbáld meg lefordítani. Köszike! cd334 sikerült nekem is. nagyon köszönöm nektek a segítséget! Üdv: Csaba |
Szerző: | cd334 [ csüt. dec. 22, 2005 11:15 ] |
Hozzászólás témája: | |
Idézet: Build started 21.12.2005 at 18:00:55 avr-gcc -mmcu=attiny2313 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,motor.o,-MF,dep/motor.o.d -c ../motor.c avr-gcc -mmcu=attiny2313 motor.o -o motor.elf C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/lib/crttn2313.o(.init9+0x0): undefined reference to `main' make: *** [motor.elf] Error 1 Build failed with 1 errors and 0 warnings... Akkor most mit próbáltál lefordítani a gcc fordítóval? Ha megvan c-ben is azt jobban szeretném, mert abban sokkal otthonosabban vagyok. De ha ez egy asm program, akkor nem fog műkodni vele. Amit küldtél kigyomláltam visszaküldtem. A az avr.inc legyen a projekt mappában motor.asm-mel együtt, úgy próbáld meg lefordítani. |
Szerző: | NickE [ csüt. dec. 22, 2005 10:33 ] |
Hozzászólás témája: | |
Egyben jó. |
Oldal: 5 / 6 | Időzóna: UTC + 1 óra |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |