Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
Megoldottam
Mint gyakorlott AVR-Doper építő, számomra elég furcsa amit a cuccod produkál. Először is, a firmware-el
kellene kezdeni valamit: töltsd le az obdev.at honlapjáról, mert a változat, amit a cikk ajánl, bugos! A Doper gyakorlati legnagyobb sebessége ~22kHz, így akár fél méteres kábellel is játszadozhatsz... Második körben azt javaslom hogy ezt a szerencsétlen 74HC126-ot hajtsd meg bátran az USB-ről, a céláramkört pedig arról táplálod amiről akarod. Hidd el, sokkal kevesebb problémád lesz belőle! A 10kOhm ellenállások az AVR és a 74HC126 között szerintem nagyok, én 1kOhm-ot használok. A 10µF tápkondi nagyon kevés lesz, egy apróbb zavar vagy tápfesztüske miatt szétkapcsolhat a cucc. Én 330-470µF elkót javaslok, nemcsak azért mert a sajátjaimba is ez megy, de sokkal stabilabb lesz. Az USB egyébként 500mA-t tud, nagyon kevés AVR-es alkalmazást tudok elképzelni ami ennél többet eszik. És akkor egy kis magyarázat. Külső táp: őszinte leszek veled, a 74HC126-ot ebben a formában nem használhatod tápfesz-leválasztásra, továbbra is csak 5V-on működik! Hogy megértsd miért, gondolj arra hogy ebben az IC-ben is védődiódák vannak, pont úgy mint az AVR-ek portlábain. Minden lábon(be-és kimeneten) 2-2 darab. Odafele teljesen korrekt hogy az ATMega8 és a 74HC126 között ellenállások vannak. Épp nézem a rajzod, azon mégsincs minden láb ellenállással leválasztva(1,10), hanem közvetlenül van meghajtva az AVR által. Különböző tápfesznél ez komoly problémákat okozhat. Gondolj csak bele: ha a 74HC126 nem kap tápot akkor az AVR a védődiódákon keresztül táplálja meg... Visszafele, tehát a MISO oldalán még nagyobb bajok vannak: az AVR csak a komparálási feszültségnél nagyobb jeleket fogja logikai 1-nek tekinteni, tehát ~3V-os céláramkör-fesz mellett majdnem esélytelen. Van erre is megoldás, egy NPN tranzisztorral meg lehet oldani a rendes leválasztást a MISO oldalon is.
Csatolnám az enyémet, de elég b*zin jelenik meg. Kösz, HE fórum! Bővebben: Link
Én is meglepődtem, hogy mi a fene ez. Minden USB-ről van hajtva, csak maga a céláramkör nem (úgy ahogy a gyári ISP-nél van). Firmwaret is akkor felül fogom írni. Ebben a kondi dologban lehet valami, mert ha a SLOW SCK jumpert leveszem, akkor kapcsolódik, nem kapcsolódik, és emiatt írja ki, hogy rosszul működik az eszköz. Nem terveztem am 3,3 V-os AVR-t programozni vele. Még szerencse, hogy itthon mindenféle cucc van az átépítésre .
Köszi a részletes leírást, és a segítséget!
Csessze meg! Én voltam a hülye... Az illesztő IC-nél egy ki- és bemenetet véletlenül összeforrasztottam, és csak most vettem észre pedig többször is átnéztem a panelt.
Köszi a segítséget! A Topi féle firmwarrel ha pl. reseteltem, akkor újra kellett csatlakoztatni. Amit ajánlottál, azzal nincsenek ilyen gondok . Ezer köszönet még egyszer.
Nagyon szívesen! Csatolok egy újabb verziót, megmutatom mit értek korrekt kimenet-illeszés alatt:
Bővebben: Link A MISO bemenet invertálását már egy külön tranzisztor végzi, és az összes bemenet ellenállásozva van. Ezzel akár 1.8V-on futó AVR-t is lehet programozni vele, és az IC tápfeszültségét mindig a céláramkör adja.
Orulok, hogy sikerult megtalalnod a hibat, de azert nem kellene karomkodni a forumon...
Legtriviálisabb megoldás! CMOS tápfeszterén elég rugalmas. Viszont ilyenkor óvatosan kell bánni a bemeneti feszültséggel, mert a CMOS felépítéséből adódóan átmehet tirisztoros üzemmódba. Szerintem am valami ehhez hasonló lehet a gyári programozók felépítése is, csak ott a kimeneten valamilyen max IC van, amit persze szinte sehol nem lehet kapni.
Tényleg lassú a doper. 300 bájttal kb 25 sec alatt végez. (#1260734) trudnai: Bocsánat!
Az Uce feszültség ilyen szempontból lényegtelen. Rá lehet kötni, de akkor ne várj sokat a tranyótól, mert áramerősítési tényező 40, mivel ez már teljesítmény tranzisztor. Ha közvetlenül a lábról szeretnél nagyot erősíteni, akkor BDX53-t vegyél 750 az áramerősítési tényezője . Kicsivel több mint 1 mA-rel 1 A-t tudsz kapcsolni. Vagy a BD237-t egy másik tranyóval hajtsd meg darlingtonban. Am a kapcsoláshoz előnyösebb a MOSFET.
Igazából csak 300mA-t kell kapcsolnom 12V on(léptetőmotorhoz), ha 40 az erősítési tényező, akkor min7,5mA kell a bázisra, így bőven elég, ha teszek pl 500ohm-ot(és az avr el is bírja, mert max 20mA jöhet ki)
Tehát ennél a tranzisztornál a 2A-hoz 50mA kell? Az elég sok... A mosfet miért előnyösebb? Mert ahhoz nem áramerősség, hanem feszültség kell?
Védődiódát tegyél! Az 500 ohm nagyjából elég, de én továbbra is tennék egy a BD237 elé egy másik tranzisztort, ami meghajtja ezte. Mikrokontrollert nem illik nagyon terhelni. Mivel csak 300 mA-t kell (de valójában csúcsban többet), így inkább jobban kinyitnám a tranyót. Legalább 10-11 mA-rel, de én a helyedben vagy 20-25 mA-rel egy TO-92-es tokozásúval.
Mosfet azért jobb, mert csak feszültség kell (kivéve a ki/bekapcsolást, mert akkor a kapacitásokat fel kell tölteni/ki kell sütni), illetve itt nincs Uce feszültség, mert tulajdonképpen egy feszültséggel változtatható ellenállás. Ez a már inkább a kezdő kérdések topicban lenne a helye.
Sziasztok! Van valaki közületeke, aki ismeri, esetleg után építette az "ARDUINO"-k valamelyikét?
Kérdésem az lenne, hogy maga az arduino tulajdonképp csak egy avr egy "próbapanelre" szerelve, vagy az avr-ben van valami "alap" szoftver, rendszer, vagy hasonló, amitől arduino lesz? Remélem nem túl bután fogalmaztam meg kérdésem, és értitek! Szeretnék építeni egy-két arduinot, ha ez megoldható amatőr körülmények között. Előre is kösz mindenkinek!
Szerintem a slow_SCK jumpert rajt felejtetted. Szedd le, normális firmware-el SOHA nem lesz rá szükséged!
300 bájt - 25 másodperc? Ez még számomra is lassú, ezt kb. 4-6 másodperc alatt fel kellene égetnie. Még egy apró trükk: csatlakoztatás után állítsd be 1.8MHz-re az ISP frekit. Még így is csak kb. 22kHz lesz a valós sebesség(SCK-t frekimérővel kimértem)! Tudom, bosszantó, hogy mindig be kell állítani. Ha rendesen lefordulna nálam a kódja akkor már úgy állítanám be hogy ez legyen az alap.
Szia! Az Arduino az valóban egy AVR mikrovezérlő, de nem próba panelen van, hanem egy kétoldalas NYÁK-on, melynek meghatározott mérete és áramköri elrendezése van a hozzá csatlakoztatható eszközökkel való kompatibilitás érdekében. Jellemzően megtalálható a panelen soros- USB illesztő chip, táp áramkör, külső gartz oszcillátor, néhány kontroll led, valamint a csatlakozó hüvelysorok. (processzorláb kivezetések, táp, kimenetek, bemenetek, programozó csatlakozó stb.) Az AVR pedig tartalmaz egy "bootloader" -t, mely lehetővé teszi a proci programozását programozó hardver nélkül, egyszerűen USB felületen pc-ről. Kapcsolási rajzokat a net-en találsz dögivel, össze lehet dobni házilag is, akár próba panelen is, csak akkor oda a kompatibilitás a shield panelekkel. A két oldalas furat-galvanizált NYÁK nem igazán otthoni feladat, (persze nem lehetetlen) kézenfekvőbb ha rendelsz egyet és abból építkezel. Ezt is csak akkor ajánlom ha van jó szemed, és nagyítód, mert ezeken túlnyomórészt felület forrasztott alkatrészek vannak, méretük SMD0805! Ha jobban érdekel a téma, nézz körül a tavir.hu oldalon, mindent magtalálsz!
Üdv Endre*
Szia! Köszönöm válaszod! Azzal tisztában voltam, hogy milyen csatlakozási felületei vannak az arduino-nak, és miért olyanok. Igazából a benne lévő "alap" progi létével nem voltam tisztába. Mostmár csak az a nyagy kérdés, hogy az avr-ben lévő bootloader progit honnan lehet megszerezni, letölteni? PIC, és AVR programozóm is van, tehát elvileg nem lesz vele gond, ha megvan a beírandó dolog. Igazából egy cél áramkörnek kéne gyártani egy csomót, és nem gond a kétoldalas, és az smd technika sem, hiszen 25 éve űzöm a szakmát. Tehát nem a nyák rész a gond, hanem az avr-ben lévő alap tartalom. Üdv Tibi
a kérdésemre a válasz:
FASTAVR nevezetű complier! ezzel a bascom avr -ben megírt .bas filet bemásolva nyugodtan lehet menteni .asm-ba, .lst-be köszönöm magamnak a választ
Szia! Egy lehetséges megoldás a sok közül: Telepíted az arduino keretrendszert (arduino 1.0 v. újabb) program megnyit- eszköztár tools elemre klikk, majd a legördülő menüben Burn Bootloader választása, újabb legördülő menüben programozó eszköz kiválasztása. Remélem tudtam segíteni.
Üdv Endre*
Szerintem a slave eszközöknél ennyi elég az RS485-höz (a két végére kell majd egy-egy 120R lezáró ellenálás, ill. érdemes egy helyen a az A-B vonalat GND-re ill. VCC-re húzni egy-egy ~1K ellenálással, hogy ne "lebegjen" ha senki sem ad éppen).
Amit én problámásnak látok az a 74595 bekötése: mivel a Q7' (9) vissza van kötve a MISO lábra így áramkörben valószínűleg nem lehet majd programozni, mert a MOSI lábon a programozó felé küldött byte-ot vissza fogja kapni a MISO lábon. Ha a programozáskor duplex (ebben nem vagyok biztos) az átvitel, akkor ez zavart okoz. A Q7' visszacsatolásnak én sok értelmét nem látom (max ellenőrzésre lenne jó, hogy valóban azt kapta-e meg a 74595 amit küldött). Később viszont esetleg a kimeneteket lehet bővíteni egy újabb 74595-el, amihez ekkor kelleni fog a Q7'. A relék meghajtásához érdemes lehet megnézni egy ULM2803-at (hestore-ban 150 Ft körül kapható). Árban nem sokkal dárgább mint a 8xBC546 + 8x1N4007 és 8x2K viszont egyszerűsíti a kapcsolást.
Annyira nem vagyok benne az RS-485 dolgokban, de 1 master/sok slave illetve a hosszú vezetékek miatt MAX232-t használnék. 100 méter vezetéken egy 5V-os jel úgy el fog veszni mint a huzat!
Sajnos a MAX232 vagy 2-állapotú, tehát csak duplex lehet a kommunikáció(2 érpár). Nem nagyon bonyolítja meg a dolgokat, mivel az SN75176 továbbra is használható lesz! Sőt, az 5V-os részre kell is! Egy másik lehetőség az I2C. Nekem egy játékgépben sikeresen működik 20 méteres vezetékekkel. Igaz, az 5V-al valamit kell itt is kezdeni(az enyémben USB-kábel megy ami árnyékol is egyben), de csak 4 szál kell összesen ha a táplálást is erről oldanád meg. A sebesség(SCL frekvencia) nálam 20 méteres vezetékek esetében 100kHz, és az átvitel hibamentes(PCF8574 portbővítőkkel dolgozom). Az előttem szólóhoz csatlakoznék: a Q7* visszavezetése teljesen felesleges, csak a programozást akadályozza!
Még mielőtt valaki mondaná hogy magamnak mondok ellent:
Az I2C átvitel szinkronizált, az RS485 aszinkron. 5V-os jel és 100m vezeték esetén egy szinkronizált jel kevésbe zavarérzékeny mint egy aszinkron, ez utóbbi beállításához pedig elég a Master programján állítani! A megfelelő sebesség biztosan nem lesz egetrengető 100m vezetékre(10-20kHz), de szerintem elég.
Csak, hogy egyáltalán ne legyen egyetértés a témában .
I2C egyáltalán nem való nagy távolságok áthidalására. I2C kifejezetten panel szintű kommunikációs interfész. Nem véletlenül vannak az IC-k I2C-s interfésszel ellátva, míg egy komplett rendszerhez nem lehet I2C-n csatlakozni (kivéve a DVI-t). Ezért asszimmetrikus a jelvezetése. Tulajdonképpen az SPI által hagyott lyukat lehet kitömni, amikor egyszerűen kell sok eszközzel kommunikálni, úgy hogy nincs nagy információ áramlás. Azt, hogy a szinkron miért kevésbé zavarérzékeny mint az aszinkron, ezt nem igazán látom át. Ugyanis az aszinkron interfésznél, minden egyes bitet többször mintavételeznek, aminek az eredménye ugye 1 vagy 0, és amelyikből egy biten belül több van az lesz a vett szint (nem véletlenül aszinkron jelvezetésű az összes nagy távolságú kommunikáció). Ezzel szemben a szinkronnál egyáltalán nincs ilyen, hiszen az órajel fogja szinkronizálni vélelmezhetően egyszer. Másik dolog, hogy az I2C-s aszimmetrikus jelvezetése miért jobb az RS485 szimmetrikus jelvezetésével szemben? Hiszen az szimmetrikusnak pont az a lényege, hogy lényegtelen a zaj, mert a bemeneti fokozat szimmetrikus erősítő, és a zajt igen hatékonyan fogja kiszűrni. Ebből jön, hogy szinte a jelszint szint egyáltalán nem fontos, csak az hogy szimmetrikus legyen, ellenben az asszimetrikus jelvezetéssel, ahol a zaj ráül a jelre, és igen komoly gondokat okozhat, mert nincs ami kiszedje a zajt, max a bemenet zajtartaléka.
Dehogy vesz el az 5V-os jel. Raadasul a vevo oldalon elegendo 200mV. Igy at lehet hidalni nehany kilometert is, nem csak 100 metert. (Az ethernet 1V-os jelszintet hasznal)
Az I2C-rol pedig mindent elmondott sgt, amit en is elmondanek. Azaz egy valami: az I2C a passziv, nagy erteku ellenallasos felhuzas miatt nagyon zavarerzekeny. Az, hogy szinkron vagy nem nem jelent semmit. Azaz de, mashogyan kell szinkronizalni. Csak nezzel vissza a tortenelemben, az aramhurkos rendszerekkel kilometereket hidaltak at, pedig az aztan kokemenyen aszinkron. Vagy mondjuk itt van az Ethernet vagy a PCI-E vagy SATA vagy USB.
Az SN75176-hoz kellhet 120 Ohmos lezaras, de ha tobb eszkozt akarsz felfuzni, akkor ezt jumperrel megszakithatova kell tenni. Ha csak ez az egy eszkoz van a buszon es a vezetek hossza kisebb mint a bitratabol szamithato frekvencia hullamhosszanak a hatoda, akkor nem szukseges.
Tovabba meg celszeru az SN75176-os IC bemenetet, elofesziteni nagyerteku ellenallassal, hogy ha nincsen radugva semmi, akkor ne lebegjen a bemenet. Ezen felul ha vedeni is szeretned az aramkort, akkor celszeru kis erteku aramkorlatozo soros ellenallast is beiktatni a vonalra(de a lezaras utan). Ha barmi kerdesed van az RS485-rol szolj, munkambol kifolyolag ipari kornyezetbe tervezek ilyen aramkoroket.
RS485:
ipari kommunikácó, a csavart érpár + ellenfázisú jel miatt + a két vezeték közt 200mV jelkülönbség már értelmes jelszintet ad, valamint a GNDhez képest +/- ~8V jeleltolódás megengedett. Itt a sebesség és a határok: 9600 bps @ 1,2 km! Wiki: RS485 RS485: half-duplex. Ha csak egyirányú a kommunikáció, jó kiindulási tipp: DMX512 RS422: 1 master, sok slave, fullduplex. Fontos: csak külső kvarcról mehet az IC, mert sorosporti kommunikációra épít! i2C: panelen belül, a rendszer kapacitása <400 pF. a felhúzóellenállás 2..10k. Névleges sebesség (szabvány): 100kHz, 400kHz, 1.7MHz, 10kHz (?), 3.8 MHz (?). Jelszint: 0/5V vagy 0/3.3V vagy 0/2.5V. Nagyobb távolság, csak a szabvány áthágásával: felhúzó: 1k2, sebesség <50 kHz (nálam így ment _szabványon kívül_ 12,5 m relés környezetben.
Nem tudom, hogy miert irod nekem, ezeket beteve tudom. Nem nekem kell segitseg
De megjegyzem 100 kbps-nel is megvan az 1200 meter.
Ops. Az utolsó üzenetre válaszoltam....
A szabványban van a 9600, azaz zt ha törik, ha szakad illik tudnia. Persze el lehet térni felfele, ha nem zajos a környezet, jó a drót és a csillagok állása megfelelő + fekete kakas lett áldozva Ipari területen és maradok a szabványoknál, aztán reménykedem, hogy azt sem bénázom el....
Szeretnék én is AVR-el foglalkozni... Korábban volt már egy AVR-es robotom: Asuro, de sajnos nem működött megfelelően... Azóta már kicsit komolyabban tudok programozni, és arra gondoltam, hogy újra nekifekszem(ezúttal komolyabban) a mikrokontrollereknek és az elektronikának. Első neki futásra a T-Bird 2 fejlesztő panel tetszett meg, erről kérdeznélek tikteket vélemény tekintetében. Ezenekívúl néztem még az arduniot is, de az egy kicsit korlátozottnak tűnik..(feliratkoztam a tavir tanfolyamra is) Eszembe jutott még saját panel ötlete is(Atmega 8-al pl.), de a T-bird 2 komolyabb kontrollert tartalmaz, és nem sokkal drágább, mint egy rendes nyákon saját panelt csinálni.(egyébként a forrasztás nem probléma) Előre is köszi a véleményeket!
T-Bird: korlátozott - igen erősen - a bővíthetősége. Arduino esetén ez majdnem korlátlan, köszönhetően a shieldpanelek cserélhetőségének.
Arduino esetén próbáld meg - ha kell _ténylegesen_ a nagyobb kontroller - a Mega panelt. |
Bejelentkezés
Hirdetés |