Fórum témák
» Több friss téma |
Fórum » Bascom-AVR
Eddig nem tettem, most tettem ; az eredmény még rosszabb
A probléma az lehet, hogy a beolvasott string is tartalmaz CR LF eket a végén
Tehát befelé is olvasol... akkor lehet, hogy az be is jön, mivel van ";" a printnél, az biztosan nem ad magától.
A bejövő az ez :
https://kepkuldes.com/images/0307222a06819be573c4208608ba7e2e.jpg nem tartalmaz plusz LF -eket hogy rosszabb lett azt arra értem, hogy ugyan LF nélkül de egybe írja az egészet
Lehet, kipróbálnám egy normál UART-al rendelkező uC-vel a dolgot. Valami kis arduinos panel csak akad M16/M328-al. A fene sem tudja, mennyire jó a SW soros itt. Vagy menj fel 16MHz-es órajelre, hát ha stabilabb a dolog.
Mindenképpen majd valami HW UART kell, és nagyobb órajel, de nem hiszem, hogy ezt most zavar okozná, nagyon szabályszerűen kiteszi azt a két LF -et de egyébként hibátlan a kommunikáció. Most arra gondolok, hogy amikor beolvassa input -tal akkor a második input még az előző string végén az LF et beolvassa erre a realterm emel egy sort, ezért néz így ki. Csak azt még nem tudom hogyan tudnám, hogy eggyel arrébb olvasson a bejövő adatokból....
Így van valamiért az LF odakerül az elejére mert ha átalakítom akkor jó.
Gpgga = Mid(gpgga , 2 , 79) Esetleg arra nincs ötleted, hogy végül is az egész azért készül, hogy az eredeti NMEA mondatokat kiegészítsem egy GPVTG mondattal is. Ehhez a GPRMC sorból az 50. karaktertől kezdődően lehet kiolvasni a sebesség és irány adatokat. De a sebesség sajnos nem mindig 4 karakter hanem ha 100 csomó feletti a sebesség akkor már 6, így eltolódik az irány adat kezdete, ami persze ugyan így többféle helyet foglal...
Tisztelt Fórumtársak! Ha valaki rendelkezne a Bascom könyvvel és ezt hajlandó lenne elküldeni valami elektronikus formátumban nekem, nagyon megköszönném. Természetesen csak ha ez nem sérti valamelyik fórumszabályzatot, vagy a szerzőt.
Szerintem anno letöltöttem, de ma fél délután kerestem és persze, hogy nincs meg.
Szia!
Port pazarlás lett a vége. Van felesleges mega8 itthon. Valamire el kell használni. Ds1307 rtc-nek hogyan tudom állítani a 12/24 órás bitjét? Adatlapból nekem kicsit kínai a dolog. Annyit ki hámoztam, hogy talán az ötödik (vagy hatodik) bit lenne ezért a felelős. Belinkelem a kódot ami biztosan tartalmaz még hibákat de eddig jutottam vele. $Regfile="m8def.dat" $Crystal=4000000 $hwstack=40 $swstack=16 $framesize=32 config portc.3=output config portc.2=output config PORTC.1=OUTPUT config PORTC.0=OUTPUT config PORTB.5=OUTPUT config PORTB.4=OUTPUT config PORTB.3=OUTPUT config PORTB.2=OUTPUT config PORTB.1=OUTPUT config PORTB.0=OUTPUT config PORTD.7=OUTPUT config PORTD.6=OUTPUT config PORTD.5=OUTPUT $lib "ds1307clock.lib" $lib "i2c_twi.lbx" Config Sda = Portc.4 Config Scl = Portc.5 config pind.2=input config pind.3=input Config Clock = User ' 1307 klok Config Date = Dmy , Separator = - declare sub Getdatetime declare sub percnovel declare sub oranovel Dim Ds1307w As Byte Dim Ds1307r As Byte Dim Weekday As Byte dim perc as Byte dim ora as Byte Ds1307w = &B11010000 Ds1307r = &B11010001 do enable interrupts enable int0 enable int1 on int0 percnovel on int1 oranovel 'call Getdatetime incr perc portd=perc loop sub Getdatetime disable int0 disable int1 I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 0 ' start address in 1307 I2cstart ' Generate start code I2cwbyte Ds1307r ' send address I2crbyte _sec , Ack I2crbyte _min , Ack ' MINUTES I2crbyte _hour , Ack ' Hours I2crbyte Weekday , Ack ' Day of Week I2crbyte _day , Ack ' Day of Month I2crbyte _month , Ack ' Month of Year I2crbyte _year , Nack ' Year I2cstop _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) end sub sub percnovel disable interrupts incr _min if _min=59 then _min=0 _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 0 ' starting address in 1307 I2cwbyte _sec ' Send Data to SECONDS I2cwbyte _min ' MINUTES I2cwbyte _hour ' Hours I2cstop waitms 300 end sub sub oranovel disable interrupts incr _hour if _hour=23 then _hour = 0 _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 0 ' starting address in 1307 I2cwbyte _sec ' Send Data to SECONDS I2cwbyte _min ' MINUTES I2cwbyte _hour ' Hours I2cstop waitms 300 end sub
Köszönöm. Megvan a 8xx valahány oldalas "eredeti" angol nyelvű, de azért az angolom nem tökéletes, lehet, hogy néhol segítene a magyar nyelvű verzió. De csak megoldom valahogy. A szükséges nyúlfarknyi programot amúgy megírtam már arduinora (digispark attiny85) de ott meg az alvásból való visszatérés az int-re nem jön össze. Nem lóverseny, most majd a hideg téli napokon csak meglesz valahogy a megoldás..
Config Serialin: Ha Bytematch=All akkor minden soroson megy, ha valami érték (Bytematch=34), akkor csak 3. soroson ugrik el a többi mint ha ott sem lenne. M2560, a Help-ben lévő program, a rutinoknál csak LED-villogtatás van. Ötlet?
Én azt veszem ki ebből, hogy minden stringed szóközzel kezdődik.
Te pedig csak "-jeltől engeded a kiíratást.: Bővebben: Link Ezért az összes szóköz és utánna levő rész letiltódik? A hozzászólás módosítva: Ápr 16, 2019
ASCII kommunikáció zajlik, LF-el a végén. Most ott akadtam el (COM3-ason szenvedek), hogy bejön az LF, akkor nem tudom kiolvasni a pufferben lévő adatokat...itt valami nagy félreértés van részemről. A "Serial3charmatch" ban be kellene olvasni egy stringbe a tartalmat, de az INPUT #3, Vallamistring NoEcho-ba beleáll a cucc. Hogy a csudába kaphatom meg a buffer tartalmát? A cimkére elmegy a program, de az INPUT-ot nem szereti. Úgy látszik, sokat felejtettem
Sziasztok!
Egy kis segítség kellene vagy egy óra amit szívesen elkészítenék,de egyszerűen nem akar lefordulni a programban.Sajnos nem értek a programozáshoz ezért ha valaki lefordítaná nekem azt megköszönöm. Üdv. Józsi Bővebben: Link A hozzászólás módosítva: Jún 2, 2019
Szia, volt benne hiba, bele "javítottam", így már lefordult.
Sziasztok!
Pwm szabályzásra csak a timer1 alkalmas? Az áldozat aegy atmega 328p. -Üdv!
Nem. A Timer amelyikre ki van rakva, az a timer is megy. 328-on a Timer 0 és a Timer 2 alkalmas rá...
A következő lenne a kérdésem.
Van mondjuk az Atmega161 Hogyan tudom elérni, hogy a lábak a zárójelben levő funkciókat kapják?
Automatikusan felveszik, ha úgy van rá szüksége a programnak, a programozó lábak, programozáskor automatikusan szintén. Tehát pl. ha az van a programban, hogy PRINT A akkor a PD1 egy TX lesz, ha Portd.1=1 van a programban, akkor meg 5v lesz rajt.
A lényeg az lenne, hogy egy egyszerű ISA buszos videó kártyának kéne működnie.
PC monitorát használnám kijelzőnek.
Csak annyit, hogy 21-től 40-es lábig a zárójelben levő funkciókat használhassam.
Külön tudjam választani a cím és az adatbuszokat. A 30-as láb legyen ALE. A 16-os láb legyen WR. A 17-es láb meg RD.
Sziasztok.
A képen mellékelem a programot, mely csak egy bővítés szimulációjának készült. A ciklus első része véletlen szerűen billeget egy bitet, amit egy Led-del teszek láthatóvá. Ezt számlálja az "Incr Vsccount". (Később majd kívülről jön a jel, amit számlálni kell.) Miután lefut a ciklus, a Led véletlen szerű állapotban marad. Ezt próbálnám meg kikapcsolni. De, nem kapcsol ki se a Reset, se a Led=0 hatására. A képen ezt láthatjátok: a Led hol nullában, hol egyben marad. A Set-Reset páros egyébként működik, ha sima villogó programot írok. Ehhez kapcsolódó problémám még: a TOGGLE utasítás sem működik. Csak bekapcsol a Led és úgy marad. Nem tudok rájönni, hogy mi lehet, ebben szeretnék valami felvilágosítást. Mit ronthatok el? Köszi a választ. A hozzászólás módosítva: Nov 20, 2019
Próbáld a Led et változóként definiálni ne alias pin. Ha nem bemenetként használjuk akkor PORT ként szoktunk hivatkozni/konfigurálni a portokra.
A hozzászólás módosítva: Nov 20, 2019
Ó, köszi.
Port-ként kell rá hivatkozni valóban. Így működik. (Az az érdekes, hogy a cikluson belül PIN-ként is működött, cikluson kívül meg nem.)
Kenyér, én is köszi! Úgy néz ki hogy több hónapos problémámat oldottad meg ezzel
Atmega8, 4mhz külső kvarc. Hogyan tudom az 1mp-et változóba tenni ?
Van valakinek ilyen programrészlete ? |
Bejelentkezés
Hirdetés |