Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   284 / 360
(#) elektroszala válasza Bakman hozzászólására (») Aug 14, 2017 /
 
Van ennek valahol elérhető tudománya? Boost C -re gondolok. Angol is jó...
(#) Firefighter1 hozzászólása Aug 16, 2017 /
 
Hát hosszas töprengés után csak ráadtam a fejem az I2C kivesézésére...
De hogy őszinte legyek nem értem... mármint magát a metódust értem, csak azt nem ahogy a Flow használja!
Vegyük elsőnek a "Küldést".... leszedtem a példaprogramot

Ezt az egész litániát be kell irni minden adatküldés elött? vagy csak egyszer a program elején és utánna amikor küldeni akarok akkor már csak a Send the I2C data részt kell?

Ugy kezd a makró hogy iniciálás

I2C(0)
MI2C_Init()

(Én mondjuk itt simán a startot választottam volna! Ő miért az Init-el kezd? amikor nem is ad értéket

Utánna:

Initialise Constants

DeviceAddress = 0x1C
Data = 0x55
Internal_Address = 1057

( Itt a Változóknak adja meg az értéket a DeviceAddress gondolom a cimzett I2C ezköz címe
A Data itt gondolom megadja a küldeni kívánt adatot, Az Internal_Adress pedig egy belső cim... amit nem értek, de erre mindenhol ezt látom)

Utánna folytatja hogy

Workout Internal Address Byte Values

InternalHi = (Internal_Address >> 8)
InternalLo = Internal_Address

(Ezt Szintén nem értem, de erre is mindenhol ezt irja)

Utánna pedig maga a küldés

Send the I2C data

MI2C_Send_Byte_Transaction



DEVICE_ID ( Gondolom a cimzett I2C-t kell kiválasztani)

AddrH

AddrL (Ezeket valami kötelező protokolnak gondolom, mert mindenhol ez szerepel)

Data (Pedig a küldendő adat... ha jol gondolom)



Namost ... !!!!
Mi a Különbség a MI2C_Transmit_Byte és a fent leirt Sent_Byte_Transaction között?
Mert ha jol látom akkor a "sima Transmit_Byte-nál, nem tudok címeztni... csak az adatot tudom megadni... Ezek szerint ott kiküldi minden egyes kapcsolt I2C ezköznek??

Remélem nem kapok letolást a konyhanyelves fogalmazásért... de most csak bámulok mint a sülthal!
(#) Firefighter1 hozzászólása Aug 16, 2017 /
 
Közbe Bujom folyamatosan a példaprogramokat , ha jól gondolom az Initialize I2C "opciót" a program elejébe kell csak betennem azzal úgymond csak a programba élesztem az I2C-t
Illetve a Initialise Constants és a Workout Internal Address Byte Values szintén csak a program elejébe kell betennem amikor meg irni vagy olvasni szeretnék a Akkor a Call nál a MI2c_Startot hívom meg ugy ahogy gondoltam.. és a végén a Stop-al zárom.... De még mindig nem tudom miért jo a két féle küldés és fogadás
(#) Firefighter1 hozzászólása Aug 16, 2017 /
 
Bocsánat az előző hsz-em hez a kép

i2ckuld.PNG
    
(#) Bakman válasza Firefighter1 hozzászólására (») Aug 17, 2017 /
 
Elöször tisztázzuk azt, hogy milyen eszközzel szeretnél beszélgetni, mert nagyon nem mindegy. A példádban szereplő valaminek, ha minden igaz, 16 bites belső címe van. Lehet, hogy egyszerűbb lenne egy olyannal kezdeni, aminek csak 8 bites belső címzése van, majd onnan továbblépni. Egy példát már mutattam neked itt: Bővebben: Link.
(#) Firefighter1 válasza Bakman hozzászólására (») Aug 17, 2017 /
 
Na ezt a hozzászólast kerestem! Hat igy egy fokkal egyszerűbb!
na latod ezt se tudtam hogy 16 bites meg 8 bites cim!

Rendeltem egy két olcsobb I2C-s komponenst, aztán most jöttek meg... ezért gondoltam hogy elkezdek gyakorolni velük!
(#) Firefighter1 hozzászólása Aug 17, 2017 /
 
Ma vagy holnap összedobok egy dugdosos panelon egy probakapcsolást. Tegnap megjött a PicKit3-is.... bár nekem elég klone kinézete van! De mindegy, ha megy akkor jo!
Azthiszem van I2C hőmérőm is, de giroszkopom az biztis, söt I2C-s LCD is van a pakkba! Dugdosok egyet aztán jöhet a teszt!

Azt még eltudod mondani előzetesbe hogy mi a különbség a MI2C_Transmit_Byte és a Sent_Byte_Transaction között?
Mintha az utobbinál egy pakba lenne az ezköz cime, a cimzett terület és az adat... migpedig a sima transmit Byte-nál külön külön egyenként /Call- onként/ kéne beirni a cimet, címzettet és az adatot
(#) Firefighter1 hozzászólása Aug 17, 2017 /
 
De lehet hogy rosszul látom, illetve gondolom!
(#) Bakman válasza Firefighter1 hozzászólására (») Aug 17, 2017 /
 
Ha addig nem válaszolnak, a hétvégén tudok részletesebben segíteni, nem vagyok a gépem közelében.
(#) Firefighter1 válasza Bakman hozzászólására (») Aug 19, 2017 /
 
Előre is köszönöm! Addig előbányászom az I2C-s perifériákat! Hogy tudjunk majd válogatni!
Bar most meggyülik a Bajon pickit3-al, de az már egy másik topik!
(#) Bakman válasza Firefighter1 hozzászólására (») Aug 19, 2017 /
 
Mellékletben két kép. Az I2C parancsok a DS1307 típusú RTC IC olvasásáról és írásáról szólnak. A képeken nem látszik, de a teljes program elején szerepel egyszer az I2C inícializálása. A harmadik kép az IC belső regisztereiről (memóriaterületeiről) szól, bővebben az adatlapban találsz információkat.

Alapinfó, hogy a DS1307-es IC címe 1101 000. Ez csak hét bit, a nyolcadik határozza meg, hogy írni vagy olvasni akarsz az IC-be/ből. Íráskor 1101 0000 (decimálisan 208) kell, olvasáskor 1101 0001 (decimálisan 209). Az egyszerűség kedvéért a makrókban is a decimális számok szerepelnek.

Kezdjük az írással (az idő beállításával), az egyszerűbb.
1: Az I2C kapcsolat indítása.
2: 208 kiküldése (az IC megszólítása, írás üzemmód).
3: Az IC-nek meg kell mondani, hogy melyik memóraterületre állítsa be a regisztermutatót. Jelen esetben a másodperceket akarod beállítani ami a nulladik regiszter.
4: 0. regiszterbe nullát írsz.
5: 1. regiszterbe (perc) beírod a beállítani kívánt percet.
6: 2. regiszterbe (óra) beírod a beállítani kívánt órát.
7: Az I2C kapcsolat leállítása.

A dolgot kicsit bonyolítja pár dolog. Az első lépés, legalábbis ennél az IC-nél az, hogy meg kell neki mondani, melyik regiszterrel akarsz foglalkozni. A 0. regiszter tartalmazza a CH bitet is. Ha az egy, akkor az óra áll. Az időt és a dátumot BCD formátumban kell megadni az IC-nek. Az IC automatikusan növeli regisztermutatót (olvasások és íráskor is), azt nem kell külön növelned. Magyarán, ha írsz a 10. regiszterbe, akkor a következő írás automatikusan a 11. regiszterbe fog íródni. 3. ikon: nem kötelező a nulladik regiszterrel kezdeni. Ha csak a dátumot akarod beállítani, akkor a harmadik ikonnál 3-at kell megadni. Az adatlapi regisztertáblázatban megadott címek hexadecimális formátumúak, azokat tetszés szerint át lehet váltani más számrendszerbe vagy eleve úgy használni Flowcode-ban:

155 = 0b10011011 = 0x9B

Olvasás:
1: Az I2C kapcsolat indítása.
2: 208 kiküldése (az IC megszólítása, írás üzemmód).
3: Regisztermutató nullára állítása, mert kíváncsi vagy a másodpercekre is (már ha valóban itt akarod kezdeni).
4: Az I2C újraindítása.
5: 209 kiküldése (az IC megszólítása, olvasás üzemmód).
6: Másodperc kiolvasása (0. regiszter, az olvasás után a regisztermutató automatikusan ugrik egyet).
7: Perc kiolvasása.
8: Óra kiolvasása. *
9: Az I2C kapcsolat leállítása.

* Olvasáskor a makrónak meg kell adni, hogy az adott olvasás az utolsó-e vagy lesz még több is. Ha az utolsó, akkor az adott értéket 1-re kell állítani. 6. és 7. makrónál nulla, a 8. makrónál ez az érték 1, jelen példában.
(#) Horváth P Tamás válasza kaqkk hozzászólására (») Aug 20, 2017 /
 
Szia sajnos csak most tudtam megnézni a programokat .Az adó része szépen küldi az adatokat de a vevő rész nem csinál semmit. Megnéznéd nekem,hogy mi lehet a baja ?
(#) Firefighter1 válasza Bakman hozzászólására (») Aug 20, 2017 /
 
Kicsit kezdem jobban érteni!
De ugy látom hogy I2C-n belül is el kell különíteni azokat az ezközöket amik csak adatot küldenek illetve azokat amik küldenek és fogadnak is!

Jelen esetben amire gondolok... Van itthon egy MPU6050 modulom, erre gondolom én értelemszerűen nem tudok irni, bár hogy nézegetem az adatlapját /igaz az angolom elég pocsék/ de ugy látom hogy "'az érzékenységet" én választom meg.... hogy azt hogy, azt még nem tudom!

De akkor ha én egy MPU6050-es modultol akarom lekérni az adatokat akkor

- Elindítom Start al az I2C-t

- Megszólítom a perifériát / adatlapja szerint ennek is a címe 1101000 mivel olvasok ezért 11010001 azaz 209

- Utánna Pedig és itt jön a pedig..

Mivel nem tudom értelmezni az adatlapot kicsit meg vagyok lőve!
Azt irja hogy a visszatérési értéket int-be mentsem ha jol olvasom.
Ok csináltam is 3 változot Xaxy Yaxy Zaxy int kategóriába. olvasásos megszólitás után hivok mégegy MI2C_Receive_Byte komponens makrót adom neki hogy Byte 0 visszatérési érték ( mert ha jol tudom oda menti a bejövőt) Xaxy??

Utánna végigpötyögöm ugyan ezt Yaxy-ra meg Zaxy-ra
plussz 3 másik változóval x-y-z gfyorsulásra, annyi különbséggel hogy a legutolsónál 0 helyett 1 Byte?

Vagy hogy címzem azt hogy honnan olvassa? Helyesebben hogy az X axysnnál az X axyst kérdezze, vagy ez automatikus?? és lépeget egymás után? én csak kérdezgessem az adatokat?

Vagy nagyon nagy nagy marhaságot írtam?

mpu1.PNG
    
(#) Firefighter1 hozzászólása Aug 21, 2017 /
 
Most néztem egy ( igaz Arduinos) videot, és ott találtam egy ilyen linket
Nem csodálom hogy nem találtam a melyik regiszter melyik tengelyhez tartozik, mivel én a produk infót néztem!

Itt a 4,17 és a 4,19 pontba van a tengelyekhez a regiszter hozzárendelve. bár itt megkülönböztet magas és alacsony kimenetet is!
Viszont olyan Byte fogadást ahol alacsony magas értéket egyaránt meg tudok adni azt csak a MI2C_Receive_Byte_Transaction-nál találtam

Viszont ez alapján valahogy így képzelem el ahogy a képen illetve a mellékelt programba van.

Ez már valamivel közelebb van az igazsághoz ugye?
A hozzászólás módosítva: Aug 21, 2017
(#) Bakman válasza Firefighter1 hozzászólására (») Aug 22, 2017 /
 
A képek alaján jó nyomon vagy de tesztelni csak hétvégén tudom. Ha a kapott értékeket kiíratod egy kijelzőre és mozgatod a modult, láthatóvá válik, hogy jól csinálod-e vagy nem. Pl. másodpercenként kiolvasod négyszer, így gyorsan látszik az eredmény.
(#) kokozo válasza Firefighter1 hozzászólására (») Aug 22, 2017 /
 
Szia!
Még mielőtt teljesen eltévedsz adok 3 képet..
Az egyik az olvasás a másik az írás a 3. a konfig.
Ahhoz hogy ez a gyro menjen nem elég annyi hogy kiolvasod a kívánt regisztert, mert azt nem fogja érteni, mivel alapból sleepben van.Ezután még konfigurálni is kell mert nem tudja az érzékenységet stb..
(#) Firefighter1 válasza Bakman hozzászólására (») Aug 22, 2017 /
 
Megprobálom akkor formába önteni! Meg komplett programot kalapálni belőle, aztán énis feltöltöm!
De azért majd számítok rád a hétvégén!

Közbe itt az adatlap alapjan már a konfigurálást is kezdem sejteni!
Aregiszterekbe kell "küldenem" hogy mit akarok és hogyan
Csak még kicsit katyvasz
A hozzászólás módosítva: Aug 22, 2017
(#) Firefighter1 válasza kokozo hozzászólására (») Aug 22, 2017 /
 
Szia!
Igen pont erre jöttem rá! már ahogy olvasom és kezdem megérteni hogy kell értelmezni az adatlapot rájöttem hogy az érzékenységet stb hogy állitom! De jok a képek amiket küldtél mert igy kezdem még jobban megérteni!

Azt el tudod meg mondani hogy a két féle küldés és fogadás között a Flow-ba mi a különbség!

Mert én csak azt látom hogy az egyik "komplexen irja az ID-t alacsony magas jelszintet és a visszatérési értéket a másik meg ugyan ezt tudja csak egyesével kell nekem bepöty-pöty
(#) kokozo válasza Firefighter1 hozzászólására (») Aug 22, 2017 /
 
Idézet:
„komplexen irja az ID-t alacsony magas jelszintet”
nincs alacsony magas jelszint itt csak egyesek és nullák vannak
Az "alacsony" az az írási cím a "Magas" meg az olvasási cím..
Azért jobb szerintem ha nem packba küldesz mindent mert sok felesleges dolgot küld újra meg újra ami csak lassítja és növeli a programodat. Ha tudod mit akarsz inkább pötyögj, a végén jobban jársz vele, és igazából csak az inicializálásnál kell pötyögni.
(#) Firefighter1 válasza kokozo hozzászólására (») Aug 22, 2017 /
 
Na mar eztis tudom akkor.... Lassan lassan de kezd összeálni a kép!
Ha jol látom az irási opciokat te egy makroba raktad bele igy azt nem kell mindig pötyögni... bár most csak mobilrol nézem... de jo ötlet!
Ezt az iniciálást még atkell vesézzem... de jo lessz ez!
A héten probalok egy programot összerakni rá... kivancsi vagyok hány helyen csúszok meg...
Szerintem lessz bőven!
(#) Broy hozzászólása Aug 23, 2017 /
 
Sziasztok!

16F1823-al kezdek megismerkedni (LED villogtatás) és van egy problémám.
Az órajelet internal clock-ra állítottam, 10 MHz-re. A Timer0 beállításai:
prescaler: 1:128
clock source: Internal Clock

A program által számolt frekvencia a Timer0-ra 76,294Hz. A megszakításban 10-el osztok, aminek
a LED-en 7,6 Hz-et kellene létrehoznia. Amit a LED-en látok, az kb. 0,2 Hz.
Valamit nem veszek számításba? 16F690-el jól futott.
(#) Bakman válasza Broy hozzászólására (») Aug 23, 2017 /
 
Töltsd fel a programot, úgy egyszerűbb ellenőrizni. Ami biztosan hibás, az az órajel beállítása, a kontroller nem tud 10 MHz-et előállítni a belső oszcillátorból.

Ha az osccon regisztert nem állítottad be, akkor a kontroller 500 kHz-es órajelről megy.
(#) Broy válasza Bakman hozzászólására (») Aug 23, 2017 /
 
Az Osccon-t nem tudom, hol kell állítani. C-ben?
Csatoltam pár képernyőfotót is.
(#) HuG hozzászólása Aug 23, 2017 /
 
Nem tudom, hogy hogyan lehetne erre a fórumra is egy fix fejlécet kitenni, mint a más fórumokban is van, ahol az ilyen fontos alap dolgok mindig ki lennének írva, mint az Osccon beállítása azzal az infóval, hogy a Flowcode nem állítja be. Nekem is Bakman nyújtott ebben segítséget régebben.
(#) Bakman válasza Broy hozzászólására (») Aug 23, 2017 /
 
Az adatlapból nézd meg, hogy a belső oszcillátor milyen frekvenciákon tud ketyegni. Ezután válassz egyet, állítsd be az osccon regiszterrel (Bővebben: Link) maj ezt az értéket add meg a Chip beállításaiban.
(#) Broy válasza HuG hozzászólására (») Aug 23, 2017 /
 
Ez oké, de F690-nél nem kell beállítani? Mert ott jól futott.
(#) Bakman válasza Broy hozzászólására (») Aug 23, 2017 /
 
Ott is be kell állítani de ha jól emlékszem, ott alapból 4 MHz-en fut a belső oszcillátor.
(#) Broy válasza Bakman hozzászólására (») Aug 23, 2017 /
 
Köszönöm a segítséget, minden flottul megy.
(#) Firefighter1 válasza kokozo hozzászólására (») Aug 24, 2017 /
 
Az I2C konfigurálását elég egyszer megcsinálnom a program elején ugye?
Tehát amikor áramot kap a PIC is meg az MPU is akkor "felkeltem", és beállítom az érzékenységet..
(#) kokozo válasza Firefighter1 hozzászólására (») Aug 24, 2017 /
 
Igen. Utána már csak olvasni kell.
Következő: »»   284 / 360
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem