Fórum témák
» Több friss téma |
Ha 1 soros input lenne, nem lenne problémám. Az egyidejüséggel -ütközés- van problémám.
----Közben szétnéztem a PIC-ek között és találtam jó-néhány PIC-et amiben benne van 3 hardveres UART. --- Az érdekelt, hogy egyszerübb PIC-el hogyan oldható meg a 2+1 soros port kezelése software-ből. ( Azt hiszem, hogy maradok a 3 UART-os PIC-nél...)
Minden egyes UART külön megszakításhoz köthető (pontosabban másik bit jelzi a megszakítás okát), nem lehet itt semmi probléma. (Az gond lehet, ha túl nagy az adatátviteli sebesség, és a kontroller nem bírja.) Ha csak egyirányú az adatforgalom, két UART is elboldogul a dologgal.
Ütközés nem számít, a FIFO-ba írás sokkal gyorsabb, mint egy adatbájt átküldése. A hozzászólás módosítva: Jún 16, 2022
Szia!
Ha a soros kommunikáció sebessége alacsony, akkor nem olyan lehetetlen dolog a szoftveres UART. Adni értelemszerűen egyszerűbb, sőt ha van egy kihasználatlan SPI modulod, azon is ki lehet adni a soros kommunikáció szerinti adatsort. A vétel sem lehetetlen, több féle módon felépíthető, például itt is olvashatsz egy megközelítést.
Ha az output bitsebessége megegyezik valamelyik input bitsebességével akkor elegendő 2 uart is. Amúgy szoftveresen az output könnyebben megoldható, egy timer-t használva akár több uart outputot is működtethetsz (bár ebben az esetben erre pont nincs szükség). Az viszont lényeges, hogy szoftveres uart esetén a megszakításokat úgy kell kialakítani, hogy ne okozzon túl sok bitidő változást a többi megszakítás. Ezt megszakítás prioritással vagy alacsony bitsebesség esetén nagyon rövid végrehajtási idejű megszakításkiszolgáló eljárásokkal lehet megoldani.
Elméletileg tűpontos UART adót Timer+Output Compare hardverre építve lehet csinálni, vevőt pedig input capture-re építve. Ezzel a megoldással a legkevésbé szigorú az interrupt kiszolgálás reakcióideje.
Kevésbé pontos, ha a kimenetet timer interruptból változtatjuk, a bemenetet pedig interruptban mintavételezzük. Itt ugye az interrupt kiszolgálási idejéből adódni fog egy jitter. Olyat is lehet csinálni, hogy interruptokat letiltva, az utasítások végrehajtási idejét számítva adjuk ki a jelet (bit banging). Ehhez hasonló vevőt is lehet írni. Szinkron esetben (az egyik adó a másik órajelét másolja küldésre) meg lehet csinálni duplex működést is, azaz azt hogy egyszerre írunk és olvasunk. Egyrészt szép kihívás ilyeneket csinálni, másrészt viszont időrabló, és nagyon kellemetlen debuggolni, ha nem jól működik. Márpedig nekem sosem szokott elsőre működni. Plusz ha más feladata is van a csipnek, akkor az azzal való együttműködéssel egyre komplexebb lesz számolni időzítési szempontból. Úgyhogy a legjobb olyan csipet választani, amin van elegendő UART.
Köszönöm, ezt még tanulmányoznom kell!
"asch" és "benjami" Köszönöm a segítségeteket, a kimenet nem okoz problémát. Az a Timeres ötlet a vételnél is működhet, ha jól gondolom. (Feltéve, hogy azonos baudrate van minden csatornán.) Startbit megjelenésétől adott időben kell kezdeni a port olvasását és bitenként beforgatni. Szerintem az nem jelenthet túl nagy problémát, hogy a két input véletlenszerűen érkezik.
Nem volt szó konkrét típusról. Elvi kérdés volt. lehetőleg szoftveres megoldásra.
Nemrégen még hardver portról volt szó. Itt.
A hozzászólás módosítva: Jún 18, 2022
Segítséget kérek, PIC12F1572-t vettem (valamikor). MPLAB-ban ilyen nincs. GITHUB-ról letöltöttem a PIC12F1562.inc file-t, betettem a többi közé, de ettől még továbbra sem választható ki.
Tudja VALAKI, hogy mit kellene tennem?
A pickit2-höz csináltak korábban több ezsközt ismerő állományt. A pickit2 továbbfejlesztése vagy ilyesmi a téma neve, ott kellene megnézni.
Keresd a "PK2DeviceFile.dat" állományt. A 2019.12.21. állományban benne van.
Nálam az eredeti telepített verzióban is megtalálható. "PICkit 2 v2.61" 2009.03.24. Üdv. M. A hozzászólás módosítva: Jún 29, 2022
Nem a PICkit2 -höz keresi az okosítást, hanem az MpLab -hoz.
Van két nem túl jó hírem: 1. MpLab fejlesztése megállítva, használja az ember az MpLabX -et. Jó adag törelem kell hozzá. 2. Az MpLabX fejlesztése közben a MpAsm -et félre tették, helyette az as nevű program jött. Még nem használtam.
Köszönöm MINDENKI hozzászólását segítségét. Már rájöttem, hogy az MPLAB-al nem jutok előrébb ( valószinű ).
Már letöltöttem az MLABX-et, küzdök vele. ( Eddig úgy tűnik, hogy nem lesz a kedvencem. ) A hozzászólás módosítva: Jún 30, 2022
Szia!
Én MPLAB X-et használok sok éve, és teljesen jól elvagyok vele. De az tény, hogy az újabb verziók el vannak cse*-ve. A leg használhatóbb a v3.65-ös.
Sziasztok! PIC12F1501-esnél küzdök az analóg-digitál átalakítással.
A beállítás majdnem ua. mint a PIC pdf-ben van. Mit nézek el?
Szia!
Csak pár apróság, az ADC résztől függetlenül: A INTCON core regiszter, tehát neki nem kell BANKSEL, mindig elérhető bárhonnan. Ahol saját regisztereket használsz (RESULTHI, RESULTLO, TEMP), azoknál jó bank van kiválasztva? (Ha ezeket a common ram-ba tetted, akkor ezeknek se kell bankselect). A SampleTime rutinban is jól van beállítva a bank (ha szükség van rá)? Mert az úgy hívódik meg, hogy az ADCON0 bankja van kiválasztva. A hozzászólás módosítva: Dec 4, 2022
Az összes változóm a common-ban van. Ez csak egy potival szabályozható kitöltésű négyszögjelet állít elő, megszakításból.
Bocsánat! Nem itt volt a hiba... Teszteléshez másik változót használtan és benne maradt.
Na, akkor végül mégis a változóval volt a baj.
Igen, ez maradt ki:
rlf TEMP,f --> movf TEMP,w --> movwf arány bsf INTCON,GIE ;-engedélyezve goto Cont ;Kezd
Sziasztok!
MPLAB-X szimulátorával küzdök. RA2-t szeretném izgatni, ha közvetlenül átírom az RA2-t akkor beugrik a megszakításba, de a mellékelt módon nem. Nem látom az RA2 változását sem. (Aszinkron módból is működik, de így nem tudom a megfelelő időben átírni.) Mit rontok el?
Szerintem itt a felső kis kockában azt lehetne beállítani, az induláshoz képest mennyi idő múlva történjen a váltás, le leginkább a sor végén lévő mező kitöltése segítene. ( szerintem ott lehet beállítani, milyen változó milyen értékénél következzen be a gombnyomás.)
Különböző számokat is próbáltam, semmi eredmény.
"MPLAB X IDE v4.05" -t letöltöttem, ezzel működik! ( A korábbi v3.65-el volt a problémám...)
Megpróbáltam először a legújabb "v6.05"-t majd a "v6.00"-t, de ezeknél az "#include "p12F1572.inc" sornál már megadta magát. vagy nem szereti az assemblyt, vagy én telepítettem rosszul.
Attól függ milyen asm-et használsz? Ha az mpasm-et, akkor az még 32 bites és az MPLAB-X 5.35-ös verziója ami még ezt támogatja, az újabbak már nem.
Köszi, ezt nem tudtam. (Ettől a V3.65-el még illett volna működnie.)
Talán segít valakinek: (az előzőekben szerepelt stimulus problémával kapcsolatban)
STIMULUS A lényeg fordítása: -gugli- Az inger lehetővé teszi a felhasználók számára, hogy értékeket adjanak a tűkhöz és az SFR-ekhez is. Ez némi zavart okozhat, mivel a portregisztermezők és a porttűk általában ugyanazt a nevet viselik, például RB0 és PortB.RB0. Az ösztönzés megköveteli, hogy a portregisztermezők a PortName.FieldName formátumot használják, hogy megkülönböztessék a portmezőt a port PIN-kódjától. Például: PORTB.RB0 - a port mezőre utal RB0 - a tűre utal Amikor egy tűhöz injektál, a szimulátor azt tekinti, hogy ez megegyezik a tűre feszültséget hajtó alkalmazási áramkörrel. A PORT regiszterbe történő injektáláskor a szimulátor azt tekinti, hogy ez megegyezik a PIC szoftverrel a portregiszterbe történő írással. A tűbe injektálás modellezi a PIC-eszköz bemenetét. A PORT regiszterbe történő injektálás a PIC kimenetét modellezi.
Sziasztok!
Az lenne a kérdésem, hogy létezik-e MPLAB X-ben olyan behívási parancs, amire a fordító hajlandó megkeresni a kívánt fájlt? Hogy érthetőbb legyen a kérdésem.
Ezek a memóriába töltendő képfájlok egy része. Ebben a formában kizárólag akkor hívja be a fordító, ha a főprogrammal azonos mappában van. Ha már ezen mappán belűl egy almappába teszem, hibára fut. Pedig nagyon szeretném elkülöníteni, mert a képfájlokkal és alprogramokkal együtt van vagy 50 db. behívásom, és a törzsmappa ettől már kissé áttekinthetetlen. Ha valaki tud erre valami trükköt és megosztaná velem, nagyon megköszönném. A hozzászólás módosítva: Ápr 9, 2023
|
Bejelentkezés
Hirdetés |