Köridő-számlaló (1/1000 sec felbontással!)

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: GPeti »

Egy modell körszámlálásához kellene készítenem egy részidőket is mérő stopper órát. Az elvárás 1/1000 másodperc felbontás (a stopper nyomógombja kézi mert gyakorlott ember ilyen pontossággal nyomja meg a gombot állítólag).
Közben egy kijelzőre is írni kellene a részidőket a sebességet (ismert a kör átmérője), a végén sd kártyára az időpont részeredmények, sebesség stb,
a mérés közben mikrofonnal még mérni kell egy kétütemű motor fordulatszámát is a doppler hatást is figyelembe véve de ez nem baj mert átlagolódik, meg amúgy is kell a fordulatról átlag, a modell kb 300km/h sebességgel száguld.

Nem tudom meg tudom-e csinálni...
A fő gond az ezred másodperc, szerintem század is elég lenne, meg a 2x16 HD... kijelzők lassúsága.
Erről van szó:
http://www.youtube.com/watch?v=4vAw1CC4A3g
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: óra készítése

Hozzászólás Szerző: Robert »

HD kijelző:
- tedd ki külön videóchipre. A holmira meg I2C-n vagy SPI-n át teszed ki a kiirandó adatot. Ő meg ellassulgathat a kijelzővel....
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: Robert »

Az időmérés: timerel + Interrupttal.
Bár az Arduino nyelv ehhez halovány lesz.
Nehéz a hardware irányába így lenyúlni. Bascom, C vagy ASM javasolt (Én a Bascomra voksolok :P )
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: GPeti »

A kijelzőre a HD44780 csippet értettem. Bascom-ot használnék természetesen. Az 1/1000s nem gond mert lehet kapni 4.096MHz kristályt amivel pont le tudom osztani az ezred másodpercet. A megszakításban csak egy változó inkrementálódna meg egy jelzőbit, a gomb nyomás is INT megszakításra menne igaz itt már a prell feldolgozás is érdekes. A gond az lehet amiben már többször belefutottam hogy ha megszakítás jön akkor megbolondul a kijelző, ilyenkor ki szoktam kapcsolni írás alatt a megszakításokat de most nem lehet, természetesen a kijelzőt elég 0,2 másodpercenkét frissíteni de akkor sem lehet.
Lehet úgy kellene hogy külön kijelző meghajtó Attiny, a fő kontrollerrel lenne összekötve valahogy pl. spi, ha a megszakítások miatt nem történik gubanc akkor jó lehet.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: Robert »

Tiny esélytelen másodlagos vezérlőnek. SPI ill. I2C bonyolult. Mega8 javasolt.

Ilyen sebességnél prellkezelést felejtsd el. Optikai kapu vagy Hall elem. Sőt a bemenetre még egy Smitt-Triggeres kapu (74HC14 ?)
Mennyi is a prell ideje? 5-10 ms? - na innentől esélytelen....

Kvarcból a legnagyobbat, hogy legyen erőforrásod! Azaz 16 vagy 20 MHz! 1msec alatt 1 MHz : 1000 ASM utasítás! Ha INT van: 25 v. 50 órajel a ki/belépés.
SPI sebessége: órajel/4!
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: GPeti »

Most sikerült elkezdenem a projektet, a kijelző meghajtása a chipcad által gyártott PIC es serial LCD konverter, azért esett a választás az I2C kommunikációra mert megszakítás a 4.096MHz kristállyal elvileg 500us-onként van viszont ez alatt az I2C jel "kifagy" és onnan folytatódik ahol előtte, uart esetén természetesen ez nem működik.
A gomb prell mentesítését úgy sikerült megoldani hogy egy váltókapcsolós gomb van, ez egy NAND kapukból felépített RS flip-flop-ot vált át, ez nélkül egy kattintás 10-20 impulzus is volt, de nem használhatok ide még waitms 1 se.

A másik nagy kérdés hogy milyen Atmegát válasszak, ugyanis sd kártyára kell a végén kimenteni az adatokat, elvileg egy 8-16kb kontroller is elég lenne de az AVR DOS miatt kell a sok RAM ami csak nagyobb kontrollerekben van, mivel DIL tokkal készülne így ATMEGA1284P jöhet számításba de azt nehéz beszerezni, viszont ATMEGA8515-ből van éppen elég (hátha belefér) így az az ötletem támadt hogy külső RAM memóriát használnék.
Mivel erről nem sok leírás van meg még nem is próbáltam így nem tudom működhet-e a dolog, viszont a RAM meg a74hc573 sok helyet elfoglal.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: Robert »

AVRDOS: 1k2 elég.
Így ATMega644P, ATMega1284P.

Prellmentesítésre van egyszerűbb megoldás is:
- megnézed: incr ertek else decr ertek min:0, max:5
- fut a prg fő do-loop
- ránézel megint.
Ha gomb=0 - nincs nyomva, ha gomb=5 - nyomva.
Nincs külső fél marok áramkör...

ATMega1284P ill 644P: http://shop.tavir.hu/product_info.php/c ... p-tok-p-59
De szűken a Mega32-be is beleférsz...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: kapu48 »

:mrgreen: :roll: :lol:
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: csabeszq »

GPeti, az UART is hardverből megy AVR alatt, beraksz egy bájtot egy regiszterbe, ami a túloldalon megérkezik. Küldésnél nem is lehet baj az interruptokkal, fogadásnál lehet probléma, ha túl sokáig vár egy interrupt és elvesznek az adatok. A flow control arra lett kitalálva, hogy ne vesszenek el. Minden mindenhogy megoldható, a megfelelő csatorna kiválasztása feladattól függ.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: Robert »

Sőt: config serialin - még buffereli is a bejövőt! M32: 1 byte a HW buffer, M644/M1284: 3 byte
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: csabeszq »

A megfelelő kommunikáció kiválasztásánál a komponensek egymástól mért távolsága meghatározó.

TWI - (I2C = Inter IC), 1-2m-en belüli kommunikáció IC-k között. Pozitív szint csak felhúzóellenásokkal van, open collectoros, ami a távolságot igencsak leszűkíti. Annyira persze nem tragikus, mert a Commodore 64 floppyja "öregapám I2C"-jeként kommunikált, nem is volt probléma vele, amíg csak két eszköz csüngött rajta, 1m-en belül. Mindenesetre a szakemberek már akkortájt sem javasolták 5-6 eszköz láncrafűzését.

SPI - szerintem kicsit messzebbre elmegy, mert nem open collectoros és van aktív logikai 1-es.

USB - max 2m, utána ismétlő kell hozzá, sajnos a kisebb AVR-ek nem támogatják, nincs olyan DIP-es AVR, ami hardverből tolná az USB-t (PIC van).

UART - akár kilométeres távolságig is, ha van időd kivárni. A vezeték hossza és az átviteli sebesség fordítottan arányos egymással

Ethernet - gyors kommunikáció akár kontinensek között is, AVR alatt a használata egy kissé körülményes.

Nálam a terepasztal a számítógéppel 5m-es kábellel van összekötve: vettem egy soros portot a gépbe és 19200 bauddal küldöm az adatokat.
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: Köridő-számlaló (1/1000 sec felbontással!)

Hozzászólás Szerző: GPeti »

Köszönöm a segítséget most az i2c-t írom át soros portra mert így tényleg működik, egyszerűbb meg ami a legfontosabb hogy a chipcad-es soros modul csak az rs232 módban működik jól, i2c nél valamiért nem jó, vagy bugos, vagy nincs jól leírva hogyan kell vagy én vagyok béna de így már nem is érdekes.


Hogy dip tokban nincs usb avr az nem baj, mert vagy rajzolok nyákot vagy az ebay ről pár - ért van bármilyen dip re konvertáló panel.
Válasz küldése