Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
is csak interupt pin ébreszti fel!
![]()
Hány dolognak kell ébreszteni? Az alap felvetés az volt, hogy ne a 2,3 láb ébresszen.
Idézet: „már foglaltak szenzorokal” Akkor szervezd úgy hahrdver környezetet , hogy ne ott beszélgessenek a hardveres valóba élő interupt porton ![]()
2,3 pinken kívüli interruptoknak vannak korlátai. A pinek csoportokba vannak osztva, egy csoportból egyet használhatsz. Bővebben: Link Bővebben: Link
Ez a megoldás? :Bővebben: Link A hozzászólás módosítva: Júl 26, 2018
Vajon rákerestél erre a _BV dologra? Valószínűleg nem. Google-n temérdek oldal van róla.
Valamiért ATTiny85-re emlékeztem.
Itt van ugyanaz ATMega328-ra: https://gist.github.com/Wollw/2598827 PCICR = Pin Change Interrupt Control Register, datasheet 17.3.4 0, 1, 2 bitje használható. A 328-ban 3 porton lehetséges PCINT-et használni. Ezzel a három bittel lehet ezt a három PCINT mezőt ki/be kapcsolni. PCMSK0 = Pin Change Mask Register 0, datasheet 17.2.8 Ezzel a regiszterrel lehet beállítani, hogy a nullás PCINT mezőn belül melyik lábakon legyen bekapcsolva a PCINT. Van belőle PCMSK1 és PCMSK2 is a másik két mezőhöz. De ez mind le van írva az adatlapban. ![]() ATMega328 datasheet Aztán, hogy melyik PCINT melyik lábhoz (Port / pin) tartozik, az a datasheet 5.1 ábrán látható. A hozzászólás módosítva: Júl 26, 2018
A hozzászólásaid eltávolításra kerültek, mert figyelmeztetés ellenére sem voltál hajlandó még a legelemibb helyesírási szabályokat sem betartani.
Sziasztok!
Van egy arduino mega 2560 panelem, egy WAVGAT Smart Electronics ESP-12E WAVGAT D1 WiFi uno based ESP8266 shield for arduino Compatible (wifi panel link) wifi panelem, és találtam a fiókban egy 5V-3.3V szintillesztőt. A wifi panelt és a mega-t sz.gépről külön külön tudom programozni, teszik is a dolgukat, hanem szeretném összekötni őket, hogy a wifi panelről tudjam vezérelni a mega panel i/o lábait. Konkrét softrawe-es dolgokat sem igazán találtam hozzá, de a hardware részben teljesen bizonytalan vagyok. Többen azt írják, nem kell közéjük szintillesztő, mások szerint pedig kell. Kérnék szépen egy teljes útbaigazítást, hogy akkor most mit és hová is kellene kötni. Ha valaki tud esetleg ilyen jellegű kész arduino lib.-et, akkor azért külön hálás lennék, de a lényeg a hardware-es rész lenne. Előre is köszönöm a segítségeket!
Szia!
Meg szabad kérdezni mért kell rá az UNO? Amit láttam leírást az szerint ez 3.3V -os, míg az UNO 5V. Szerintem jobb ha használsz szintillesztőt.
Ha mindkettő egységesen 3v3 vagy 5v IO jelszinttel dolgozik, akkor nem kell szintillesztő. Ha az egyik 5v és a másik 3v3, de a 3v3 IO "5V toleráns" (azaz kibírja az 5 Voltot) ÉS az 5V eszköznél a 3v3 jelszint stabilan magas szintet jelent, akkor se kell.
Más esetben kell valamilyen szintillesztés a kettő közé.
Sőt, ha az 5V-os tud menni 3.3V-ról, akkor sem kell illesztő. A 328p datasheetje szerint akár 1.8V-ról is elketyeg, szóval mennie kellene. Mondjuk ebben az esetben a sebességgel gondod lehet, ennek azért utána kell járni. Az arduino keretrendszer nem tudom mennyire toleráns ebben az ügyben. Bővebben: Link
Egyszerűbbnek tűnik ha használsz illesztőt. Kevesebb szívásnak teszed ki magad. A hozzászólás módosítva: Júl 27, 2018
Sziasztok!
Azért szeretném rá a mega panelt, mert több funkciót szeretnék kezelni, és kevés az i/o láb a wifi panelen. Fogalmam sincs, hogy a wifi panel bírja e az 5V-ot. A mega panel és az i/o lábai 5V-osak, de a wifi-t nem tudom. A wifi panelen van 3.3V-os stabilizátor az biztos. Mi történik ha a wifi panel i/o lábai bírják az 5V-ot, de én teszek be szintillesztőt? Mindkét panel 5V-ot kap, de az ESP wifi chip 3,3V-ról megy.
A d1 tx lábát összekötöd a mega rx lábával. A gnd közös. Ennyi.
Ha a megáról küldenél akkor kellene szintillesztő. A hozzászólás módosítva: Júl 27, 2018
Sziasztok!
Köszönöm a segítségeket! Értem, ha megával csak adatokat fogadok a wifi-ről, akkor nem kell illesztő. Ha viszont küldeni is szeretnék a wifi panelnak adatokat, akkor mindkét körbe(rx - tx) kell a szintillesztő? Előre is köszönöm!
A mega tx - d1 rx közé mindenképp kell szintillesztő, akkor meg már rakhatsz a másikra is de nem muszály.
Ha minden pin "egyirányú", ez a szerencsésebb eset. Ha csak adatokat fogadsz és a mega biztosan magas szintnek érzékeli a 3v3 feszültséget, akkor a wifi tx -> arduino rx irányba semmi nem kell. Ha küldesz jelet mega TX -> wifi RX irányban, akkor oda egy ellenállásosztó is elég szintillesztőnek (pl. 22k és 33k ellenállásokkal).
Komolyabb szintillesztésre akkor van szükség, ha a 3v3 az 5V eszközöd "bizonytalan" sávjában mozog, vagy ha egy pin kétirányú kommunikációban vesz részt (mint pl. i2c esetén). Az atmega datasheet azt írja, hogy 2,4-5,5V tápfeszültség között a 0,6*VCC-t már magasnak veszi, ami 5V esetén 3 Volt fölötti jelet jelent, szóval a 3,3V elvileg elég. Szóval 3 tized Volttal a jó jelszint biztos határa fölött vagy, elvileg legalábbis. De az a 0,3 Volt nem is annyira sok, mert esik valamennyi feszültség a kábelezésen és a csatlakozókon, lehet picivel nagyobb a Mega tápfesz, picivel kisebb a wifi tápfesz, és ilyen esetben már könnyen a határ közelébe, netán alá is kerülhetsz. Ami nem feltétlenül jelent problémát, mert nyilván ezek a határok elég konzervatívan vannak meghatározva. De jelenthet. Szóval ha cél az üzembiztosság és "úgyis csak a helyet fogja" a fiókban a szintillesztő, akkor én használnám.
Korrekt eset:
építesz jelszintillesztőt. Így mind a Low, mind a high oldal a szabvány tartományba esik bele. Az ESP nem 5V toleráns! Azaz a Mega->ESP esetén ne legyen közvetlen bekötés, jelszintillesztő kell. Kérdés: egyirányú, vagy kétirányú kell? Én nem sorosportok beszélgetnék a két holmi közt. Az ESP sorosportja _foglalt_ az USB feltöltés/debugra. Amega-n meg a másodikat pazarlod el... Szoftveres sorosportot inkább ne. Akkor én inkább I2C master: ESP, I2C slave meg a mega legyen....
Ha az IO pinek száma a kevés, akkor szerintem célszerű lenne valamilyen portbővítő IC-t használni (pl. 74hc595). Az ESP nem tolerálja az 5V-ot, direktben semmiképpen se adj neki annyit a bemenetére, mert meghal tőle!
Sziasztok!
Próbáltam megfogadni a tanácsod az I2C kommunikációt illetően, de nem megy, reggel óta kínlódom vele. Az arduino.cc oldalról való az alábbi kód is; nem változtattam rajta. Eredeti kód itt Esp master kód:
Mega panel slave:
Természetesen szintillesztővel van összekötve: mega 20 és 21 láb rajta a 2db 10K ellenállással felhúzva 5V-ra esp D3 és D4 itt is 10K ellenállásal felhúzva 3,3V-ra Szintillesztő: LV = 3,3V GND = 3,3V GND HV = 5V GND = 5V GND LV1 = 3,3V SCL HV1 = 5V SCL LV2 = 3,3V SDA HV2 = 5V SDA SoftwareSerial-on beszélgetnek, de nem tudom normálisan lekezelni a string adatokat, ezért sok a "mócsing" az átvitel során; valahogy tudnom kellene RX oldalon, hogy milyen hosszú a venni kívánt szöveg, és még arra is rá kellene jönnöm, hogy az 1db küldést miért veszi RX oldal 2-3 alkalommal is (igaz már hiányosan). Használom a:
Az oda-vissza kommunikáció megvalósítása lenne a legjobb. Nem tudom, itt nem lehetne használni a Bridge library-t? Bár igaz az a Yun shield -hez való. Max 15 karakter hosszú adatokat kellene átvinnem ESP-ből Mega-ra, visszajelzéssel, hogy rendben vettte az adatokat a másik fél, és tudta értelmezni, vagyis nem bla-bla érkezett. Portbővítés? Nem is butaság! Már csak az ESP memóriája marad a kérdés, mert ha portot bővítek akkor azt MCP23017 ic-vel, mert az mindjárt konfigurálható, és van benne megszakítás is. Köszönöm az ötleteket! Idézet: „Már csak az ESP memóriája marad a kérdés” RAM és ROM is jóval több van benne (mellette), mint az ATMega2560-ban.
Sziasztok!
Eldobom az agyam az Arduino IDE-től. Ha be van csukva minden függvény, ami csak lehetséges, időnként magától kinyílik az összes, megnehezítve a keresést, a programozást (azt tapasztaltam, ha új ablakot nyitok meg, akkor! Már egy ideje szenvedek a több lapfüles programozással. Ma rájöttem, hogy miért! Az IDE jobb felső részén van egy lenyíló nyíl, Új fül parancs, megadom a fájlnevet, és rakok bele változókat. Ellenőrzésnél jön a hibaüzenet, hogy "redefined", és ki van emelve ez az új fül első sora. A redefined üzenet azért jött, mert a főprogramomban megtalálhatóak voltak ugyanazok a változók, ugyanis én, mint egy rendes programozó, beincludoltam a létrehozott új fülön található fájl nevét. Teljes logikai káosz ez az IDE. Ha kitöröltem az include részt, akkor is betöltődött a másik fájl is... Ha kétszer nyomsz && egymás után, majd CTRL+V-vel beillesztesz valamit, valami formázott html kódot másol be! ![]() További hiba: elindítom a feltöltést, majd ebben a pillanatban csatlakoztatom az Arduino lapot (az ellenőrzés alatt), akkor nem töltődik fel a program, de hibajelzés sem jön. De ez a lapfüles hiba, ez vitte a pálmát! Folyamatos redefinition hiba, és nem találja az ember, hogy miért. Nagyon bosszantó. A hozzászólás módosítva: Júl 28, 2018
Azt hogyan lehet megoldani, hogy egy másik fülön (fájlban) van egy nagy méretű tömböm deklarálva, és egyből adok is neki kezdőértékeket (const), de ezt a tömböt lássam is a főprogramomban? Az egyik probléma, hogy ha extern kulcsszót használok, akkor nem adhatok neki kezdőértéket, ha először deklarálom a főprogramban, akkor másik fájlban már nem tölthetem fel függvényen kívül a tömböt, mert akkor jön a redefinition hiba, vagy készítek egy fv-t, ahol szépen egyesével föltöm a tömböt... Köszi.
Az arduino ide egy érdekes jószág!
Azért követeli meg a projekt könyvtárat, mert minden amit abba másolsz azt egy fájlnak tekinti. Tehát amit az egyik lapon beírsz, azt a másikon is látja. Nem kell include-olni! Meg lehet szokni, bár kicsit bizarr.. Próbáld úgy írni a programot, hogy minden fájlt egyetlen fájlnak tekintesz! A hozzászólás módosítva: Júl 28, 2018
Szia!
Wire.beginTransmission(8); // transmit to device #8 Nem tudom miért 8 a címe. Mindenképpen annyi? Ez szerintem változó. Kapcsold össze mindkettőt, majd a master-re tölts fel egy i2c scannert. Azért megnézném a pontos címét a slave-nek. A hozzászólás módosítva: Júl 28, 2018
Üdv!
Van valakinel egy példája arra, hogy egy arduinot elküldünk, majd egy DS3231 RTC felébreszti azt?
ESP esetén:
wire.begin(SCL,SDA); Mivel szoftveres Wire-t használ! Tetszőleges lábra tehető. Te meg nem definiáltad...
Sziasztok!
KoblogPerGyok: Miért 8 a wire.begin()?? Idézet: „Az arduino.cc oldalról való az alábbi kód is...
Fogalmam sincs, miért 8, de egyedül van az I2C buszon. Így van a mintapélda is az arduino mintaprogram könyvtárban is, és a weboldalon is (nem az arduino fórumon volt a példa). Köszönöm az infót TavIR-AVR, ki fogom próbálni, bár nem értem, hiszen a panelon is fel vannak tüntetve, az: SCL/SDA/SCK/MOSI..RX-TX kivezetések, feltételeztem...mint a mega panelen, hogy adott, mint a serial port is az ESP-n.
Minden i2c eszköznek van egy - ha jól emlékszem 7 bites - címe, ami azért kell mert több eszköz is ülhet ugyanazon a buszon, ráadásul multimaster és/vagy multislave is lehet. Szóval az i2c kommunikáció úgy néz ki, hogy a csomagokban benne van az, hogy ki beszél kihez, ehhez kell tudnod - master-ként - a megszólított slave eszköz címét.
|
Bejelentkezés
Hirdetés |