AT90S8515 i UART poprosze o pomoc [dlugie]



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Sat, 19 Jan 2002 09:22:02 +0100


Czesc,
Wymyslono mi taki uklad aby do RX i TX podlaczyc bramki LS07. Wyjscie z UART
wchodzi na wejscie bramki A. Natomiast Wejscie UARTa podlaczone jest do
wyjscia bramk B (i rezystor 10 k do VCC). Wejscie bramki B i wyjscie bramki
A polaczone sa ze soba i zrobiony jest pullup przez 10 k do zasilania.
W ten sposob powstala magistrala jedno przewodowa :)

Ale nie w tym problem... Chcialbym zapytac praktykow o strone softwareowa
obslugi tego uarta.

Robie to tak. Dodam, ze uzywam avr-gcc

void UART_Init(void)
{
cli ();
/* enable RxD and interrupts */
outp(BV(RXCIE) | BV(RXEN),UCR);
/* set baud rate */
outp( (u08)UART_BAUD_SELECT, UBRR);
/* enable interrupts */
sei();
}
Czyli wlaczam tylko odbiornik i przerwania gdy odbiornik odbierze kompletny
znak. Oczywiscie jest funkcja obslugujaca przerwanie. Z odbiorem nie ma
probemu - gorzej z nadawaniem.

Sa dwa typy przerwan od nadajnika ktore mnie interesuja.
SIG_UART_RECV i SIG_UART_DATA

SIGNAL (SIG_UART_DATA)
{
wskbufnad++; //zaczynamy od 1 nie 0 znaku. 0 zaczniemy wczesniej.
outp (NAD[wskbufnad], UDR);
if (wskbufnad == 15) //do UDR zostal wpisany ostatni znak z ramki
{
wskbufnad = 0;
outp(BV(TXCIE) | BV(TXEN),UCR);
//ustawienie przerwania gdy UDR jest pusty i z shift register poszedl
juz znak stopu
//ponizej obsluga tego przerwania
asm volatile("nop");
}
return;
}


SIGNAL(SIG_UART_TRANS)
{

if (wskbufnad == 15)
{
wskbufnad = 0;
outp(BV(RXCIE) | BV(RXEN),UCR);
wlaczamy odbiornik i wlaczamy przerwania od odbiornika
}
return;
}

A to funckja wysylajaca status

void send_status ()
{
cli();
//teraz wyslemy zerowy bajt z ramki, aby uruchomic przerwania po
wyslaniu
outp(BV(UDRIE) | BV(TXEN),UCR);
wskbufnad=0;
sei();
asm volatile("nop");
outp (NAD[0], UDR);
}


No i dziwne rzeczy mi sie dzieja, bo ramka NAD dana w postaci :
u08 NAD [16] =
{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

jest wysylana bez sensu 1034P6789ABCDE i tylko jeden raz.
Gdy tylko korzystam z SIG_UART_TRANS to dziala OK. Ale wydaje mi sie ze mam
za dlugie odstepy miedzy znakami i uklad sterujacy mi sie gubi. W moim
programie musze tez co jakis czas zablokowac przerwania.

Z gory dzieki za pomoc

Pelos







Poprzedni Następny
Wiadomość
Spis treści
From: marekm_at_nospam_amelek.gda.pl (Marek Michalkiewicz)
Subject: Re: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Mon, 21 Jan 2002 08:23:06 +0000 (UTC)


Pelos <pelos_at_nospam_promocja.net> wrote:

outp(BV(TXCIE) | BV(TXEN),UCR);
//ustawienie przerwania gdy UDR jest pusty i z shift register poszedl
juz znak stopu
//ponizej obsluga tego przerwania
asm volatile("nop");

Nie trzeba tego "nop". Przerwania i tak sa zablokowane do czasu powrotu
do glownego programu - i dobrze, gdyby zamiast SIGNAL bylo INTERRUPT
(przerwanie z odblokowana obsluga przerwan wewnatrz), zapetliloby sie
(przerwanie od nadajnika caly czas aktywne - trzeba cos zrobic: albo
wpisac znak do UDR, albo wyzerowac UDRIE jesli nie ma juz co nadawac).

void send_status ()
{
cli();
//teraz wyslemy zerowy bajt z ramki, aby uruchomic przerwania po
wyslaniu
outp(BV(UDRIE) | BV(TXEN),UCR);
wskbufnad=0;
sei();
asm volatile("nop");
outp (NAD[0], UDR);
}

I tu jest blad - ustawienie UDRIE jesli UART nic nie nadaje powoduje
od razu przerwanie (ktore zaczyna wysylac od NAD[1]), zanim jeszcze
wpiszemy NAD[0] do UDR. Dlatego pierwsze dwa znaki (NAD[0] i NAD[1])
wychodza zamienione miejscami. Proponuje wiec w glownym programie
tylko ustawic UDRIE, odblokowac przerwania i niech przerwanie nadaje
rowniez pierwszy znak (NAD[0]).

Gdy tylko korzystam z SIG_UART_TRANS to dziala OK. Ale wydaje mi sie ze mam
za dlugie odstepy miedzy znakami i uklad sterujacy mi sie gubi. W moim
programie musze tez co jakis czas zablokowac przerwania.

Za dlugie odstepy, bo przerwanie dopiero po calkowitym oproznieniu
nadajnika, czyli nie wykorzystujemy tego, ze jest on buforowany.
To przerwanie natomiast dobrze nadaje sie do wylaczania nadajnika
RS485 po nadaniu calej ramki (co wlasnie ostatnio robilem na 8535).

pozdrawiam
Marek


Poprzedni Następny
Wiadomość
Spis treści
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: Odp: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Mon, 21 Jan 2002 17:23:02 +0100



Użytkownik Marek Michalkiewicz <marekm_at_nospam_amelek.gda.pl> w wiadomości do grup
dyskusyjnych napisał:a2gj5a$iv4$1_at_nospam_alf.amelek.gda.pl...
Pelos <pelos_at_nospam_promocja.net> wrote:

outp(BV(TXCIE) | BV(TXEN),UCR);
//ustawienie przerwania gdy UDR jest pusty i z shift register poszedl
juz znak stopu
//ponizej obsluga tego przerwania
asm volatile("nop");

Nie trzeba tego "nop". Przerwania i tak sa zablokowane do czasu powrotu
do glownego programu - i dobrze, gdyby zamiast SIGNAL bylo INTERRUPT
(przerwanie z odblokowana obsluga przerwan wewnatrz), zapetliloby sie
(przerwanie od nadajnika caly czas aktywne - trzeba cos zrobic: albo
wpisac znak do UDR, albo wyzerowac UDRIE jesli nie ma juz co nadawac).

Hej Marek,
Dzieki za pomoc bede dzisiaj testowal.

Pelos



Poprzedni Następny
Wiadomość
Spis treści
From: "remick" <remick_at_nospam_mindless.com.nospam>
Subject: Re: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Fri, 25 Jan 2002 09:38:44 +0100


Użytkownik "Pelos" <pelos_at_nospam_promocja.net> napisał w wiadomości
news:a2ba67$ock$1_at_nospam_onyx.icpnet.pl...

[big ciach]

pelos, cos fajnego kombinujesz z yamppem ???
-)))

pochwal sie !!!!

pozdro,

--
remick _at_nospam_ work
icq: 1532887





Poprzedni Następny
Wiadomość
Spis treści
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: Odp: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Fri, 25 Jan 2002 19:47:25 +0100



Użytkownik remick <remick_at_nospam_mindless.com.nospam> w wiadomości do grup
dyskusyjnych napisał:3c511c1f$1_at_nospam_news.vogel.pl...
Użytkownik "Pelos" <pelos_at_nospam_promocja.net> napisał w wiadomości
news:a2ba67$ock$1_at_nospam_onyx.icpnet.pl...

[big ciach]

pelos, cos fajnego kombinujesz z yamppem ???
-)))

pochwal sie !!!!
Taka wlasnie magistralą jest sterowany system komunikatow i powiadomien
glosowych zbudowany na YAMPPie.
Odbior ramek byl OK, ale z odpowiadaniem bylo zle - sterownik w koncu
ignorowal mojego YAMPPa.
Z klawiatury sterownika mozna wybrac okreslony gong, lub komunikat.
W koncu zrobilem to inna metoda. Z ciekawych rzeczy moge powiedziec, ze
wykorzystalem zamiast zwyklego dysku - dysk elektroniczny (jednym z
warunkow - byl brak czesci mechanicznych). Musialem przysiedziec by dorobic
obsluge FAT16, bo dysk mial tylko 32 MB. W tej chwili siedze nad softem, by
YAMPP mogl korzystac z CDROMu i odtwarzac rowniez plyty audio (tylko
sterowanie). Mam juz gotowa procedure przesylajaca ramki sterujace - tylko
nie zdarzylem jej dzisiaj przetestowac.

pozdrawiam

Pelos



Poprzedni Następny
Wiadomość
Spis treści
From: Romuald Bialy <romek_b_at_nospam_o2.pl>
Subject: Re: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Fri, 25 Jan 2002 22:04:40 +0100


Czecho !
Pelos wrote:

warunkow - byl brak czesci mechanicznych). Musialem przysiedziec by dorobic
obsluge FAT16, bo dysk mial tylko 32 MB. W tej chwili siedze nad softem, by

Pelos, ciekawostka:
Procedura do FAT'u 16 zaadaptowana do mojego softu dziala tylko przy 4 i
8 kilobajtowych klastrach. Przy wiekrzych ni du du, i cholera nie wiem
czemu ? Ale to szczegol.

YAMPP mogl korzystac z CDROMu i odtwarzac rowniez plyty audio (tylko
sterowanie). Mam juz gotowa procedure przesylajaca ramki sterujace - tylko
nie zdarzylem jej dzisiaj przetestowac.

Mnie to tez interesuje. Ostatnio na forum jakis madziar chwalil sie ze
zrobil obsluge ISO i Joliet.
Ale za cholere nie da sie tego pociagnac...

--
Pozdrawiam.... Romuald Bialy
E'mail: romek_b_at_nospam_o2.pl
WWW: http://www.polbox.com/r/romekb


Poprzedni Następny
Wiadomość
Spis treści
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: Odp: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Sat, 26 Jan 2002 08:32:00 +0100



Użytkownik Romuald Bialy <romek_b_at_nospam_o2.pl> w wiadomości do grup dyskusyjnych
napisał:3C51C868.AC6B35F1_at_nospam_o2.pl...
Czecho !
Pelos wrote:

warunkow - byl brak czesci mechanicznych). Musialem przysiedziec by
dorobic
obsluge FAT16, bo dysk mial tylko 32 MB. W tej chwili siedze nad softem,
by

Pelos, ciekawostka:
Procedura do FAT'u 16 zaadaptowana do mojego softu dziala tylko przy 4 i
8 kilobajtowych klastrach. Przy wiekrzych ni du du, i cholera nie wiem
czemu ? Ale to szczegol.

Hmmm... Zobacz moja wersje http://www.promocja.net/Pelos/FAT16.html
Generalnie w sofcie YAMPPa zalozono pewne uproszczenia w obliczaniu
poszczeglonych klastrow.
Z gory przyjeto rozmiar klastra 4 kB i tu mnie dziwi ze dziala Ci z 8 kB.
Np. odrazu dzieli sie gdzies tam w pewnym wzorze przez 8 (lub mnozy nie
pamietam) a to wynika z 8x512B = 4096B (cluster). Bo 8 to jest ilosc
sektorow na klaster - mozna ja odczytac z dysku. Ja sie nie speccjalnie
zastanawialem nad rozmiarem klastra - bo jak wiadomo mozna formatowac /z:8.

Przy 8-iu kB powinienes miec efekt jakbys pocial mp3 na kawalki 4 sekundowe
i drugi kawalek zaczynal by Ci sie w polowie pierwszego, trzeci w polowie
drugiego, itp.

YAMPP mogl korzystac z CDROMu i odtwarzac rowniez plyty audio (tylko
sterowanie). Mam juz gotowa procedure przesylajaca ramki sterujace -
tylko
nie zdarzylem jej dzisiaj przetestowac.

Mnie to tez interesuje. Ostatnio na forum jakis madziar chwalil sie ze
zrobil obsluge ISO i Joliet.
zobacz sobie www.h-mpeg.de tam jest wersja obslugujace CDROM tez na S8515
Ale za cholere nie da sie tego pociagnac...

--
> Pozdrawiam.... Romuald Bialy
> E'mail: romek_b_at_nospam_o2.pl
> WWW: http://www.polbox.com/r/romekb
>



Poprzedni Następny
Wiadomość
Spis treści
From: Romuald Bialy <romek_b_at_nospam_o2.pl>
Subject: Re: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Sat, 26 Jan 2002 15:50:00 +0100


Pelos wrote:

Hmmm... Zobacz moja wersje http://www.promocja.net/Pelos/FAT16.html

Dawno ogladalem i nawet sie na tym wzorowalem :-)

Generalnie w sofcie YAMPPa zalozono pewne uproszczenia w obliczaniu
poszczeglonych klastrow.
Z gory przyjeto rozmiar klastra 4 kB i tu mnie dziwi ze dziala Ci z 8 kB.

Hmmm, chyba dawno nie zagladales na forum yamppa :-) Posiedzialem troche
nad zmodyfikowana przez Nick'a wersja softu ktora dopuszcza dowolne
klastry (po rekompilacji), a efekty mozesz zobaczyc tu:
http://www.republika.pl/romek_by/index.html

Np. odrazu dzieli sie gdzies tam w pewnym wzorze przez 8 (lub mnozy nie
pamietam) a to wynika z 8x512B = 4096B (cluster). Bo 8 to jest ilosc

To zostalo zalatwione odpowiednimi wyliczanymi stalymi z cyklu
SEC_PER_CLUST czyli sektorow na cluster ect.

zobacz sobie www.h-mpeg.de tam jest wersja obslugujace CDROM tez na S8515

Fajnie, tylko sprzet troche inny, zupelnie inaczej zrobiony interfejs
ATA, bo w h-mpeg siedzi w przestrzeni adresowej i sie duzo prosciej
obsluguje. Trza by zrobic jakas hybryde tych softow, a to dla mnie na
razie za trudne. Po za tym baza softu yamppa jest lepsza i najlepiej
bylo by wziasc z h-mpeg tylko procedury obslugi ISO.

--
Pozdrawiam.... Romuald Bialy
E'mail: romek_b_at_nospam_o2.pl
WWW: http://www.polbox.com/r/romekb



Poprzedni Następny
Wiadomość
Spis treści
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: Odp: AT90S8515 i UART poprosze o pomoc [dlugie]
Date: Wed, 30 Jan 2002 20:23:45 +0100



Użytkownik Romuald Bialy <romek_b_at_nospam_o2.pl> w wiadomości do grup dyskusyjnych
napisał:3C52C218.C29C0D6D_at_nospam_o2.pl...
Pelos wrote:

Hmmm... Zobacz moja wersje http://www.promocja.net/Pelos/FAT16.html

Dawno ogladalem i nawet sie na tym wzorowalem :-)
Aaaaa ... to Ty jestes Mis :) A ja sie dziwilem kto do mnie napisal na YABB
)

Generalnie w sofcie YAMPPa zalozono pewne uproszczenia w obliczaniu
poszczeglonych klastrow.
Z gory przyjeto rozmiar klastra 4 kB i tu mnie dziwi ze dziala Ci z 8
kB.

Hmmm, chyba dawno nie zagladales na forum yamppa :-) Posiedzialem troche
nad zmodyfikowana przez Nick'a wersja softu ktora dopuszcza dowolne
Widzialem, widzialem - kilka fajnych rzeczy, ktore dodalem do swojego softu.
Gosciu jest niezly trzeba mu to przyznac.
klastry (po rekompilacji), a efekty mozesz zobaczyc tu:
http://www.republika.pl/romek_by/index.html

Np. odrazu dzieli sie gdzies tam w pewnym wzorze przez 8 (lub mnozy nie
pamietam) a to wynika z 8x512B = 4096B (cluster). Bo 8 to jest ilosc

To zostalo zalatwione odpowiednimi wyliczanymi stalymi z cyklu
SEC_PER_CLUST czyli sektorow na cluster ect.

zobacz sobie www.h-mpeg.de tam jest wersja obslugujace CDROM tez na
S8515

Fajnie, tylko sprzet troche inny, zupelnie inaczej zrobiony interfejs
ATA, bo w h-mpeg siedzi w przestrzeni adresowej i sie duzo prosciej
Sa pewne analogie...
obsluguje. Trza by zrobic jakas hybryde tych softow, a to dla mnie na
razie za trudne. Po za tym baza softu yamppa jest lepsza i najlepiej
bylo by wziasc z h-mpeg tylko procedury obslugi ISO.

Heh chyba mi sie udalo zrobic atapi_cmd () na wzor tej w H-MPEG. :)) CDROM
wyrzuca (czasami dopiero za druga wyslana ramka) i laduje plyte - to na
dobry poczatek. Kilka dni mi zajelo a juz bylem zrezygnowany. Anyway ciekawe
czy ten gosc z Wegier jak mu sie udalo zrobic obluge CD.

Pozdrawiam

Pelos

--
> Pozdrawiam.... Romuald Bialy
> E'mail: romek_b_at_nospam_o2.pl
> WWW: http://www.polbox.com/r/romekb
>
>