Xmega buffered serialin nem működik.

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2005. április 22. péntek, 6:00

Xmega buffered serialin nem működik.

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

Szervusztok!

Kérlek segítsetek ezt a lecsupaszított pár soros programot életre kelteni.
Jelenség az hogy ha buffered módot bekapcsolom akkor nem érzékeli a kiküldött karaktereket és nem válaszol a program. Ha kiveszem a config serialin0 sort és tiltom az interruptokat akkor hibátlanul működik. Viszont kellene a bufferelt működés mert a teljes programban ritkán elveszít karaktereket a soros input. (bascom 2085 de régebbi verziók is így viselkednek )

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

$regfile = "xm256a3udef.dat"

$crystal = 44236800
$hwstack = 200
$swstack = 200
$framesize = 200

Dim B1 As Byte
Dim S As String * 20

Config Osc = Disabled , Extosc = Enabled , Pllosc = Enabled , _
Range = 9mhz_12mhz , Startup = Xtal_16kclk , Pllsource = Extclock , Pllmul = 4
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Config Com1 = 921600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Config Com1 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Config Serialin0 = Buffered , Size = 20

Open "COM1:" For Binary As #1
Disable Jtag


Config Priority = Static , Vector = Application , Med = Enabled , Lo = Enabled
Enable Interrupts

S = ""
Print #1 , "" : Print #1 , "kakukk:  "

Do
   If Ischarwaiting(#1) > 0 Then
      B1 = Waitkey(#1)
      S = S + Chr(b1)
      If B1 = ":" Then
         Print #1 , S
         S = ""
      End If
   End If
Loop

End
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Xmega buffered serialin nem működik.

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

A kutyafáját! Két napomba került amíg rájöttem a hibára.
Ez a sor hiányzott: Config Intvectorselection = Normal

Ugyanis bootloaderrel programozom az eszközt, és ott is bufferelt serial portot használok, ezért az interrupt vektor táblát átváltom a boot területre. Ha viszont elfelejtem visszakapcsolni, akkor a normál program it-i elmennek a vakvilágba.
Válasz küldése