føljetong i AVR ATMEGA8535

Z

zhi_yi

Guest
hei, behage hjelpe meg hvordan grensesnittet til seriell avbryte i ATMEGA8535, jeg fikk problemer i hvordan å sette baudrate av asynkrone tranmission modus.Jeg leste fra sin dataark som UBRR (12 bit) inneholder av UBRRH (4 biter) og UBRRL (8 bit).og jeg bruker ICC AVR søknad byggmester til å bygge programmet, og den sa at UBRR bør være "25" hvis jeg vil at baudrate til 9600, hva betyr "25" betyr?hvordan du tilordner den til UBRRH og UBRRL?og jeg vil bruke den serielle i avbryte modus, er det noen program eksempler?Tusen takk for din tid.

 
Dette kan være nyttig for deg.referere USART og side 170 i denne docs
Beklager, men du må logge inn for å vise dette vedlegget

 
Takk ckshivaram,

btw, jeg har lest dataarket at du lastet opp.kanne du behage guide meg steg for steg hva bør jeg gjøre hvis jeg ønsker å lage et program som vil motta data fra PC og deretter AVR ville sende den tilbake til PC (ekko den mottatte data)?Jeg sjekket at det er nothings galt med min hardware tilkobling.og jeg prøvde å lage et program ved hjelp av ICC AVR, her er koden:

Quote:/ / ICC-AVR Application Builder: 5/23/2008 11:06:09

/ / Mål: M8535

/ / Crystal: 4.0000Mhz# include <iom8535v.h>

# include <macros.h>void port_init (void)

(

PORTA = 0x00;

DDRA = 0x00;

PORTB = 0x00;

DDRB = 0x00;

PORTC = 0x00;

DDRC = 0x00;

PORTD = 0x00;

DDRD = 0x00;

)/ / UART0 initialize

/ / Ønsket overføringshastighet: 9600

/ / Faktisk overføringshastighet: 9615 (0,2%)

void uart0_init (void)

(

UCSRB = 0x00; / deaktivere mens innstillingen overføringshastighet

UCSRA = 0x00;

UCSRC = BIT (Ursel) | 0x06;

UBRRL = 0x19; / / set overføringshastighet lo

UBRRH = 0x00; / / set overføringshastighet hi

UCSRB = 0x18;

)/ / kaller denne rutinen å initialisere alle periferiutstyr

void init_devices (void)

(

/ / stopp villfaren avbryter før satt opp

CLI (); / / deaktivere alle avbrudd

port_init ();

uart0_init ();MCUCR = 0x00;

GICR = 0x00;

TIMSK = 0x00; / timer avbryter kilder

SEI (); / / gjenaktivere avbrudd

/ / alle periferiutstyr er nå initialisert

)/ * Lese og skrive funksjoner * /

unsigned char ReceiveByte (void)

(

while (! (UCSRA & (1 <<RXC))); / * Vent på innkommende data * /

return UDR; / * Return the data * /

)void TransmitByte (unsigned char data)

(

while (! (UCSRA & (1 <<UDRE))); / * Vent til tomt overføre buffer * /

UDR = data; / * Start overføring * /

)void main ()

(

init_devices ();

mens 1 ()

(

TransmitByte (ReceiveByte ()); / * Echo de mottatte tegn * /

)

)

 
Hei; den sannsynlige årsaken til ikke å få produksjonen er at du ikke fjerne flagget UDRE og RXCafter operasjonen.hvis det er en så den ikke vil motta dataene på nytt.så hver gang du kommer ut av loopen gjør at flag = 0; Tror det gjøres av kontrolleren bare.

Litt opptatt på kontoret, vil se nærmere på dette når jeg blir lei av mitt arbeid.Vil gi deg løsningen snart.

for øvrig som krystallen du bruker.bruk 11.0592MHZ det vil løse problemet.
Kontroller at innstillingene for HyperTerminal der du ser resultatet er riktig konfigurert, med hardware flyt er konfigurert som "ingen".

prøve dette og gi meg beskjed.

 
hei så lenge jeg vet, kan det krystallklare frekvens opprette feil på dataoverføring, jeg er egentlig ikke huske om det, men prøver å lese dataarket finner du tabellen med feilen der.

en informasjon for deg, hvis du kobler USART med en datamaskin som benytter Linux OS (jeg vet ikke om Windows OS) via RS-232 kan du sette baudrate UC av våre egne, men på datasiden må være 19200 bps (det er ingen god forklaring på hvorfor må være slik).

ok lykke, glem ikke holde lese dataarket og betaler atention på UBRR feil.
<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top