Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Sre Jan 28, 2015 7:18 pm Naslov sporočila: Bascom AVR TVOUT |
|
|
Ja, za vse ki ne veste, Bascom podpira TV video output.
Namesto LCD-a lahko priklopite TV.
Uporaba je brezplačna če ni namenjena v komercijalne namene.
Več o tem najdete v Help-u pod TVOUT.
Priporočam da začnete s preizkušanjem primera bartest.bas.
Serijska komunikacija s terminalom meni ni delala dokler programa nisem predelal.
Video signal je RGB, jaz pa sem od tega naredil video signal, slika ni
barvana, so pa vidne sivine (ni mi se ljubilo vleči kabla do TV-a in sem uporabil 5"LCD video monitor).
LP |
|
Nazaj na vrh |
|
|
iskra Profesionalec
Pridružen/-a: Tor Jan 2004 16:29 Prispevkov: 254 Kraj: Sežana
|
Objavljeno: Čet Feb 19, 2015 7:27 am Naslov sporočila: |
|
|
Lahko kaj več napišeš o tem.. |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Pon Feb 23, 2015 6:09 pm Naslov sporočila: |
|
|
Iskra,
trenutno nimam časa, bom pa uredil moj program in pripel nekaj slik kako to zgleda.
Že pred leti sem uporabil en AVR video terminal.
Na hiški ki je deleč imam video nadzor in vpogled v temperature in vlago prek telneta.
Da bi videl stanje na objektu sem podatke ki jih pošiljam prek telneta (AVR) speljal na en AVR video terminal, z njim naredil video signal katerega sem priklopil namesto ene kamere. Tako zdaj podatke o temperaturi vidim prek video nadzora kot sliko.
To je en primer uporabe video terminala.
Drugače je procesor tolio zaposlen z ustvarjanjem slike da za drugo delo ostane bolj malo časa. uporabno je predvsem kot vmesnik sistem-> TV (video monitor).
LP |
|
Nazaj na vrh |
|
|
iskra Profesionalec
Pridružen/-a: Tor Jan 2004 16:29 Prispevkov: 254 Kraj: Sežana
|
Objavljeno: Tor Feb 24, 2015 8:28 am Naslov sporočila: |
|
|
Hvala. |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Tor Mar 03, 2015 1:48 pm Naslov sporočila: |
|
|
Prilagam kode s katerimi sem testiral TVOUT:
Koda: | $regfile = "M328def.dat"
$crystal = 20000000
$hwstack=200
$swstack=48
$framesize=38
'$crystal = 20000000
$BAUD = 115200
' Reserve screen variable area at start of RAM
' Assembler interrupt code has two byte variables IN BETWEEN two word variables
Dim ScreenAddr1 as word at $100
Dim RAMVar1 as byte at $102
Dim RAMVar2 as byte at $103
Dim ScreenAddr2 as word at $104
' Reserve Screen RAM - can reserve as much or as little as required
Dim ScreenRAM(600) as byte at $106
Dim Addr As Word
Dim CharIn as Byte
Const NewScreen = $7E
'Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config is not needed unless settings differ from default
On Oc2a Tvinterrupt Nosave
Goto Main
!.org $100
$inc Tvinterrupt , Nosize , "tvinc.bin"
Return
Main:
' Set up clock division - only need to do this if DIV8 fuse not set, as default fuse setting is div. by 8
Config Clockdiv = 1
' CLKPR=$80
' CLKPR=0
' Setup timer 2
TCCR2B=$02
OCR2A=158
OCR2B=160
TIMSK2=&b00000110
' Now set up sleep mode [SMCR = Sleep Mode Control Register] - must be enabled or TV code cannot work accurately
SMCR=1
' Set PORTB to all outputs for video signal
DDRB=$FF
' Enable & config SPI
SPCR=$54
SPSR=1
' Init RAM variables for interrupt code
RAMVar1=0
RAMVar2=0
ScreenAddr1=$106
ScreenAddr2=$106
ENABLE OC2A
' ENABLE OC2B
ENABLE INTERRUPTS
' Now continue with user code
Addr=1 ' Set Addr to address of first screen location
ScreenRAM(Addr)=" "
Incr Addr
ScreenRAM(Addr)=13
' Incr Addr
Do
CharIn=INKEY()
If CharIn>0 then
'print charIn
ScreenRAM(Addr)=CharIn
Incr Addr
ScreenRAM(Addr)=13 ' Make sure there is always an end of screen character
End If
If CharIn=NewScreen then
Addr=1
ScreenRAM(Addr)=13
End If
If Addr>599 then Addr=1 ' Make sure cannot write past end of screen Ram
' ScreenRAM(Addr)=13
' END IF
Loop
' Decimal {012} = $0C = END OF LINE MARKER
' Decimal {013} = $0D = END OF SCREEN MARKER
' Decimal {017} = $11 = Green on black
' Decimal {019} = $13 = Cyan on blue
' Decimal {020} = $14 = Yellow on red
' Decimal {022} = $16 = White on magenta
End |
In bar test:
Koda: | $regfile = "M328def.dat"
$crystal = 20000000
$hwstack=40
$swstack=16
$framesize=32
'$crystal = 20000000
$BAUD = 9600
' Reserve screen variable area at start of RAM
' Assembler interrupt code has two byte variables IN BETWEEN two word variables
Dim ScreenAddr1 as word at $100
Dim RAMVar1 as byte at $102
Dim RAMVar2 as byte at $103
Dim ScreenAddr2 as word at $104
Dim ScreenRAM(600) as byte AT $106
Dim Addr As Word
Dim NumChar as byte
Dim MaxBar as byte
Dim Bar as byte
Dim I as byte
Dim Colour as byte
On Oc2a Tvinterrupt Nosave
Goto Main
!.org $100
$inc Tvinterrupt , Nosize , "tvinc.bin"
Return
Main:
' Set up clock division - only need to do this if DIV8 fuse not set, as default fuse setting is div. by 8
Config Clockdiv = 1
' CLKPR=$80
' CLKPR=0
' Setup timer 2
TCCR2B=$02
OCR2A=158
OCR2B=160
TIMSK2=&b00000110
' Now set up sleep mode [SMCR = Sleep Mode Control Register] - must be enabled or TV code cannot work accurately
SMCR=1
' Set PORTB to all outputs for video signal
DDRB=$FF
' Enable & config SPI
SPCR=$54
SPSR=1
' Init RAM variables for interrupt code
RAMVar1=0
RAMVar2=0
ScreenAddr1=$106
ScreenAddr2=$106
ENABLE OC2A
' ENABLE OC2B
ENABLE INTERRUPTS
' Now continue with user code
Do
Addr=1 ' Set Addr to address of first screen location
NumChar=$30 ' ASCII value for 0
' Display three sets of alternately coloured bars
GoSub TwoBars
GoSub TwoBars
GoSub TwoBars
Incr Addr
ScreenRAM(Addr)=13
' Decimal {012} = $0C = END OF LINE MARKER
' Decimal {013} = $0D = END OF SCREEN MARKER
' Decimal {017} = $11 = Green on black
' Decimal {019} = $13 = Cyan on blue
' Decimal {020} = $14 = Yellow on red
' Decimal {022} = $16 = White on magenta
Wait 5
Loop
TwoBars:
Incr NumChar
Colour=19
GoSub DisplayBar
Incr NumChar
Colour=20
GoSub DisplayBar
Return
DisplayBar:
ScreenRAM(Addr)="B"
Incr Addr
ScreenRAM(Addr)="a"
Incr Addr
ScreenRAM(Addr)="r"
Incr Addr
ScreenRAM(Addr)=" "
Incr Addr
ScreenRAM(Addr)=NumChar
Incr Addr
ScreenRAM(Addr)=":"
Incr Addr
ScreenRAM(Addr)=12
Incr Addr
' Display row of bar characters plus an end of line char
MaxBar=45
Bar=RND(MaxBar)
Incr Bar
' Make sure Bar is not zero, between 1 and 46
ScreenRAM(Addr)=Colour
Incr Addr
For I=1 to Bar ' Write a bar character for each unit in "Bar"
ScreenRAM(Addr)=$3C
Incr Addr
Next I
ScreenRAM(Addr)=" " ' Write a space
Incr Addr
Incr Bar
ScreenRAM(Addr)=17 ' Write a green on black command to end bar
Incr Addr
Incr Bar
For I=Bar to 50 ' Write number of spaces to make bars all the same length (makes screen steady)
ScreenRAM(Addr)=" "
Incr Addr
Next I
ScreenRAM(Addr)=12 ' Write end of line character
Incr Addr
Return
End |
LP |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Tor Mar 03, 2015 1:51 pm Naslov sporočila: |
|
|
Lepo Vlado, zdaj pa hitro stare ČB monitorje na plano, da bodo še odlužili kakšno urico prikazovanja
Lp
Jure |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Tor Mar 03, 2015 1:53 pm Naslov sporočila: |
|
|
Jure, slika je barvna (se vidijo odtenki), vendar je tedaj priklop prek SCART kabla. Jaz sem z upori naredil video, ker ta monitor nima RGB vhoda, zato so vidne samo sivine.
LP |
|
Nazaj na vrh |
|
|
iskra Profesionalec
Pridružen/-a: Tor Jan 2004 16:29 Prispevkov: 254 Kraj: Sežana
|
Objavljeno: Tor Mar 03, 2015 1:54 pm Naslov sporočila: |
|
|
Hvala. |
|
Nazaj na vrh |
|
|
slawko Začetnik
Pridružen/-a: Čet Jan 2009 10:48 Prispevkov: 16
|
Objavljeno: Pet Mar 13, 2015 2:44 pm Naslov sporočila: |
|
|
Vlado, zelo zanimivo kaj pa hw? |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Sob Mar 14, 2015 11:19 am Naslov sporočila: |
|
|
Ves Hw je opisan v Helpu, ali na strani
https://sites.google.com/site/eximiaprojects/bascom-tv/bascom-tv-technical-info
Jaz sem dodal še štiri upore na RGB in sync ki so na drugi strani združeni in prek 75 OHM upora vezani na maso.
Stičišče uporov je izhod kompozite video.
Na podanem linku je treba poiskati tudi inc fajl ki je potreben za delovanje programa.
Moram pa povedati da z delovanjem nisem prav zadovoljen, se preveč zatika (mogoče je kriv HW ki je bil na preizkusni ploščici).Tudi ukazi (nova vrstica, cls . . .) niso prav posrečeno izbrani.
Osebno sem z video terminalom bolj zadovoljen z enim video terminalom ki sem ga našel na netu.
Še nisem preizkusil TELYMATE ki naj bi tudi bil OK.
LP |
|
Nazaj na vrh |
|
|
|