Fórum témák
» Több friss téma |
Fórum » Robotika kezdőknek
Sziasztok!
Ennél a cikknél: http://www.hobbielektronika.hu/kapcsolasok/egyszeru_soros_kommunika...t.html Az alábbi kép szerepel: http://www.hobbielektronika.hu/kapcsolasok/files/447/tablazat.jpg Hibásan áll ott, hogy az USB-nél +5 és -5 voltos jelszintek vannak. A D+ D- vezeték nem azt jelenti, hogy negatív feszültség lenne a D- on. A D+ és D- vezetékeknél a logikai 0 jelszintje 0 volt, a logikai 1 jelszintje 3,3 volt. Pontos toleranciát nem tudok mondani. A 2 adat vezetéken mindig egymás logikai inverze van, de nem feszültség inverze. Tehát ha egyiken 3,3 volt van, akkor a másikon 0, nem pedig -3,3. Gondoltam leírom ide, nehogy valaki komolyan vegye.
Köszi, hogy észrevetted, jogos.
A cikk javítása közben felfigyeltem én is erre, de akkor sajnos csak a szöveges leírásban vettem észre és javítottam ki az USB-re vonatkozó néhány szót; szóval a szöveges magyarázatban már "javított" verzió áll, ha olvassátok (toleranciasávokat írtam); ezt a táblázatot, majd megkérjük, hogy javítsa Fizikus, ha ráér. :yes:
Ha az átvitel szimmetrikus jellel történik, akkor nem inverz logika kell, hogy legyen rajta, hanem inverz feszültség. Most nem mernék megesküdni rá, de úgy tudom, hogy az inverz feszültség van a D- vezetéken.
A képen egy USB adatfolyam látszik: http://www.edn-europe.com/cmsimages/0608/52f2.jpg
Lehet hogy igazatok van az USB-vel kapcsolatban.
A Making Things Talk könyvet olvastam, abban határozottan azt írta a szerző, hogy a Data+ és Data- feszültségösszege mindig nulla, ebből számomra az következik, hogy ha a Data+ +5V, akkor a Data- -5V, és ha a Data+ 0V, akkor a másik is annyi. De lehet hogy félreértettem valamit. Nem vagyok profi az USB kommunikációs protokol ismeretében, de ha valaki küld egy linket ahol ez érthetően le van írva, akkor természetesen szívesen kijavítom a cikkben is. Üdv.: Gábor U.i.: Ezúton megkérdezném Norberto tőled hogy a visszaperjeleket hogyan tudtad a kódba beilleszteni? Mert nekem mindig kiszedte a weboldal a mentés után.
Olyan módon sikerült, hogy duplán raktam be a kódban minden helyre ezt a visszaperjelet és így mentettem el az oldalt. De arra figyelni kellett, hogy további mentés már ne legyen az adott oldalon ennek elmentése után, mert egy visszaperjelet leszed belőle a rendszer, tehát vissza kell írni mindig duplára, ha a rendszer közben "megenné". Néhány programnyelvben ilyen "duplázással" van megoldva, hogy a feldolgozás művelete helyett lehessen extrém karaktereket is beszúrni, ha szükséges.
Mégegy kérdés (tudom hogy kicsit off, de lehet hogy mást is érdekel aki cikket akar írni):
Miért van az pl. hogy néhány formázás a mentés után eltűnik? (pl. nem tudok betűméretet változtatni, néhány felkövérnek kijelölt betű nem lesz az, eltűnnek a betűszínek stb..)
A betűszínezés jelenleg le van tiltva, úgy tudom, a másikra viszont sajnos nem igazán van tippem, mivel van, hogy egyes betűket át lehet állítani félkövérré /ahogy a cikkedben is van néhány helyen/, viszont más betűknél ez néha nem működik. Ennek az okát sajnos én nem tudom, csak Topi tudná (elképzelhető, hogy darabszám-korlátozás van bevezetve a félkövérré alakításra?!).
![]()
Üdv! Jó a cikk, csak néhány megjegyzés:
Idézet: „Lassan emeljük a kristály oszcillátoron a feszültséget” Ezt szerintem félrefordítottad, inkább azt jelentené, hogy a tápfeszültség bekapcsolás után lassan emelkedik, nem hirtelen (pufferkondi van a tápon) Idézet: „Amikor egy új karakter érkezik, az UART rendszer egy megszakítást generál. A mikrovezérlő félbehagyja a főprogram futtatását, az adott megszakításhoz tartozó megszakítás kiszolgáló rutinhoz ugrik (ISR). Jelen esetben ez az UART karakter érkezett nevű megszakítás. Ez az ISR beolvassa az új karaktert az UART-ból, és átteszi egy pufferbe, végül törli a megszakítást, majd a mikrokontroller visszatér a főprogramhoz és ott folytatja, ahol félbehagyta. Mindez a háttérben fut, a főprogramot ez nem befolyásolja.” A kiemelt utolsó mondatot én törölném, mert félreérthetővé teszi a dolgot. Az interrupt rutin nem a háttérben fut. Ez azt jelentené, hogy több szálon folyik a programvégrehajtás. Ahogy azt Te is jól tudod, erről szó sincs, IT-nál a stack-re kerül a PC (program counter) regiszter értéke és a vezérlés a megfelelő interrupt vectorra ugrik (ezek fixen, előre definiált, nem módosítható címek) Az interrupt rutin végén egy RETI utasítás a stack tetején lévő címet beemeli a PC-be és ott folytatódik a főprogram, ahol a megszakítás beérkezése előtt abbamaradt. De. Érdemes lenne kitérni azokra a globális változókra, amelyeket interruptból és a főprogramból is el szeretnél érni. Ezeket C-ben a volatile kulcsszóval kell deklarálni (pl.
Kiemelném továbbá azt a tényt, hogy a C nyelvben írt program sorai nem elemi utasítások. Előfordulhat, hogy egy több byte-os változó növelésekor annak alsó bájtját már megnövelte a CPU, ekkor befut egy IT, ami módosítja ezt a változót, visszatérve az IT-ból a változó felső bájtját is növelné (mert túlcsordult az alsó) de közben az IT belenyúlt és így a változónk értéke teljesen váratlan lesz, ami galibát okozhat. Célszerű tehát ilyen helyeken tiltani az interruptokat, majd a mutatvány végén újra engedélyezni. (CLI, SEI) Épp nemrég írtam egy ringbufferes UART kezelő kódot C-ben. (az általad linkelt UART library-t ismertem, csak épp nem jutott eszembe) Egész jól kommentezett, ha gondolod, odaadom, kiteheted. Szólhattál volna esetleg néhány szót még a paritásbitről, illetve kommunikációvezérlésről, flow controlról, (!) CRC-ről és arról, hogyan érdemes egy bonyolultabb kommunikációt felépíteni, de ez már tényleg nagy falat lenne. Az USB-s kollégáknak pedig úgy tudom igazuk van és a D+ nem a D- negáltja. Próbálkoztam a V-USB library-vel, de nekem nem nagyon jött össze, ezért lett belőle UART. Egyébként elég korrekt cikk, grat. Egy hónapja mit meg nem adtam volt ezért! ![]()
Koszi a hozzaszolast skynetpro!
Biztos van meg tobb kisebb pontatlansag is a cikkben, de en is meg csak ismerkedem a mikrovezerlovel es a C-vel. Ezert nekem elsosorban az a cel, hogy ha meg akarok oldani valamit, akkor az mukodjon. Utanaolvasok, megprobalom alap szinten megerteni es alkalmazni. Kesobb ha jobban megismerkedtem a temaval akkor reszleteiben is jobban atlatom majd. Nincs egy eve amikor elkeztdtem az elektronikaval es a mikrovezerlovel hobbi szinten foglalkozni. Azota folyamatosan fejlesztgetem a robotomat es ujabb periferiakat kezdek el hasznalni (eloszor csak a digitalis I/O-t es a PWM-et hasznaltam majd jott az ADC, a megszakitasok, es most a soros kommunikacio) Azert irom a cikkeimet, hogy a hozzam hasonlo kezdok ne szenvedjenek vele annyit mint en. Ezert lehet hogy nem a legcelszerubben / legelegansabban oldok meg nehany dolgot, de nekem az a fo hogy mukodik. Idézet: „Szólhattál volna esetleg néhány szót még a paritásbitről, illetve kommunikációvezérlésről, flow controlról, (!) CRC-ről és arról, hogyan érdemes egy bonyolultabb kommunikációt felépíteni.” Szivesen irtam volna ezekrol is, ha meglenne hozza a tudasom, de jelenleg ezekrol nem sokat tudok. Idézet: „Épp nemrég írtam egy ringbufferes UART kezelő kódot C-ben. (az általad linkelt UART library-t ismertem, csak épp nem jutott eszembe) Egész jól kommentezett, ha gondolod, odaadom.” Koszonom, nagyon szivesen vennem ha elkuldened. Probaltam megerteni hogy hogyan mukodik a Peter Fleury UART kodjaban a ringbuffer, de nem jartam sikerrel, ehhez az en C tudasom meg edeskeves. Udv.: Fizikus
Üdv!
Arduino mikrokontroller szeretnék 4 kereken guruló robotot készíteni. Az alapja egy meglévő (kb 40cm-hosszú) autó, hátsó kerék meghajtással. Szükségem lenne még 2db motorra, az egyik mindenképpen egy szervó motor, ami az első kerekeket mozgatja, a másik pedig egy kisebb lenne, ami a kocsi tetején lévő infra távolságmérőt forgatja.Tudna esetleg valaki ajánlani ezekhez motorokat? A kisebbik motornak ~360 fokban kellene forognia, (tehát csak 1x kellene körbefordulnia, majd vissza). Úgy tudom a szervó motorok nem tudnak teljes kört leírni.. Vagy tévedek?! ![]() ![]()
Egy kis olvsni való a robotikával ismerkedőknek
Szia!
Az USB D+ és D- vonala 3.3V szintekkel dolgozik, ellenfázisban vezéreltek a kommunikáció alatt. A felismerés és inicializálás alatt a vonalakon levő szintek alapján dönti el a host, hogy mekkora adatátviteli sebességgel kezdje a kommunikációt. A vonalakon a 0V és a +3.3V közötti feszültségek megengedettek. További leírások: USB.org
Remek cikkek Fizikus
![]() Várjuk szeretettel a TTL-Bluetooth -os cikket is.
Hát ha sikerül valahogyan működésre bírnom, akkor lesz róla cikk is. De eddig minden kísérletem csődöt mondott
![]()
A "Soros LCD vezérlőpanel használata AVR-rel" című cikkben miért nem egy plussz avr-t használsz az lcd meghajtásához?
Szerintem sokkla egyszerűbb lenne még egy avr használata és a két avr közötti kommunikáció TWI (I2C) buszon keresztül, vagy akár ugyanígy soros kommunikációval 1 I/O láb felhasználásával. Ez a megoldás egyrészt olcsóbb lenne, másrészt sokkal többet lehetne belőle tanulni.
Szia!
Én egy BlueGiga wt11-et használok a robotom vezérlésére. Neked milyen modulod van? Én rádugtam rs232-re ott mindent beállítottam, géppel összepároztam, és utánna elrejtettem más bt eszközök elől. Utánna ha a gépen megnyítom a bt com portját akkor a modul autómatán átáll spp-re és lehet küldeni az adatot uart-on.
Ez a megoldas is az eszembe jutott (marmint hogy epitek egy ATmega8-on alapulo soros LCD vezerlot), de a tudasom ehhez meg keves. Meg nem hasznaltam a TWI (I2C) buszt sem eddig. Most nincs idom ezeket megtanulni, de ha te nagyon ertesz ehhez, es szerinted nagyon egyszeru, akkor irj egy cikket rola. Szivesen elolvasnam.
Az a baj, hogy én sem értek hozzá és kiváncsi lettem volna a használatára. Mindemellet nem szeretek késsz paneleket venni. Inkább megépítem őket magamnak.
Közben én is tuningolom a régen elkezdett robotomat, kapott egy rádiómodult, házi készítésű ultrahangos távolságszenzort, a jól bevált Sharp infrás távszenzort, működik az odometria, a mérések eredményeit a számítógépen ábrázolja (mellékelt képen egy sarok), azon pedig most dolgozom, hogy 2 jeladóhoz képest meghatározza a helyzetét, és így akár egy szobát feltérképezzen.
Kb 1000 sornyi kód mászkál rajta, és a számítógépen összesen... Mellékelek pár képet a jelenlegi állapotáról (maga a robot, és a rádió vevője, ami vagy számítógépre küldi a fogadott adatot rögtön, vagy EEPROMba menti, és később kiírja).
Szia!
Azt a számítógépes programot te írtad? Ha igen meg tudnád mondani, hogy hogyan küldesz és fogadsz com porton?
Simán egy netről bányászott RS232 port figyelő programmal egy .txt fájlba mentek mindent, ami bejön (eleve úgy küldöm, hogy a programom értse). Van 100 féle ingyenes ilyesmi. Később a .txt fájlt olvassa be a programom.
Meg tudnád mondani a program nevét?
Nekem a robot egy labiritus alaprajzát küldi el com porton, amit a pc kirajzol a képernyőre.
Ezer köszönet. Én c++ programozok, ott winapit kellett volna használni, hogy tudjak fogadni com portról.
Szia!
A kozepso kepen a bal oldalon levo kis panel az mi?
Azt a gép egy soros portnak látja. Lényegében az az USB- UART átalakító. (Egy PIC intézi az egészet, a Microchip egyik példaprogramja fut rajta)
En is erre tippeltem, csak kar hogy nem AVR alapu, mert akkor elkertem volna a forraskodjat...
|
Bejelentkezés
Hirdetés |