Soros port (rs232)

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
DmANn
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2009. február 1. vasárnap, 7:00

Hozzászólás Szerző: DmANn »

Vagy esetleg, ha nem akarsz mindig 8hosszú sort küldeni:

Kód: Egész kijelölése

Dim A as Byte
..

Vetel: 

A = Inkey() 

If A=13 then

  Select Case Uzenet                                        'Feldolgozás 
   Case "a" : ... 
   Case "b" : ...
   Case "muhely" : ... 
  End Select 
  'kezdődik előlről. 
  Uzenet = "" 

Else
 Uzenet = Uzenet + chr(A)
Endif

Return
Lehet, hogy nem gyorsabb, mint a fenti, és az is lehet, hogy még alakítani kell rajta, csak vázlatnak írtam, ha esetleg nem akarsz szenvedni mindig 8 karakter küldésével.. :wink:

Üdv:
DmANn
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

'Vagy sorvégét jelzed mondjuk a "V"
$regfile = "ATtiny2313.DAT"
$crystal = 4000000
$baud = 9600
Echo Off

Const V = "V"
Enable Interrupts 
Enable Urxc 
On Urxc Vetel

Dim A As String * 1
Dim Uzenet As String * 8

Uzenet = ""

Do

Loop

Vetel:

A = Inkey()


If A = V Then         ' Fontos, hogy mindég "V" karaktert küldj a végén mert csak akkor kezdődik a feldolgozás.
  Select Case Uzenet                      'Feldolgozás
   Case "a" : Toggle Portd.0
   Case "bab" : Toggle Portd.2
   Case "muhely" : Toggle Portd.3                           '...
   Case "hatsajto" : Toggle Portd.4
  End Select
                             ' Itt alaphelyzetbe állítod és kezdődik elölröl
  Uzenet = ""
Else
  Uzenet = Uzenet + A
End If

Return

End                                                         'end program
Megelőztél 3 perccel! :roll:

De kefeur Elveszet! :wink: :D
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Bocsika Apai teendők
Itt még nem tudom miért kell 4 szer átküldeni.
Ha eztküldöm: " a" , vagy ha ezt: "a " akkor is ugyan ez a helyzet.
kipróbálom a "v"-s megoldást is
Azt elfelejtettem közölni hogy egyirányú 1 vezetékes átvitelről van szó , A chip-től B chip-be.
Kefeur
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Kimaradt a 7 space .
És mindig 8 karakter megy.
Igazából rádión , de ez más topik.
Kefeur
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Most pedig csak az első átküldöttet értelmezi , mindegy melyik az és a többit nem .
Csak reset után fogad 1-et és semmi több.
Kefeur
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Vissza az előzőhöz .

Próbáltam 4 karakter hosszal , ott kétszer
míg 2 karakter hosszal egyszer kell átküldeni hogy meg legyen fogva .
Ezek szerint kettesével küldi ... vagy most mi van??
Kefeur
Avatar
DmANn
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2009. február 1. vasárnap, 7:00

Hozzászólás Szerző: DmANn »

Szia!

Itt már nagy a kavarodás :?
Én biztos, hogy megnézném PC segítségével, vagy LCD-vel.

Minden it rutinban kiírnám vissza print-tel, vagy cls, lcd A -val a karakterkódokat (karaktereket), amiket átküld, így debugolhatod.

Sok sikert :)


DmANn
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ezek szerint nem az általunk javasolt formában alkalmaztad, hanem belenyúltál?
Szeretnénk látni mi is maradt meg a mi kipróbáltan jó változatunkból?
:evil:
Pontosan azt küldjed, ami a feltétel vizsgálatban van!

Kód: Egész kijelölése

Print "Muhely" - > Case "Muhely" Jó
Print "Muhely" - > Case "muhely" Nem Jó
Print "V" - > If A = "V" Jó
Print "v" - > If A = "V" Nem Jó
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Na szóval .
Ami most működik jól : alul
Akkor ha 'if I=8 then feldolgozás akkor 4 szer kell átküldenem a 8 karakteres szót .
küldve pl.: print"muhely "
Ez is 8 ugye.
Vétel oldalon :case "muhely " van ebben az esetben .

Kód: Egész kijelölése

   'Vevő oldal


$regfile = "ATtiny2313.DAT"
$crystal = 4000000
$baud = 300
Echo Off

Config Porta = Output
Config Portd = Output
Config Portb = Input

Dim I As Byte
Dim A As String * 1
Dim Uzenet As String * 8

I = 0
Uzenet = ""


Enable Interrupts
Enable Urxc
On Urxc Vetel
'*********************************
 Do
  Waitms 400
  Toggle Porta.1
 Loop

End
'*********************************
Vetel:

 A = Inkey()
 Uzenet = Uzenet + A
  I = I + 1
If I = 2 Then

 Select Case Uzenet
  Case "EG" : Toggle Portd.2
  Case "KE" : Toggle Portd.3
  Case "HA" : Toggle Portd.4
  Case "NE" : Toggle Portd.5
 End Select

  I = 0                                                     '  alaphelyzetbe
  Uzenet = ""

End If

Return
'*********************************
Az adó oldal ahogy most működik:

Kód: Egész kijelölése

$regfile = "ATtiny2313.DAT"

$crystal = 4000000
$baud = 300
Echo Off

Config Portd.6 = Output
Config Portb = Input

Portb = 255




Foprog:

If Pinb.0 = 0 Then
  Waitms 150
  If Pinb.0 = 0 Then

 Print "EG"
 Wait 1
 End If

End If



If Pinb.1 = 0 Then
  Waitms 150
  If Pinb.1 = 0 Then

 Print "KE"
 Wait 1
 End If

End If


If Pinb.2 = 0 Then
  Waitms 150
  If Pinb.2 = 0 Then

 Print "HA"
 Wait 1
 End If

End If


If Pinb.3 = 0 Then
  Waitms 150
  If Pinb.3 = 0 Then

 Print "NE"
 Wait 1
 End If

End If

Goto Foprog
Értelem szerű hogy I értéke megegyezik a küldött karakterek számával , és pontosan azt küldöm amit várok.
Kefeur
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Inkey() -> 1 karaktert olvas be a bufferbol....
Print "valami" -> Ekkor a valami kerul kikuldesre majd utana a CHR(13) es a CHR(10) karakter! (soremeles;kocsivissza)
Kuldd ki igy: Print "valami";
Ekkor a CHR13 es a CHR10 nem kerul kikuldesre!
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Kipróbálom.
Apropó buffer , nem kellene buffer méretet beállítani??
Kefeur
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Azonnal UCRX-l lekezeled.... Igy nem kell buffer...
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

értem köszönöm.
De azt akkor sem értem miért kell 4szer átküldenem a 8 karakteres ,2szer a 4 karakteres szócskát hogy megfogja??
A 2 karakterest pedig lekezeli rendesen.
Kefeur
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Igaz a 4 MHz nem a belső órajel, hanem stabil kvarc?
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Igen az :kvarc .
De nem vettem észre különbséget kvarc és belső rc között a vételben.
Kefeur
Válasz küldése