HobbyCNC fórum
FTP tárhely: http://cnctar.hobbycnc.hu v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

Új regisztráció / Átregisztráció a régi fórumról
    
   


Az AVR és lehetőségei...

Rekalaca kezeli! :))

 

Időrend:
Oldal 15 / 25 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   11  12  13  14  15  16  17  18  19   Következő ►  Utolsó ►|

  Fórum főoldal  |  A lap aljára

elektron | 15859    2010-09-08 20:30:00 [519]

Négyzetrácsos interpoláció

Előzmény: elektron, 2010-09-08 20:18:00 [515]


KisKZ | 6456    2010-09-08 20:24:00 [518]

Kérdés:
a 4 bájton elfér 3 mondjuk ezred pontosságú koordniáta?

Előzmény: elektron, 2010-09-08 20:06:00 [508]


KisKZ | 6456    2010-09-08 20:21:00 [517]

és hogyan csinálnád?

Előzmény: elektron, 2010-09-08 20:18:00 [515]


KisKZ | 6456    2010-09-08 20:20:00 [516]

Akkor?
Mindenféle későbbi tárhelyhatár elkerülése érdekében nem lenne érdemesebb abban gondolkodni?

Most ne gondolkodjunk költségeken!

Előzmény: elektron, 2010-09-08 20:17:00 [513]


elektron | 15859    2010-09-08 20:18:00 [515]

Ha egyenlő közönként vannak a pontok, akkor nem túl nehéz megtalálni melyik pont hoz honnan kell kinézni a szomszédokat, amikből interpolálni kell.

Előzmény: KisKZ, 2010-09-08 20:16:00 [511]

KisKZ | 6456    2010-09-08 20:18:00 [514]

A feladat lenn van elektron!
Kérlek ne hagyd abba! Folytasd a megoldását!
Ha kérdés, kétség van csak kérdezz vagy szólj!

Előzmény: elektron, 2010-09-08 20:06:00 [508]


elektron | 15859    2010-09-08 20:17:00 [513]

Dehogy, csak hülyültem LZ irányába.

Előzmény: KisKZ, 2010-09-08 20:16:00 [512]


KisKZ | 6456    2010-09-08 20:16:00 [512]

Az SDRAM elérése miatt kellene a magasabb számítási teljesítmény?

Előzmény: elektron, 2010-09-08 20:13:00 [510]


KisKZ | 6456    2010-09-08 20:16:00 [511]

Hajrá Srácok!!!!
A mintavételi pontok egyenlő közönként lesznek!
A mintavételezés sűrűségének a felső határát a végén el lehet dönteni.
Persze ha ezen a vonalon futunk amit Te most mondasz.

Mellette Hátha LZ is beszáll a maga bő tárhelyes megoldásával, párhuzamosan.

Előzmény: elektron, 2010-09-08 20:06:00 [508]


elektron | 15859    2010-09-08 20:13:00 [510]

Még egy 80487-est is ajánljál mellé, akkor még számolni is gyorsan fog.

Előzmény: LZ, 2010-09-08 20:10:00 [509]


LZ | 1538    2010-09-08 20:10:00 [509]

XMEGA mellé egy 8Mbos SDRAM. Oda azért sok koordináta belefér. )

Előzmény: KisKZ, 2010-09-08 19:46:00 [507]


elektron | 15859    2010-09-08 20:06:00 [508]

Az 50*vagy 4 byte-on elfér, az 200 byte, az nem sok. Annyi RAM-ban elfér, 1k RAM van a mega8-ban is. Bele egy tömbbe, aztán számolhatsz, persze attól is függ hogy egyenlő közökben vannak e a pontok, mert ha nem akkor azt is tárolni kell nyilván., meg akkor a keresés is lassabb.

Előzmény: KisKZ, 2010-09-08 19:46:00 [507]


KisKZ | 6456    2010-09-08 19:46:00 [507]

Hajráá!!!
Ne hagyd abba!
Tessék gondolkodni!!
Mnden munka esetében más lehet a szkennelt felület. Igy gondolkodj!

Mondjuk legyen 5x10 pont most a digitalizálás! Vagyis ötven pont 3 koordinátáját kell eltárolni és elérni bármikor.

Hogy oldanád meg?

Utána ezekkel persze majd számolgatni kell!

Előzmény: elektron, 2010-09-08 19:29:00 [506]


elektron | 15859    2010-09-08 19:29:00 [506]

No persze lehet RAM-ot is csinálni más IC-kel, meg 8515-ös AVR-rel is pl.

Előzmény: elektron, 2010-09-08 19:28:00 [505]


elektron | 15859    2010-09-08 19:28:00 [505]

Ha egyféle dologhoz kell adatokat tárolni, akkor a flash ROM-jában ahol a kód is van ott lehet tárolni koordinátákat, de ha ez változó adat, akkor a RAM-ban kell, vagy esetleg EEPROMban külön IC ben is lehet, ha nem akarod 10000000 szor változtatni, abba tárolható pl 32kByte is, és újra lehet írni több 10 ezerszer pl. Ilyen határok vannak mondjuk.

Előzmény: KisKZ, 2010-09-08 18:55:00 [504]

KisKZ | 6456    2010-09-08 18:55:00 [504]

Most félek hülyeséget fogok mondani.
ATMEGA32?
Esetleg külön tárolóegység? (erről tényleg fogalmam nincs csak kérdezem, de rémlik hogy léteznek ilyen cuccok)

Mekkorák lehetnek a határok? Mondjuk egy ATMEGA32 esetében amit tárolásra tudsz használni? Ha már ilyesmiről van szó és ez segít, érdemes annyit beleölni.

Ha egy 32 kellene a programozáshoz küldök tesztelni, de sajnos csak ideiglenesen tudom nélkülözni, mert nincs mire támasszam a billentyűt ha nincs itthon.

Előzmény: elektron, 2010-09-08 17:20:00 [503]


elektron | 15859    2010-09-08 17:20:00 [503]

Pl. nem sok fér bele memória kicsi tudod.

Előzmény: KisKZ, 2010-09-08 16:37:00 [501]


KisKZ | 6456    2010-09-08 16:38:00 [502]

Mert csak.
Erről legalább halotthalvány fogalmaim vannak, mellette van is belőle, ha kipróbálásra kerülne a sor.

Előzmény: elektron, 2010-09-08 16:23:00 [499]


KisKZ | 6456    2010-09-08 16:37:00 [501]

A tárolóhely miatt kérdezed?

Előzmény: elektron, 2010-09-08 16:24:00 [500]


elektron | 15859    2010-09-08 16:24:00 [500]

Most épp megutáltam a programírást, most rajzolós kedvembe leszek egy ideig igencsak, de ezt csak úgy mondom. Hány pontra gondolsz amúgy ?

Előzmény: elektron, 2010-09-08 16:23:00 [499]


elektron | 15859    2010-09-08 16:23:00 [499]

Mihez kellene ez neked, meg miért pont AVR-rel ?

Előzmény: KisKZ, 2010-09-08 15:18:00 [498]


KisKZ | 6456    2010-09-08 15:18:00 [498]

Elektron! Vagy valaki aki ért a dolgokhoz.
Mekkora meló lenne a következő?

Egy felületet digitalizálva, a pontokat egy mátrixba rendezve (3 koordináta) le kellene tárolni.

Utána 2 beérkező koordináta alapján (X,Y) ebből a mátrixból interpolálni kellene a hozzájuk tartozó harmadik koordináta értéket.

Egyelőre mondjuk a soros porton érkezne először a mátrix szépen egyenként a koordinátasorokkal.
Lehetne akár file-ból is. Ezt le kell tárolni valahogy valahol (nem értek hozzá bocsánat).
Utána ready és érkeznének sorban az X és Y koordináták (most elsőre akár fileból vagy billentyűzetről).
Erre az AVR szépen kikeresné a mátrixban az X-ben és Y-ban legközelebbi pontokat (a négy, az aktuális beérkező koordinátát körülvevő, már a mátrixabn található koordinátahármast), majd az azoktól való távolságnak megfelelően súlyozva a hozzájuk tartozó Z koordinátákat átlagoná és visszadná.
Ezután jelen esetben csak ki kellene valahol jelezni (vagy írni file-ba, ez is jó most egyelőre) ezeket a koordináta hármasokat.

Meg tudja ezt valaki csinálni?


elektron | 15859    2010-08-07 16:16:00 [497]

Arra is gondoltam, hogy úgy is megnézem, de közbe rájöttem a megoldásra, azt jó lett.

Előzmény: sneci, 2010-08-07 14:58:00 [496]


sneci | 1763    2010-08-07 14:58:00 [496]

A ( mindig magasabb precedencia...

Használhatod ilyen esetekre az union-t is, pl.:
typedef union
{
char *c;
uint16_t *u;
} elepnt;

elepnt p;

ch = *p.c++; // hozza a byte-ot és 1-gyel növeli a pointert
u = *p.u++; // hozza az uint-tet és 2-vel növeli a pointert

Előzmény: elektron, 2010-08-07 12:42:00 [495]


elektron | 15859    2010-08-07 12:42:00 [495]

Ha a ) erősebb, mint a +, akkor igen, amúgy 1-et akartam a mutató értékéhez adni, mivel, ha nem castolom át (char*)-ra előbb, akkor az uint16_t miatt a p értéke 2 vel növekszik ha csak simán

p=p+1-et írok, vagy p++; -t mondjuk.

Egy 2 byte-os tömbben akartam byteonként lépkedni, aztán nem akart működni és ez derült ki. Néha meglepődik az ember, nem mindig úgy van amit elsőre gondolunk.

Előzmény: sneci, 2010-08-07 07:44:00 [494]

sneci | 1763    2010-08-07 07:44:00 [494]

2 byte-os mintát keresel byte-onként egy stringben...
Van egy felesleges zárójel párod:
p = (uint16_t*)((char*)p + 1);

Előzmény: elektron, 2010-08-07 00:56:00 [492]


elektron | 15859    2010-08-07 00:58:00 [493]

Bocsi, már én se vagyok pihent agyú.:)

uint16_t * p; // p ilyen típusú


elektron | 15859    2010-08-07 00:56:00 [492]

Pihent agyúaknak fejtörő, ez a sor mit csinál ? C nyelv, AVR pl. vagy más mikroproc is lehet.

uint16_t p; // p ilyen típusú

p=(uint16_t*)(((char*)p)+1);

Én tudom, csak rájöttök e, én ezt valamilyen célból csináltam így. Mi lehetett az ?


elektron | 15859    2010-08-04 13:46:00 [491]

Na köszi már hogy ránéztél, közbe kiderült, hogy nem is ott volt a baj, hanem maga az uart rosszalkodott, egy másféle 8051-es környezetbe tettem bele és hardveres baki volt, tegnap nagy nehezen rájöttem.

Előzmény: LZ, 2010-08-04 09:14:00 [490]


LZ | 1538    2010-08-04 09:14:00 [490]

Első ránézésre jónak tűnik...

Esetleg így:

print("%u", valtozo);

Vagy így:

ltoa(valtozo, str);

Bár az arduinot nem ismerem, ezek azért alap függvények a C nyelvben.

Előzmény: elektron, 2010-08-03 18:43:00 [489]


elektron | 15859    2010-08-03 18:43:00 [489]

Találtam egy bakit az ARDUINO print függvényében, amit a Serial.print()-ben használ a számot alakítja kiírható stringgé. A hiba jelenség, 0-9-ig jó, utána az első számjegyet duplázza, pl. 15-re 115-öt ír ki.

Íme a forrás:

void Print::printNumber(unsigned long n, uint8_t base)
{

unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;

if (n == 0) {
print(Ɔ');
return;
}

while (n > 0) {
buf[i++] = n % base;
n /= base;
}

for (; i > 0; i--)
print((char) (buf[i - 1] < 10 ?
Ɔ' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}

Ti láttok benne valami hibát ?


KisKZ | 6456    2010-07-01 22:33:00 [488]

Pontosan.
Én is ilyen vagyok és nekem nagyon hasznos.
Pl valahol a robatkar topic elján van egy kék színű manipulátor amit csináltam. Annak a mozgatásához pont elég volt.
De ha már komolyan kellett volna érzékelni és vezérelni, nos ahhoz szerintem nem lett volna elég, vagy csak nagyon korlátosan.

Előzmény: LZ, 2010-07-01 22:28:00 [487]


LZ | 1538    2010-07-01 22:28:00 [487]

Igen, igen rákerestem. Kezdőknek viszont kiválló lehet mert elég szájbarágós, példaprogikkal. Talán azoknak lehet jó ahogy nézem, akik nem annyira vannak otthon az elektronikában inkább csak progizni akarnak.

Előzmény: KisKZ, 2010-07-01 22:23:00 [486]


KisKZ | 6456    2010-07-01 22:23:00 [486]

Egy eléggé csupaszított C jellegű környezet.
Alapdolgokra jó. Legalábbis arra a kevésre amit eddig én csináltam velük.

Hasonló a WIRING és a PROCESSING is.
Igy talán ismerősebb lehet. De ha jól gondolom, nem a legcélszerűbb, ha igazán ismered a hardvert és tényleg ki is akarsz hozni belőle valamit.
Tehát amolyan amatőröknek való dolog. Nekem eddig elég volt a kis dolgaimhoz. Persze nem is volt sok ilyen.

Előzmény: LZ, 2010-07-01 22:15:00 [484]


elektron | 15859    2010-07-01 22:16:00 [485]

Van mikor jó, a nagy fordító intelligencia, máskor meg bajt okoz, mert minek konvertálgat, optimalizálgat olyan adatot is, amit én nem akarok, ezért minden fordító szisztémát meg kell ismerni, mindegyiknek vannak útvesztői, mire kiismered, olyan az mint egy jó barátnő, ha hozzászoksz a dilijeihez, nem akarod váltogatni, legalábbis túl sűrűn...

Előzmény: LZ, 2010-07-01 22:07:00 [481]

LZ | 1538    2010-07-01 22:15:00 [484]

ARDUNIO?? Mert ott milyen nyelven történik a programozás??
Ez egy fejlesztőkörnyezet??

Előzmény: KisKZ, 2010-07-01 22:07:00 [480]


elektron | 15859    2010-07-01 22:13:00 [483]

Pont ez az, hogy annak a 328-nak pl. bizonyos részeit más regiszterek használják, ami hiába van megírva abban, mert én nálam a másik hely mondjuk már foglalat más miatt, ezért meg kell előtte nézni, mi a különbség, van e ütközés valahol, ha nincs akkor ne sok gond van vele.

Előzmény: KisKZ, 2010-07-01 22:07:00 [480]


KisKZ | 6456    2010-07-01 22:08:00 [482]

vagy magasabb szintű nyelven??? Már lehet ezt is keverem. Ha igy van bocsánat!

Előzmény: KisKZ, 2010-07-01 22:07:00 [480]


LZ | 1538    2010-07-01 22:07:00 [481]

Mondjuk egy jó fordító ezért szól, hogy mit akarok én egy char változóba 32 bitet tölteni.
Amúgy jó fordító, csak nem tud mindent...

Előzmény: LZ, 2010-07-01 22:06:00 [479]


KisKZ | 6456    2010-07-01 22:07:00 [480]

Sajnos az amit én ezekel néha szotam csinálni, az sehol nincs ahhoz épest amiket Ti csináltok.
Így még csak halvány infót sem tudok adni róla neked.
Amin keresztül én elérem az az ARDUINO és én csak ezen a nyelvezeten szólongatom őket. Ez ismeri már a 018 tól. Az hogy ez alacsonyabb szintű nyelven mit jelent változásban, azt és sajnos nem tudom.

Ez nagyon semmi a Ti munkáitohoz képest.

Előzmény: elektron, 2010-07-01 21:57:00 [477]


LZ | 1538    2010-07-01 22:06:00 [479]

0b01101000 helyett ezt írtam: 0x01101000

A fordító így 32 bites hexa számnak nézte. Napokig kerestem a hibát, és persze egy basz... nagy program volt.

Előzmény: elektron, 2010-07-01 22:00:00 [478]


elektron | 15859    2010-07-01 22:00:00 [478]

Az még egy szép hiba, mikor egy programba beírsz egy sor valami teljesen semmihez se kapcsolódó dolgot, és akkor működik, vagy ha két üres sort beszúrsz pl. na így jártatok már ? Szerintem aki mélyen benne van ebben a dologban ezt megtapasztalta már.

Előzmény: LZ, 2010-07-01 21:54:00 [476]


elektron | 15859    2010-07-01 21:57:00 [477]

Már jártam úgy, hogy nem akartam beférni 16k-ba, abba meg ugye kicsit több van, akkor jól jött volna egy olyan. Csak nem tudom mennyi mindent kell átírni, hogy azon is működjön minden ugyanúgy.

Előzmény: KisKZ, 2010-07-01 21:49:00 [473]


LZ | 1538    2010-07-01 21:54:00 [476]

Nem is szabad megállni egy ilyen hüle hiba miatt...

Előzmény: elektron, 2010-07-01 21:46:00 [472]


LZ | 1538    2010-07-01 21:52:00 [475]

A TWI-vel voltak már rossz tapasztalataim mikor nem egyazon áramköri lapon volt a salve és master. Úgyhogy csak és kizárólag "5 centin belül" használom.
Jópár éve RS485 mániám van, mindenre azt használom, saját multimaster protokollt írtam hozzá, olyasmi mint a CAN, csak szoftveres. A léptecs vezérlőket amiket tavaly csináltam így hoztam össze címezhetőre a PCvel.
USB -> RS485 konvert és kész.

Előzmény: sneci, 2010-07-01 21:46:00 [471]

KisKZ | 6456    2010-07-01 21:51:00 [474]

ezért vásároltam Robinál a TAVIR-on. tesztelve, de még a bootloader is menne volt az Arduino-hoz.
igy nincs gond.

Előzmény: n/a (inaktív), 2010-07-01 20:42:00 [460]


KisKZ | 6456    2010-07-01 21:49:00 [473]

persze, de csa alap teszteket eddig. Sajnos nincs időm rá.

Előzmény: elektron, 2010-07-01 20:27:00 [452]


elektron | 15859    2010-07-01 21:46:00 [472]

Én is késleltetést tettem bele elsőnek, az oldotta meg, aztán meg megszakításból csináltam úgy is jó lett. Az embernek vannak azért ötletei minden hülyeség esetén. Ilyen pót megoldások.

Előzmény: elektron, 2010-07-01 21:45:00 [470]


sneci | 1763    2010-07-01 21:46:00 [471]

Csak RS232-t használok a PC felé 115200-zal, az is interruptos.
A TWI-t akarom címezhető dobozon belüli kommunikációra felizgatni. A dobozban van 5 vezérlő + egy PC és MPG interfész panel. Majd a PC-ről fogom kiválasztani, melyik vezérlővel hozzon össze az interfész, hogy ne kelljen dugdosni az USB kábelt.

Előzmény: LZ, 2010-07-01 21:21:00 [465]


elektron | 15859    2010-07-01 21:45:00 [470]

Mintha magamat olvasnám... Kb. ez volt nálam is, de azon gondolkodok, hogy azóta én is csak megszakításból használom, és az a probléma még mindig megvan, hiába olvastam ki a jelző flag bitet, akkor sem várta meg valahogy, illetve azt hiszem engedélyezni kellett a megszakítást is, közbe meg olvastam kifele közvetlen, én is összezavarodtam bele.

Előzmény: LZ, 2010-07-01 21:37:00 [468]


  Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 15 / 25 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   11  12  13  14  15  16  17  18  19   Következő ►  Utolsó ►|


 ◊