Úgy gondolom, hogy ha a fordító az PORTx regiszterekhez hozzáférést lát, 8 bites blokkokban fogja kezelni az adatokat.
Így ha egy 16 bites adatot írsz egy PORTx regiszterbe, akkor a fordító automatikusan fogja kezelni, akkor a 8 bites regiszterekhez tartozó két blokkot használ úgy, hogy az alsó 8 bitet a PORTx regiszter megfelelő bitjeire írja, majd az felső 8 bitet pedig a PORTx regiszter következő bitjeire.
Köszönöm a segítségedet, ezek nagyon biztatóak, ha tényleg így megvalósíthatók C-ből is. Bár az nagy kérdés, hogy ha egy port csak 8 bit szervezésű, szélességű, akkor mi lesz a 255 feletti adattal, ahogy Dezsoe ezt fekvetette. Én is azt gyanítom, hogy ehhez olyan Arduino típus kellene, ami 16 bites adat szervezésű, és képes egy utasításban a 0-FFFF adat mezőt "mozgatni" vagy azokkal műveletek végezni. Mert az időnyerés miatt pont ez a bajom ezekkel a 8 bites utasításokkal, hogy ezekből több kell, mint amikor ezt egy soros utasítás is elintézi.
PORTx regiszterre való közvetlen hivatkozással a leggyorsabb.
Példaként, ha a 16 bites adatot egy adott portra (például PORTB) kiírni:
void setup() { // port - kimenet DDRB = 0xFFFF; // minden bit kimenet }
void loop() { // 16 bites adatot a PORTB-re PORTB = 0xABCD; // Példa }
Ez az ABCD értéket írja ki a PORTB regiszterbe.
Például Arduino UNO 328P mikrovezérlője 16 MHz-es órajellel ketyeg.
Az PORTx regiszterekhez történő közvetlen hozzáférés egy utasításnak számít, ez elég gyors, így amíg egy 16 bites adatot ki tudsz írni a portra, mindössze egy utasításciklus hosszúságú lesz, azaz körülbelül 62.5 nanoszekundum. (1 / 16 000 000 másodperc)
Fontos, hogy ez azt feltételezi, hogy az adott művelet szinkronizált a processzor órajelével, és nincs egyéb időveszteség a környezetben.
A portok 8 bites szélességben írhatók/olvashatók. Nem kell hozzá feltétlenül lemenni assembly-ig, C-ből is elérhetőek. A mellékelt képen PA, PB, PC és PD kezdetű lábak tartoznak egy-egy 8 bites egységbe. Láthatóan nincs minden láb kiépítve, ahogy más mikrokontrollereknél is szokott lenni.
A profi hozzáértőktől, AVR programozóktól kérdezném: Van az Arduino utasítások közt olyan, ami csak egy-két sorból áll, és képes 8-16 bit szélességű adat Output műveletet egy porton végezni 0.5 mikrosec alatt?
Mert ahogy látom, szinte mindenütt csak ez a bitenkénti LED ki-be kapcsolgatási játék demo program van terítéken.
dtb | 1919
2024-02-27 22:00:15
[2001]
Egy másik verzió, ez egyszerűbb...
dtb | 1919
2024-02-27 21:54:40
[2000]
Elég régóta keresgéltem már egy power loss indikátor panelt, ma véletlenül beleszaladtam... Ha esetleg valaki készít magának, én is szívesen megvennék belőle 4-5 darabot! Igazából úgy lenne célszerű, hogy egy panelra kerülne a puffer kondi és a védő dióda, meg maga az indikátor rész is, és 4 vagy 5 csatlakozó lenne:5VIN, 5VOUT, 2 x GND, meg a Signal
kaqkk007 | 1563
2023-04-30 09:53:50
[1999]
Akkor átvert, gyárilag jár hozzá.Max veszel bele egyet és beleteszed.
Ha okos volt a klímás vagy a klíma előlapjának a belsejére vagy a távirányító elemfedelenének a belső oldalára ragasztotta , de az is lehet hogy a papírok közt van egy kicsi fehér dobozkában .
Elvileg benne van gyárilag a wifi stick , csak meg kell keresned a qr kódos matricát a papírok közt azt beolvasni a telóddal , letölteni az alkalmazást és rátanítani a wifidre
lassan itt a nyár és szeretném az itthoni klímát valahogy "okosítani", hogy ne kelljen állandó üzemben menni, de mire hazaérek már a megfelelő hőmérséklet fogadjon. Szóval nem tudom valaki már csinált-e ilyet, hogy ne kelljen újra feltalálnom a kereket. Ha nekem kell előlről megoldani, akkor is kérdezném, mi lenne a jobb megoldás. Egy arduinoval kiolvassam az eredeti távvezérlő kódjait, majd egy programban ezeket felhasználva készítsek egy "wifire csatlakozott távvezérlőt" amit távolról telefonon tudok kezelni, vagy alapból a klímába kössem be a vezérlést?
morvfer7 | 2566
2023-03-26 21:22:01
[1986]
Csak úgy unatkoztam, a héten kevés a meccs.
ebalint | 1769
2023-03-08 08:34:04
[1985]
szia! A múlt héten nézegettem a netet rexasztal ügyben.
Én ilyen kicsikkel csináltam egy "gravírozót, ceruzával a kezében, A5-ös területtel. Sosem bízok a G kódokban amit én írok, megrajzolja a műszer előlapot, látom hol a hiba, olcsón javitható.
Még egy pár érdekesség aminek a megoldása fejtörést okozhat. A golyóknak ütküzni kell csak akkor érvényes a lyukba kerülő golyó értéke. A pályát elhagyó golyó, és főleg ami az alapvonali bőrre kigorul annak az érzékelése kezelése.
Ezt most lehet, hogy nem teljesen értem... Amúgy van még egy buktató amire eddig nem gondoltam... A piros golyó duplát ér ugye... na itt a követkeező kihívás..
igazad van! lehe, hogy a gomba esetében a nullázás is egy külön nyomógombbal történne.. Erre nem is gondoltam. bár van itthon mindenféle szenzorom (lézer, induktív, kapacitív, színérzékelő, stb....) Valamelyikkel csak sikerül megoldanom... ha meg nem hát marad a jó öreg nyomógomb..
Egy érdekes kihivás van benne a gomba. Ha a gomba felborul nullázódak az addigi potok, viszont Ha: Ha a gombát csupán arrébb tolja egy golyó, de az nem borul fel, ez az eset nem számít hibának.
Sziasztok! Építettem egy REX asztalt és szeretném a pontokat digitálisan számoltatni illetve kijeleztetni. Olyan hozzáértő személyt keresek aki megírna egy programot arduinora ami számolja a pontokat, figyeli a gombát és nulláz, ha kell. illetve egy váltó gomb is helyet kapna a több játékos miatt. Az elektronikát én elkészítem csak a program kellene. Természetesen több információval, konkrétumokkal is tudok szolgálni, ha megtaláltam a megfelelő személyt! Mondanom sem kell, hogy anyagi juttatás fejében várom mindezt, nem ingyen! Köszönöm!
Kisamotors | 708
2022-09-02 06:01:56
[1975]
Keress rá, hogy mi is a különbség a bipoláris és az Unipoláris léptetők között. Legegyszerűbb, ha az A és a B fázistekercs középső megcsapolását nem kötöd be, így máris 4 vezetéked van. (Igaz, elég rossz működési tulajdonságokkal, de mozgatható.)
A YT-on milliónyi videó van arról, hogy lehet különféle megoldásokkal léptecseket vezérelni. Elég, ha csak beírod az Arduino és stepper motor keresőszavakat. Az alapokat ismerd meg, aztán építhetsz ezekből a motorokból mondjuk egy CNC rajzgépet (plottert), vagy vehetsz új gombokat a kabáthoz, de ez már a következő lépcső.
...ez előbb elment bocsi... Szóval azzal tisztában vagyok, hogy ezzel nem fogok marogatni, acélt forgácsolni, a célom nem is ez lenne! A lényeg egy részről az építés öröme, másrészről a CNCk felépítésének megértése, a vezérlés tanulása. Szóval tudom, hogy ezek nem erős motorok! A kérdésem az lenne, hogy hogy a viharba kell bekötni ennek a 6 pinjét??? Ami arduinoshildeket láttam, azok 4 pinesek. Hogy mozgathatnék meg egy ilyen motort? ...ha egyáltalán arduinoval lehet...
Sok más projektem mellett, gondolkodom egy icipici CNC építésén. ...amit arduinoval terveznék vezérelni! Namármost van kb 8 léptető motorom, amit egyszet egy diszkó lámpából szedtem ki.
csatlos.laszlo | 145
2022-07-15 07:10:48
[1972]
XTisztelt: forumosok! Valakinek nincs veletlenul telefon bluetoot arduino relle eszkozre irt hexben kapcsolo programja?
Törölt felhasználó
2022-03-03 11:13:06
[1971]
Nekem sem sok programozási tudásom de ezek még mennek kénytelen cél érdekében! Ami ardu programozási szinten fontos (minta példa elinduláshoz) modbus eszköz tudjad milyen eszköz cimen indul ez 001-255 közöt választható...eszköz baund értéke 4800..9600 tetszés szerint! Az rs485 sorosport átalakítót amit mutattam az könnyü elindítani össze drótozni érdemes hadveres szeriált használni az megbízhatóbb .....sajnos softserial nálam töbször is elakadt ami alapban arduino ide használ de van több softserial könyvtár fejlesztés amik jobbak megbizhatobak! notepad meg átírod a te fogyasztásmerőd regiszter cimeit "lent linkeltem " Szintén ebben a könyvtárban SDM.h sdm120..220 eszközre van meg irva! SDM_Energy_Meter-master sdm_simple.ino mintapélda meni fog szépen ha amit mutattam port átalakítóval csinálod meg! Sajnos vannak más átalakítok ami szinte csak vesződni lehet a rossz port fesz szintek miat és nem indul el a kommunikáció rajta azok felejtősek
rs485 modul ami jóó... már 3.3v is elindul! https://www.google.hu/aclk?sa=l&ai=DChcSEwjslc3P3Kj2AhVEAYsKHTyEBDoYABAFGgJlZg&sig=AOD64_2P-gucU7p-nyWm48sKnkdJpKKaDA&adurl&ctype=5&ved=2ahUKEwiOyMLP3Kj2AhXX7rsIHbYZASsQvhd6BAgBEFU protocol https://www.socomec.com/files/live/sites/systemsite/files/SCP/6_gestion_energie/diris/diris_a10/DIRIS-A-10_COMMUNICATION-TABLE_2018-01_DCG01013_MULTI.html
sdm220 könyvtárba átt irod DIRIS-A-10 protokol regisztereire "read" szekcióban
Van egy DIRIS A10 villamos fogyasztásmérőm , szeretném az adatokat arduino-val modbus-on kiolvasni. Van valakinek valami kiforrott progija erre. Nem pont erre a típusra, hanem valami általános dolog amivel el lehetne indulni.
Van egy nyomógomb kezelési problémám. Keresek valakit aki privátba segítene. Köszönöm!
Jozs | 878
2021-11-19 20:59:24
[1964]
Nézd a végéről. Ha a "raketa == HIGH" nem teljesül, az utána következő ELSE ágban lefut az "elozo = mostani" utasítás. Vagyis "raketa == LOW" esetén mindenképp egyenlő a 'mostani' és az 'elozo', függetlenül az előzményektől. És így tovább, visszafelé haladva.
Ráadásul gyanús, hogy a "mostani" -ba nem is az kerül amit szeretnél, hanem amit abban az "IF" -ben kapott, amelyikben a végéről visszafelé haladva először volt HIGH a bemenet.
Persze azt sem ártana tudni mi volt az elképzelés.
Sziasztok! Még kezdő vagyok a programozásban, és szeretnék segítséget kérni. úgy kellene működnie, hogy az előző követi a mostani változót, de sajnos a kettő mindig egyenlő, és nem tudom hogy miért. Program:
const int s1 = 0; const int s2 = 1; const int s3 = 2; const int s4 = 3; const int s5 = 4; const int s6 = 5; const int r1 = 6;
const int fel = 7; const int le = 8;
const int led1 = 9; const int led2 = 10; const int led3 = 11; const int led4 = 12; const int led5 = 13; const int led6 = A0; const int ledr = A1; const int ledfel = A2; const int ledle= A3;
//valtozók int elozo = 0; int mostani =0; int difi = 0;
int egy = 0; int ketto = 0; int harom = 0; int negy = 0; int ot = 0; int hat = 0; int raketa = 0; int vido = 100; int natural = 1000;