Arch spr6


Wydział Informatyki

Katedra Systemów Czasu Rzeczywistego

Laboratorium Architektury Komputerów

Data

15.12.2009

Ćwiczenie nr 6

Temat: Uart

Zespół nr 2 1. Robert Jarocki

Grupa nr 6 2. Jarosław Jastrzębski

Prowadzący

…......................

Ocena

…......................

Zadanie:

Napisać program wyświetlający na wyświetlaczu msp430 znaki wprowadzana za pomocą klawiatury komputera.

Teoria:

Układ Usart MSP430 umożliwia transmisję szeregową w trybie asynchronicznym.

USART podłączony jest do urządzeń zewnętrznych za pomocą 2 zewnętrznych pinów,

URXD i UTXD (3.4 i 3.5).

Pracę w tym trybie, umożliwiającym komunikację z komputerem przez port RS-232, właczamy zerując bit SYNC w rejestrze sterującym.

Format ramki danych.

Ramka danych trybu asynchronicznego UART składa się z następujących pól:

Typowe prędkości transmisji .

Ustawienia rejestrów sterujących dla standardowych prędkości transmisji (dla zegara 32,768-

Hz (ACLK) i 1,048,576-Hz SMCLK) przedstawia poniższa tabela:

0x08 graphic

Schemat układu:

0x08 graphic

Kod programu:

#include<msp430x14x.h>

#include "uart.h"

#include "lcd.h"

#include "portyUart.h"

#include "portyLcd.h"

char Bufor[30]; // bufor odczytywanych danych

int low=0; // znacznik począteku danych w buforze

int high=0; // zmacznik końca danych w buforze

int i=0;

int di=0;

int si=0;

int ti=0;

int x=0;

void main(void)

{

WDTCTL=WDTPW + WDTHOLD; // wyłączenie WDT

InitPortsLcd(); // inicjalizacja portów LCD

InitLCD(); // inicjalizacja LCD

clearDisplay(); // czyszczenie wyświetlacza

initPortyUart(); // inicjalizacja portow UART

initUart(1200); // inicjalizacja UARTa prędkość transmisji 2400 Budoów

_EINT(); // włączenie przerwań

while(1)

{

while(high != low) // gdy odebrano dane

{

if(i%16==0) SEND_CMD(DD_RAM_ADDR2);

if(i%32==0)

{

clearDisplay();

SEND_CMD(DD_RAM_ADDR);

}

putc(Bufor[low]); // wypisanie danych na wyświetlaczu

low= (++low)%30; // inkrementowanie znaczika początka danych

i++;

x++;

if(x>=9)

{

di++;

x=0;

}

if(di>=9)

{

si++;

di=0;

}

if(si>=9)

{

ti++;

si=0;

}

if(ti>0) UartCharTransmit(ti+48);

if(si>0) UartCharTransmit(si+48);

if(di>0) UartCharTransmit(di+48);

UartCharTransmit(x+48);

UartCharTransmit(' ');

}

}

}

#pragma vector=UART0RX_VECTOR // procedura obsługi przerwania UART

__interrupt void usart0_rx (void)

{

Bufor[high]=RXBUF0; // wpisanie odebranych danych do bufora

high=(++high)%30; // inkrementowanie znacznika końca danych

}

void initPortyUart(void)

{

P3SEL |= Tx + Rx;

P3DIR |= Tx;

P3DIR &= ~ Rx;

}

void initUart( int Speed)

{

int i;

BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL 8MHz

do

{

IFG1 &= ~OFIFG; // Czyszczenie flgi OSCFault

for (i = 0xFF; i > 0; i--); // odczekanie

}

while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona

BCSCTL2 |= SELM1+SELM0 ; // MCLK =LFXT1

switch(Speed)

{

case 1200:

{

ME1 |= UTXE0 + URXE0;// Włączenie USART0 TXD/RXD

UCTL0 |= CHAR; // 8-bitów

UTCTL0 |= SSEL0; // UCLK = ACLK

UBR00 = 0x0A; // 8MHz/Speed in Bauds

UBR10 = 0x1A;

UMCTL0 = 0x5B; // Modulation

UCTL0 &= ~SWRST; // Inicjalizacja UARTA

IE1 |= URXIE0; // Włączenie przerwań od RX

break;

}

}

}

//---------------- wysyłanie znaku ---------

void UartCharTransmit(unsigned char znak)

{

while ( (IFG1 & UTXIFG0)==0); // gdy ukłąd nie jest zajęty

TXBUF0=znak; // wysyłamy znak

}

//---------------- wysyłanie napisu ----------

void UartStringTransmit(char * napis)

{

while( *napis)

UartCharTransmit(*napis ++);

}



Wyszukiwarka

Podobne podstrony:
arch biol 20092010 sz id 67616 Nieznany
38 USTAWA O OC ARCH I INZ
arch biol 20042005 wo
ARCH MED SĄD KRYM 1998, XLVII, 27 34
arch med sad 2 2012
7331 tech arch kraj ark prak1 c Nieznany
ARCH MED SĄD KRYM 1999, XLIX, 277 286
ARCH 2, Budownictwo Politechnika Rzeszowska, Rok IV, Urbanistyka i Architektura, Sciagi
ROSLINY NA KWIAT CIĘTY, egzamin, arch.krajobrazu
arch bizantyjska
Metale i półprzewodniki spr6 spr6
PYTANIA ARCH
Arch spr5
Spr6
arch 1 50pio id 67608 Nieznany
Botanika arch, ZACHOMIKOWANE#, Doc, a]WIELKIE OGRODNICTWO I SADOWNICTWO
spr6, studia, bio, 3rok, 6sem, biotechnologia, lab
Arch?luxe (2)
arch noty

więcej podobnych podstron