Jak skonfigurować AVR 2313 dla komunikacji UART z prędkością 19200 baud?

AVR uart





Poprzedni Następny
Wiadomość
Spis treści
From: "Tomek" <wieczus_at_nospam_poczta.onet.pl>
Subject: AVR uart
Date: 2 Sep 2003 20:49:45 +0200


Witam,

Napisalem i przetestowalem w symulatorze prosty programik (bascom).

$sim
' *************************************'
' ******* Compiler options **********'
' *************************************'
$regfile = "2313DEF.DAT" 'mcu type
$crystal = 11059000 'crystal frequency
$baud = 19200 : Echo Off 'baud rate, turn
echo off
Config Watchdog = 512
'

Ddrb = &B11111111 'Power drivers
Portb = &B00000000 'low state
'
Ddrd = &B10010000 '1-wyj, 0 - wej
Portd = &B00000000
'

Do
Waitms 1
$asm
Checkpoint:
sbic pind,2 'check int input
state
rjmp exitpoint 'exit
cbi portd,6 'turn led on
sbi portd,4 '485 transmiter mode
push r16 'used registers on
stack
push r17
push r18
ldi r18,4 'load counter value
'
Ldi R16 , 0 'load with
broadcast code
Out Udr , R16 'copy value to udr
register '; Load Uart Data Register
Point0: 'jump label
sbis usr,udre 'skip if transmite
complete
rjmp point0 'loop back
'
Ldi R16 , 57 'load with set hold
code
Out Udr , R16 'copy value to dr
register '; Load Uart Data Register
Point1: 'jump label
sbis usr,udre 'skip if transmite
complete
rjmp point1
'
ldi r17,0 'clear counter
register
Point2:
cbi usr,txc 'clear transmit
complete flag
Ldi R16 , 48 'load with value
Out Udr , R16 'copy value to dr
register '; Load Uart Data Register
Point3: 'jump label
sbis usr,udre 'skip if transmite
complete
rjmp point3
inc r17 'incr byte counter
cpse r17,r18 'if 4 bytes out
then skip
rjmp point2
Point4:
sbis usr,txc 'if transmite
complete flag set then skip next command
rjmp point4
'
pop r18 'take registers
from stack
pop r17
pop r16
cbi portd,4 '485 receiver mode
sbi portd,6 'turn led off
Exitpoint:
$end Asm
Loop

niestety w punkcie sbis usr,txc program sie zapetla czyli nie ustawia flagi
ukonczenia nadawania, ktora chcialem wykorzystac do sterowania przeplywem
transceivera 485. Nie wiem co robie zle.... Prosilbym o jakas wskazowke.

pzdr Tomek



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!newsgate.p

Poprzedni Następny
Wiadomość
Spis treści
From: zielpro_at_nospam_poczta.onet.pl (ziel)
Subject: RE: AVR uart
Date: 3 Sep 2003 01:33:46 +0200


On Behalf Of Tomek
Napisalem i przetestowalem w symulatorze prosty programik (bascom).

[...]
Do
Waitms 1
$asm
'tu musi być zawsze :
push r17
in r17,SREG
push r17
'to tak na dzień dobry
[...]
Point3: 'jump label
sbis usr,udre 'skip if transmite complete
rjmp point3
[...]
Point4:
sbis usr,txc 'if transmite complete flag set then skip next
command
rjmp point4
[...]
' a tu trzeba odtworzyć SREG
$end Asm
Loop
niestety w punkcie sbis usr,txc program sie zapetla czyli nie
ustawia flagi
ukonczenia nadawania, ktora chcialem wykorzystac do sterowania przeplywem
transceivera 485. Nie wiem co robie zle.... Prosilbym o jakas wskazowke.

Dlaczego na koniec uparłeś się sprawdzać TXC zamiast jak do tej pory UDRE?
;-)


pzdr
Artur

--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.p

Poprzedni Następny
Wiadomość
Spis treści
From: "Tomek" <wieczus_at_nospam_WYTNIJTOpoczta.onet.pl>
Subject: Re: AVR uart
Date: 3 Sep 2003 07:07:29 +0200


witam,
Dlaczego na koniec uparłeś się sprawdzać TXC zamiast jak do tej pory UDRE?
;-)
bo interesuje mnie faktyczny koniec transmisji (wyslany bit stopu a nie
przepisanie z udr. W sumie tak tez mozna ale trzeba by jeszcze opoznienia dodac
a powinno dac sie bez.

pzdr Tomek

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!skynet.be!skynet.be!news.tele.dk!news.tele.dk!small.news.tele.dk!sn-xit-02!sn-xit-04!sn-xit-01!sn-post-01!supernews.com!corp.supernews.com!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Greg Sz <greg_sz_at_nospam_dsuper.net>
Subject: Re: AVR uart
Date: Wed, 03 Sep 2003 01:26:00 -0400


Tomek wrote:

witam,
Dlaczego na koniec upar=B3e=B6 si=EA sprawdza=E6 TXC zamiast jak do t=
ej pory UDRE?
;-)
bo interesuje mnie faktyczny koniec transmisji (wyslany bit stopu a nie=

przepisanie z udr. W sumie tak tez mozna ale trzeba by jeszcze opoznien=
ia dodac
a powinno dac sie bez.

Nie znam twojego AVRka ale jak chcesz wiedziec kiedy sie skonczylo nadawa=
nie to
masz odpowiednia flage w rejestrze UARTu pewnie sie nazywa TBE Transmit B=
uffer
Empty albo jakas inna ktora moi kiedy mozna wyslac nastepny znak i najlep=
iej jak to
robisz sobie z przerwaniami to wtedy sam UART sei zglasz jak jest gotowy =
albo jak
cos odbierze.
Czy naprawde niekt na tej grupie nie uzywa przerwan i licznikow-tajmerow.=

pozdro
Grzechu





========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.p

Poprzedni Następny
Wiadomość
Spis treści
From: "" <wieczus_at_nospam_poczta.onet.pl>
Subject: Re: AVR uart
Date: 3 Sep 2003 09:08:30 +0200



masz odpowiednia flage w rejestrze UARTu pewnie sie nazywa TBE Transmit Buffer
Empty albo jakas inna ktora moi kiedy mozna wyslac nastepny znak i najlepiej
jak to
robisz sobie z przerwaniami to wtedy sam UART sei zglasz jak jest gotowy albo
jak
cos odbierze.

Wlasnie z tej flagi korzystam transmit complete.... Problem polega na tym ze po
wyslaniu jakims cudem nie jest setowana.

Czy naprawde niekt na tej grupie nie uzywa przerwan i licznikow-tajmerow.

Korzystam i to bardzo czesto.... caly ten program bedzie w isr od int0 i nie
mam zamiaru korzystac w tym isr z przerwania utxc.

pzdr Tomek








--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.internetia.pl!skynet.be!skynet.be!skynet.be!skynet.be!aotearoa.belnet.be!news.belnet.be!in.100proofnews.com!in.100proofnews.com!pd2nf1so.cg.shawcable.net!residen