Fórum témák
» Több friss téma |
Sziasztok.
Segítséget szeretnék kérni. Van egy pic16F877 ezt a pic-et Basicben szoktam programozni és az Oshonsoft környezetben. De soros portot soha nem programoztam csak Delphivel. Delphiben simán fel is tudom dolgozni az adatokat. Most viszont egyenesen a pic-re kellene írnom egy programot a lényeg, hogy soros porton bejön adat és ezt kellene feldolgoznom vissza nem, kell válaszolnom csak figyelnem a bejövő adatot és azt feldolgozni. Hiper Terminálban és Delphiben ezek a karakterek jönnek ’+000.0’ 9600 sebbeséggel . A kérdés még egyszer hangsúlyozom pic soros port programozásban nincs gyakorlatom, hogy tudom az adatokat megkapni. Egyáltalán, hogy álljak neki példaprogramokat szinte csak assemblerben találtam, de nekem Basic-es segítség kellene, mert a többi részét abban írnám meg. Segítségeteket előre is köszönöm.
A thread-el kitudom olvasni basicben?
Ha eddig nem tuttad ezutan sem tudod, de ott esetleg valaki tudna segiteni.
Az oshon basic-nek nagyon jó a segítsége, és is azzal használtam. Van benne demópélda is soros port kezelésre.
Az alábbi forráskódból jól látszik a sorosport kezelése. A hserout-al küldöd ki az adatokat. A hserin-nel fogadod az adatokat. A hseropennal nyitod meg a soros portot adott sebességgel.
Ha valamit nem értesz, kérdezz!
Sirály 12.
A példa programod teljesen tökéletes most megpróbálok vele egy kicsit bűvészkedni és tanulmányozni. Próbálok innen magamtól rájönni. De, ha elakadok, akkor a segítségedet fogom venni. Segítséged köszönöm. Remélem, ha lesz, kérdésem még számíthatok rád?
Bármilyen kérdésed lenne, csak nyugodtan. Ha még tudok rá válaszolni, akkor fogok is.
Szóval megcsináltam a példa progidat. Az első kérdés feléd gyorsabban megy, mint gondoltam. A program megáll az „Lcdinit” –nél. Miért? Lehet, hogy kezdő kérdés?
Jó, meg van gondolkoznom, kellet volna, mielőtt kérdezek.
Ha nincs LCD kijelződ, akkor az LCD-re vonatkozó sorokat ki kellene hagyni - gondolom én.
Elvileg nem szabadna megállnia!
Próbáld ki ezt a kódot:
Ha a szimulátorban nézed, akkor ott lehet, hogy sokat kell várni rá, hogy továbblépjen, mert itt van bizonyos időzítés. Ilyenkor vár, hogy az lcd biztosan beálljon.
Megpróbálom ezt a megoldást. De mindent most itt az Oshonsoft programmal tesztelek egyelőre. Tehát van LCD.
Szóval küldök egy képet, hogy néz ki az egész. Az LCD részt kivettem a programodból és beírtam gyári pl. program LCD kezelését. Avval el is jutok, teljesen kijelölt kód ig. De onnan mintha lefagyna. A terminál rész viszont megy.
Kód Define ADC_CLOCK = 3 'default value is 3 Define ADC_SAMPLEUS = 10 'default value is 20 Define LCD_BITS = 8 'allowed values are 4 and 8 - the number of data interface lines Define LCD_DREG = PORTB Define LCD_DBIT = 0 '0 or 4 for 4-bit interface, ignored for 8-bit interface Define LCD_RSREG = PORTD Define LCD_RSBIT = 1 Define LCD_EREG = PORTD Define LCD_EBIT = 3 Define LCD_RWREG = PORTD 'set to 0 if not used, 0 is default Define LCD_RWBIT = 2 'set to 0 if not used, 0 is default Define LCD_COMMANDUS = 2000 'delay after LCDCMDOUT, default value is 5000 Define LCD_DATAUS = 50 'delay after LCDOUT, default value is 100 Define LCD_INITMS = 2 'delay used by LCDINIT, default value is 100 Lcdinit 1 Dim i As Byte Hseropen 9600 WaitMs 1 For i = 1 To 0 Step -1 Hserout "Number: ", #i, CrLf Lcdcmdout LcdClear Lcdout "Number: ", #i WaitMs 1 Next i loop: Hserin i -----itt---- Hserout "Number: ", #i, CrLf Lcdcmdout LcdClear Lcdout "Number: ", #i Goto loop
Természetes, hogy megáll, mert várakozik bejövő adatra. Amíg nem küldesz neki valamit, addig nem megy tovább.
Van erre egy parancs, hogy ilyenkor is továbblépjen, mindjárt megkeresem.
De én küldök adatott. Nem tudom, hogy amit csatoltam képet megnézted-e, ott látszik, hogy megy adat a terminálon. Ezért nem értem? Azért köszi, hogy ennyit segítesz.
Max még az átviteli sebességre tudok gondolni. A programban és a pic forrásába is egyforma érték van megadva?
Szia
Valaki csinált nekem egy digitális höméröt Pic 16f873A -val meg 4055 ic , hétszegmenses kijelzövel. A problémám a következö gondol egyet a müszer és teljesen sötét lesz . Maga a Pic kimenetein 4, 8 V mérek a 4055 szintén de a kijelzö nem ir ki semmit. HOL LEHET a HIBA tudnál e ebbe segiteni nekem? üdv
Hali
Kapcsolasi rajz es esetleg program nelkul eleg nehez lesz Udv Vili
Üdv!
Ha le rajzolom akkor tudnál segiteni?
Az átviteli sebbeség jó hisz az oshonsoft programban a pc serial port terminálnál is látszik, hogy van adat és ráadásul ott mutatja is a 9600 com1-et. Ma nekiállok és megcsinálom a teszt panel egy LCD és rs232 csatlakozóval. Hátha csak oshonsoft program szívat. De, ha esetleg rá jösz valamire írj. Ez eddigi segítséged is nagyon jó azért már sokkal közelebb vagyok, mint voltam.
Szia.
A program tökéletesen működik. Leteszteltem! Ahogy adatot küldök neki, azonnal továbblép a Hserin i soron, és megy szépen tovább. Ez:
A hosszú időzítéseket és felesleges dolgokat kiszedtem, a könnyebb szimuláció miatt, ha élesben akarod használni, akkor persze kellenek!
Na, szóval leteszteltem az oshonsoft programmal és itt elindítottam a Hardver Uart Simulator interfest és ott beírtam Hex –be vagy bytba. Mindent kiírt a LCD –re. Hétvégén azért megcsinálom a teszt panelon. majd írok, ha valami nem megy. De amit rá akarok kötni hardvert és terminálon látom, az adatott azt itt nem látom ez azért érdekes? Delphiben comport komponenssel is látom az adatott, na de majd rájövök, ha nem akkor írok.
Ja de hülye vagyok nem is köszöntem utólag is, szia.
Üdv!
Ne használjátok a hserin parancsot, mert lesz olyan adat, ami nem fog megérkezni. UART megszakítást használjatok. Csak ki kell olvasni az RCREG értékét amikor megszakítás volt és már meg is van az adat. Ez a legtutibb módja annak, hogy sorosan adatot fogadjunk PIC-el. Ha jól emlékszem valahol Pixels kolléga leírta, hogy miért nem jó a folyamatos pollozás, és miért jobb az interruptos megoldás. Remélem tudtam segíteni, üdv, Matt
Sziasztok. Szóval sikerült megcsinálnom teszt panelt. Rákötöttem egy laptopot, hogy adatott küldjek, minden szuper terminálban látom az szöveget bejönni. mikor leüttök, egy billentyűt akkor az megjelenik az LCD. Viszont ha rákötöm azt a külső egységet, amit működtetni akarok akkor semmi mást nem látok csak annyit, hogy’ number: 49’. A 49 az nem nulla karaktert jelent tehát, hogy semmi adat nem jön? Ja, másik ezt az Uart megszakítás, hogy kell megvalósítani?
Szia!
Csatoltam egy mellékletet kommentezve, amin szépen látszik, hogy kell használni a megszakítást soros adat fogadása esetén. Ha kérdésed van, szívesen válaszolok, ha tudok. Üdv, Matt
Szia. Most értem haza és láttam, hogy írtál segítséged előre is köszönöm. Ma megnézem, és holnap megpróbálom beilleszteni a programomba, ha nem megy, szólok. Segítséged előre is köszönöm.
|
Bejelentkezés
Hirdetés |