Flere UARTs i ATMega161

J

jetal

Guest
Jeg overvejer om, hvordan man skriver en eksperimentel anvendelse i C, der bruger både hardware UARTs i Mega161 AVR chip.Jeg vil bruge ICC AVR for udvikling.

Fra ICCAVR hjælpe filen / manual, kan jeg se, at jeg kan bruge putchar () og getchar () til at sende og modtage tegn.Men disse funktioner ikke definere, hvilken UART karakter bliver sendt til eller modtaget fra.

For mig ser det ud til jeg er nødt til at skrive min egen modificerede putchar0 () og putchar1 () funktioner til at skrive til de forskellige UARTs og lignende for at modtage.Jeg kan se, at det ikke er en vanskelig opgave at gøre dette, men er det den letteste metode, eller er der noget bedre?

Hvis nogen har gjort noget lignende det ville være rart at se en kodestykke.

 
Ja det er rigtigt, men du vil opleve at du ikke kan bruge standard formatter som printf (), fordi det minder om lavere niveau funktion såsom putchar ()
Stark

 
Jeg forstår, at højere funktioner som printf () kalder lavere funktioner som putchar (), og hvis jeg skulle til at udgive en streng med puts (), det ville også påberåbe putchar ().

Jeg har gjort brugerdefinerede putchar () at gennemføre en interrupt drevet putchar () i en 8.051.Dette har ikke erstatte biblioteket putchar () - Jeg gav min funktion, et andet navn.

Den egentlige pointe i min forespørgsel: er dette den mest elegante og effektive eller bedste måde?Jeg er en "rå" programmør og jeg vil gerne vide, hvordan nogen med mere erfaring vil henvende sig til problemet.

 
Jeg vil generere skrive og læse funktioner, der accepterer parametre for portnummer og data til at sende (dvs. wrSIO (havn, længde, char *)).Uafhængige buffere for hver UART.Separat afbryder drevet lavt niveau rutiner for I / O.Brug ikke printf () til at formatere, bruge sprintf ().

 

Welcome to EDABoard.com

Sponsor

Back
Top