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 :lol:

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 :D
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!
A mikrokontroller egy gyűjtőnév a memóriával, perifériákkal, stb. egy chipbe épített processzorokra. Ezen belül van a PIC, AVR, ARM, 8051, stb.

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:
Kép

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 :wink:
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. :?: :idea:

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.

8)



Köszike!

cd334 sikerült nekem is. nagyon köszönöm nektek a segítséget!

Üdv: Csaba :P

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.

8)

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/