RTV forum PL | NewsGroups PL

Jak zaimplementować wysyłanie bajta przez interfejs szeregowy w ATmega8?

Pytanko

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować wysyłanie bajta przez interfejs szeregowy w ATmega8?

Krzy$
Guest

Mon Mar 29, 2004 9:00 am   



Witam!
Stawiam pierwsze kroki w programowaniu Avr'ow.Obecnie bawie sie ATMega8 ,
mam rowniez pamiec flash z interfejsem szeregowym, ale w zwiazku z tym mam
pytanko.
Czy moglby ktos napisac kawalek procedurki wysylajacej bajt na wyjscie
szeregowo
Robilem to kiedys na zajeciach na 8051 ale tutaj cos nie mam pomyslu.
Z gory dzieki & Pozdrawiam!
Krzysiek

Krzy$
Guest

Mon Mar 29, 2004 9:08 am   



Zapomnialem dodac, ze prosilbym o procedurke w asemblerze.
Pzdr!

Krzy$
Guest

Mon Mar 29, 2004 11:07 am   



Udalo mi sie napisac cos takiego:

ldi r18,0xaa ;bajt do wyslania

wyslij_bajt:
ldi r19,8 ;bedzie 8bitow

wyslij:
ror R18 ;obroc przez flage przeniesienia
brcc bit_zero ;skocz jesli flaga wyzerowana
sbi portb,pb0 ;wyslij 1 jesli flaga=1 (wyjsciem jest pb0)
rjmp kon

bit_zero:
cbi portb,pb0 ;wyslij 0

kon:
dec R19
brne wyslij ;powtorz jesli nie wszystkie 8 bitow wyslane
ret

Czy to powinno dzialac prawidlowo-bo symulujac w AVRStudio wyglada ok???
Jest moze jakis krotszy sposob na wyslanie bajtu szeregowo?

Pozdrawiam!

Andy
Guest

Mon Mar 29, 2004 11:12 am   



Użytkownik "Krzy$" <kchrisk1@poczta.onet.pl> napisał w wiadomości
news:c48s42$etr$1@news.onet.pl...
Quote:
Witam!
Stawiam pierwsze kroki w programowaniu Avr'ow.Obecnie bawie sie ATMega8 ,
mam rowniez pamiec flash z interfejsem szeregowym, ale w zwiazku z tym mam
pytanko.
Czy moglby ktos napisac kawalek procedurki wysylajacej bajt na wyjscie
szeregowo


data flash ? np z serii AT45xxx ?

najlepiej uzyc sprzetowego SPI

rzucam kilka hasel:

SPCR - konfiguracja SPI
SPSR - status
SPDR - zapis/odczyt bajtu do wyslania /odebranego

poczytaj w pdf'ie do ATMega 8

zobacz tez na www.avrfreaks.net
moze sa gotowe procedurki

--
Andrzej

Andy
Guest

Mon Mar 29, 2004 11:20 am   



Użytkownik "Krzy$" <kchrisk1@poczta.onet.pl> napisał w wiadomości
news:c493h7$78g$1@news.onet.pl...
Quote:
Udalo mi sie napisac cos takiego:

ldi r18,0xaa ;bajt do wyslania

wyslij_bajt:
ldi r19,8 ;bedzie 8bitow

wyslij:
ror R18 ;obroc przez flage przeniesienia
brcc bit_zero ;skocz jesli flaga wyzerowana
sbi portb,pb0 ;wyslij 1 jesli flaga=1 (wyjsciem jest pb0)
rjmp kon

bit_zero:
cbi portb,pb0 ;wyslij 0

kon:
dec R19
brne wyslij ;powtorz jesli nie wszystkie 8 bitow wyslane
ret


wszytko OK tylko brak sygnalu CLOCK

jesli chcesz wysylac programowo
to po wystawieniu kazdego bitu danej musz dac impuls zegara
np. na PB1

---
sbi portb,pb1
nop ; opoznienie, niekonieczne jesli urzadznie odbierajace
; jest wystarczjaco szybkie
cbi portb,pb1
---

albo odwrotnie

---
cbi portb,pb1
nop
sbi portb,pb1
---

zalezy z czym sie komunikujesz

--
Andrzej

Krzy$
Guest

Mon Mar 29, 2004 12:33 pm   



A jak moglaby wygladac procedura zapisu 8 bitow danych otrzymanych szeregowo
na port?? (w asemblerze)
Pzdr!!
Krzysiek

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować wysyłanie bajta przez interfejs szeregowy w ATmega8?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map