Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   343 / 361
(#) Bakman válasza kaqkk hozzászólására (») Jún 3, 2021 /
 
Az SPI-nek két külön adatvezetéke (bemenet és kimenet) és egy órajel vezetéke van, az I2C-nek kétirányú adatvezetéke és külön órajel vezetéke van. Az I2C-nél kell Start, Stop, ACK, címzés, különben nem válaszol az IC. Ezeket a különbségeket hogyan hidaltad át? Tényleg kíváncsi vagyok.

Nem lehet, hogy DS3234-es IC-vel kevered a DS3231-est?
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Nem lehet , DS3231 et használok viszont abban igazad van hogy van még egy kimenet (csak figyelmetlenségből azt is kitörölgettem (RC0) Ő volt a start-stop kimenet .
A hozzászólás módosítva: Jún 3, 2021

RTCpélda.fcf
    
(#) Bakman válasza kaqkk hozzászólására (») Jún 3, 2021 /
 
Már csak az kell, hogy milyen RTC IC-t használsz, mert a DS3231-es önmagában nem tudja az SPI-t. Modul, kiegészítő IC-vel az RTC és a PIC között?
A hozzászólás módosítva: Jún 3, 2021
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Leírom még egyszer : DS3231 soha nem volt a kezemben más RTC és közvetlenül a pic lábaira van kötve .
A hozzászólás módosítva: Jún 3, 2021
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
4 éve tettem fel a youtbe-ra de régebben készült a program A videón látszik az "öcsipanel" nincs rajta más csak a DS 3231
A hozzászólás módosítva: Jún 3, 2021
(#) Bakman válasza kaqkk hozzászólására (») Jún 3, 2021 /
 
Ez egyre jobban érdekel. A mutatott példádban a CS láb (RC0) az RTC melyik lábára csatlakozik?
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Idézet:
„(RC0) Ő volt a start-stop kimenet .”
A hozzászólás módosítva: Jún 3, 2021
(#) Bakman válasza kaqkk hozzászólására (») Jún 3, 2021 /
 
Ezt olvastam, de az IC-nek nincs ilyen bemenete, a konkrét lábszám érdekelt volna, hogy a DS3231-es IC melyik lábára csatlakozik az RC0 kimenet.
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Ennek már van vagy 6 éve hogy elkészült , nem sok lehetőség van próbáld ki , és ha jól emlékszem (6 év távlatából) csak két lábat használtam , RC4-5 . Az RC0 csak valakinek a tanácsára került a programba de a végén nem kellett használni ...
A hozzászólás módosítva: Jún 3, 2021
(#) Bakman válasza kaqkk hozzászólására (») Jún 3, 2021 /
 
Ok, megvan, nem voltam elég figyelmes. DS3234-et használtál DS3231 helyett, a regiszterek címei, amit a program tartalmaz, azzal kompatibilisek. A PIC RC0 kimenete az RTC 1-es lábára kell, hogy csatlakozzon.

Vagy két láb használata DS3231-gyel (I2C) vagy négy láb használata DS3234-gyel (SPI). Ebben volt keveredés.
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Nem ! 3231 et használtam hetekig bújtam az adatlapját ,ki nyomtattam az összes kb70 oldalt és mint már írtam sosem használtam más rtc-t , csak az ic-t vettem meg én csináltam az öcsipanelt is .és két lábat használtam .És ezt szoktam szeretni amikor más látatlanban jobban tudja hogy mit hogyan csináltam mint én magam .....
A hozzászólás módosítva: Jún 3, 2021
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
Viszont azt nem tudom hogy a 0x80 as parancsot honnan vettem a beállításnál ,lehet hogy ott van az eb elhantolva ? És nézem az adatlapot ( azóta is rakosgatom) tényleg i2c van a lap tetején (evvel akkor tuti nem foglalkoztam!) Már engem is kezd érdekelni hogyan működhetett így ..
A hozzászólás módosítva: Jún 3, 2021
(#) kaqkk válasza Bakman hozzászólására (») Jún 3, 2021 /
 
A képen a szinkron SPI működése látható talán ezt oldotta meg a programom, valamiképp ezt érzékelhette a DS i2c ként ?
(#) Bakman válasza kaqkk hozzászólására (») Jún 4, 2021 /
 
Nem tudom hogyan működhet. Lehet, hogy a forráskód, amit feltöltöttél DS3234-hez szól, te időközben 3231-et tudtál szerezni, ahhoz át lett írva de az átírt elveszett és csak a régi, első generációs változat maradt meg.
(#) kaqkk válasza Bakman hozzászólására (») Jún 4, 2021 1 /
 
Ugye még mindig nem hiszed . Így kár is folytatni .Majd egyedül kiderítem . Nem volt másik változat a programból , az első működő alap program volt folyamatosan fejlesztve csak az LCD makró fejlődött azután hogy beindult az RTC kezelése , amit a programban látsz .
(#) Bakman válasza kaqkk hozzászólására (») Jún 4, 2021 /
 
Egy I2C csatolófelületű eszközt nem lehet szóra bírni SPI kommunikációval, már csak a fizikai korlátok miatt sem. A megosztott kódod az SPI variációjú RTC-hez tökéletes de nem használható az általánosabban elterjedt DS3231-hez.

Gondolom nem véletlen van külön SPI és I2C csatolófelületű RTC a Maxim kínálatában.
(#) niedziela válasza kaqkk hozzászólására (») Jún 4, 2021 /
 
Ha most azt veszed zokon, hogy valaki kétségeket támaszt az általad használt kétvezetékes SPI kommunikációval megszólított i2C protokollal szemben, akkor azért az nem meglepő.
Főleg ha a két kommunikáció működését legalább alapszinten ismeri.

Csak egy lényegi különbséget hadd említsek azon felül, hogy az egyik 2 vezetéken a másik 3 vezetéken beszélget oda-vissza.

Az I2C biztosítja, hogy az elküldött adatokat a slave eszköz fogadja, míg az SPI nem ellenőrzi, hogy az adatok megfelelően vannak-e fogadva

Vagy az van, hogy sikerült flowban írnod egy SPI-i2C kommunikációs csillagkaput, amit még mi halandók nem fogunk fel ép ésszel
(#) kaqkk válasza Bakman hozzászólására (») Jún 4, 2021 /
 
Ezért vagyok rá kíváncsi hogy mégis hogyan sikerült ...
(#) kaqkk válasza niedziela hozzászólására (») Jún 4, 2021 /
 
A program előttetek van (a csillagkapu nyílik) csak át kell lépni rajta .... Ha lesz érkezésem újra beégetem és kipróbálom a programot .
(#) bubuszoft válasza kaqkk hozzászólására (») Jún 7, 2021 /
 
Szia Kaqkk
Le tudnád rajzolni, hogy pontosan hogy kell a pic-re csatlakoztatni a DS3221-et, mert tesztpanelon fejlesztgetném, persze ha nem gond!
(#) kaqkk válasza bubuszoft hozzászólására (») Jún 7, 2021 /
 
Kínai panelon van ? Akkor a táp egyértelmű , az sda-scl meg bármelyik egymás mellett lévő két lábra , ahogy a legegyszerűbb a bekötés . A kimeneteket majd rákonfigurálod a programban a DS re .
A hozzászólás módosítva: Jún 7, 2021
(#) Bakman válasza bubuszoft hozzászólására (») Jún 7, 2021 /
 
Ha van a kontrollerben I2C modul, akkor célszerű oda csatlakoztatni, lásd melléklet.

SCL_SDA.jpg
    
(#) bubuszoft hozzászólása Jún 8, 2021 /
 
Nagyon szépen köszönöm
(#) Horváth P Tamás hozzászólása Jún 18, 2021 /
 
Sziasztok tudna valaki útmutatást adni ehhez a progihoz ( Lehetőleg szájbarágósan ) . Egyszerűen nem értem. Köszi előre is.

rtc (2).fcf
    
(#) Bakman válasza Horváth P Tamás hozzászólására (») Jún 18, 2021 /
 
osccon:01110000;

Első C blokkal beállítja a belső órajelet 8 MHz-re. Az "osccon:01110000;" formátum helyett javaslom inkább az "osccon=0b01110000;" variációt. Lehet, hogy kettősponttal is működik, én még nem láttam ezt a variációt. A szám sincs meghatározva, miszerint az binárisan értendő és lehet, hogy decimálisként értelmezi a fordító (most nem tudom kipróbálni).

Inits makró: bekapcsolja az I2C modult és elindítja a kijelzőt. Igaz, utóbbit egyszer már megtette a fő függvényben. RTC_W változó 208 lesz (0b11010000), RTC_R változó pedig 209 (0b11010001). Az egyikkel írni, a másikkal olvasni lehet az RTC-ből.

Read_Time() makró: kiolvassa az időt az RTC-ből, pontosabban a másodperc, perc, óra és nap adatokat. A dátum, hónap és év adatokkal nem foglalkozik a program, nem is kötelező.

Disp_Time makró: a kiolvasott adatokat kiírja a kijelzőre, mindig két számjeggyel, pl. 03:12:37, a napot már szöveggel.

Egyelőre ennyi. Melyik része nem érthető?
(#) kaqkk hozzászólása Jún 18, 2021 /
 
74595 shiftregiszterhez tudna valaki egy példát feltenni (mondjuk flow8 ban ?)
(#) Bakman válasza kaqkk hozzászólására (») Jún 19, 2021 /
 
Ha 5-ös verzió is megfelel, lásd melléklet.

Nem olyan bonyolult az 595-ös lelke, mint elsőre látszik. Az IC-nek van egy bemeneti lába. A beérkező adat (L vagy H szint) az órajel hatására balról jobbra vándorol a rajz szerint. Egy órajel impulzus hatására a léptetőregiszterekben lévő adatok jobbra lépnek egy pozíciót. A bal oldali regiszterbe bekerül az az adat ami a bemeneten volt a léptetés pillanatában, a jobb oldaliból átkerül a következő bemenetére, már ha van következő.

Meg lehet azt csinálni, hogy a bemenetre beküldesz egy csomó adatot tárolás nélkül. Ilyenkor az adat egyszerűen végigfut a léptetőregisztereken, a kimenetek nem fognak változni. Amikor a 12-es láb kap egy impulzust, akkor a léptetőregiszterek aktuális állapota átmásolódik a tárolóregiszterekbe. Itt fontos azt megjegyezni, hogy ez egy másolás, a művelet hatására a léptetőregiszterek állapota nem változik.

A rajzon két 595-ös van. Ahhoz, hogy a jobb oldaliba tudj írni ilyen láncolás esetén, két bájtot kell kiküldeni. Az első bájt a bal oldali IC-be kerül, a második "átnyomja" az első bájtot a jobb oldaliba és beül az első helyére. Ha csak egy bájtot küldesz ki mert a bal oldalit akarod írni, a bal oldalon lévő adat akkor is átkerül a jobb oldaliba.
Magyarán arra kell figyelni, hogy láncolás esetén mindig annyi bájtot kell küldeni, ahány 595-ös IC van felfűzve. Az elsőként kiküldött bájt az utolsóba kerül, az utolsó bájt a lánc első IC-jébe.

Az órajel polaritása inaktív állapotban alacsony, az adatnak az órajel felfutása előtt már a bemeneten kell lennie. A legyegszerűbb az SPI modul bekapcsolása. Igaz, a modul átveszi a hatalmat az SDI láb felett is de egyszerű bemenetként még használható, a PORT regiszter továbbra is a láb aktuális állapotát mutatja.
(#) kaqkk válasza Bakman hozzászólására (») Jún 19, 2021 /
 
Köszönöm már nézem is ..
(#) Horváth P Tamás válasza Bakman hozzászólására (») Jún 20, 2021 /
 
Szia . Köszönöm az eddigi segítséget .Nem értem pl. hogy miért kell a feltételes elágazás a Disp_Time makróba , pl. SEC <10. Mi a szerepe a var1 és a var2 változóknak? Nem értem azt sem ,hogy a számitásnál milyen művelet a reg_a>>4 és a reg_a<<4 .
(#) Bakman válasza Horváth P Tamás hozzászólására (») Jún 20, 2021 /
 
Amikor kiolvasod az IC-ből az időt van hogy egy és van, hogy két számjegyet kapsz, pl:
10:13:55
vagy
03:07:05

Ha a kapott érték kisebb, mint tíz, akkor a konkrét érték kiírása előtt egy nullát kell megjeleníteni, különben kiíráskor keveredések lehetnek. Vagy vándorol jobbra-balra a kettőspont vagy a tizes helyiértéken a korábbi, már nem érvényes szám marad. Digitális időkijelzésnél általánosan megszokott/elfogadott, hogy a tizes helyiértéken nullát jelenítünk meg. Ez az óra esetén változó de perc és másodperc esetén fixnek mondható.

A duplázott kisebb, nagyobb jelek léptetést jelentenek, bit szinten. Vegyünk egy byte változót, értéke legyen pl. 01101100. Egyszeri jobbra léptetés (>>) esetén minden bit eggyel jobbra lép. A bal oldali helyiérték nulla lesz, a jobb oldali pedig elveszik. Egyszeres léptetés esetén 00110110 értéket kapunk. Balra léptetés esetén is ez a szituáció, de ott a bal oldali bit veszik el, a jobb oldali pedig nulla lesz. A << és >> jel utáni szám azt mondja meg, hány lépést kell elvégezni jobbra vagy balra.
01101100 >> 4 = 00000110
01101100 << 4 = 11000000
Következő: »»   343 / 361
Bejelentkezés

Belépés

Hirdetés
XDT.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