Instrukcja Lab4 id 216877 Nieznany

background image

1

Architektura komputerów

i systemy operacyjne


Instrukcja do laboratorium nr 4




Temat:
Obsługa przetworników ADC w mikrokontrolerach
rodziny STM32


Opracował: Andrzej Poniecki

Data: 09.11.2010 r.









Spis treści

1. Wprowadzenie…................................................................................................. 2

1.1. C

EL ĆWICZENIA

................................................................................................................. 2

1.2. W

YMAGANIA

................................................................................................................... 2

1.3. P

RZYKŁADOWE PYTANIA KONTROLNE

..................................................................................... 2

2. Przykładowy program………………………………………………………………..... 2

2.1. P

ODSTAWOWE CECHY PROJEKTU………………..

............................................................................. 5

3. Zadania do wykonania……………………………………………………………........ 5

3.1. Z

ADANIE 1 (1 PUNKT)

........................................................................................................ 5

3.2. Z

ADANIE 2 (2 PUNKTY)

....................................................................................................... 5

3.3. Z

ADANIE 3 (2 PUNKTY)

....................................................................................................... 5

3.4. Z

ADANIE 4 (2 PUNKTY)

....................................................................................................... 6

background image

2

1. Wprowadzenie

1.1.

Cel ćwiczenia


Celem ćwiczenia jest zapoznanie i nauczenie studentów korzystania z przetworników

ADC i utrwalania umiejętności programowania nabytych na poprzedzających ćwiczeniach
laboratoryjnych.

1.2.

Wymagania

Podstawowa znajomość architektury mikrokontrolera STM32F103VBT6.

Znajomość budowy i działania modułu przetworników ADC1 i 2.

Podstawowa znajomość budowy i działania timerów mikrokontrolera
STM32F103VBT6.

Znajomość organizacji przerwań mikrokontrolerów Cortex-M3.

Znajomość płyty laboratoryjnej ZL27ARM.

Podstawowa znajomość języka C.


1.3.

Przykładowe pytania kontrolne

Narysuj schemat blokowy przetwornika ADC w mikrokontrolerach rodziny STM32.

Wymień tryby pracy ze względu na źródło wyzwolenia

Opisz różnice wykorzystania grup kanałów

Określ minimalny czas przetwarzania i czynniki zależności

Podaj liczbę kanałów pomiarowych, maksymalną częstotliwość sygnału zegara
taktującego przetworniki oraz systemowego

Do czego służy analogowy watchdog?

Wymień źródła przerwań od przetworników

Do czego służy proces kalibracji przetworników

W jakim celu mogą być wykorzystywane przetworniki ADC mikrokontrolera STM32?



2. Przyk

ładowy program

Nazwa pliku projektu - Lab4_ACTimer.


#include "stm32f10x.h"
#include "lcd4bit.h"
#include <stdio.h>

void RCC_Conf(void);
void NVIC_Conf(void);
void GPIO_Conf(void);
void TIMER1(void);
void ADC1_Conf(void);

background image

3


ADC_InitTypeDef ADC_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;

uint16_t ADC1Val = 0;
char wynik[7];
unsigned char a=0;

int main(void)
{

RCC_Conf();

NVIC_Conf();

GPIO_Conf();

TIMER1();

ADC1_Conf();


LCD_Init();

LCD_Clear();


TIM1->CR1|= 0x00000001;

//aktywacja timera TIM1


while(1)

{

ADC1Val = ADC_GetConversionValue(ADC1) * 0.807;

sprintf(wynik, "%d,%03d V", ADC1Val / 1000, ADC1Val % 1000);

LCD_Clear();

LCD_GoTo(0,0);

LCD_SendText("NAPIECIE NA P1:");

LCD_GoTo(1,3);

LCD_SendText((uint8_t*)wynik);

delay_ms(500);

}

}

void GPIO_Conf(void)
{

GPIOA->CRL=0x44444444;

// ustaw. wej. cyfrowe na PCA(3..0)

GPIOB->CRH=0x33333333;

// ustaw. sterow. diodami LED na PCB(15..8)

GPIOC->CRL=0x44404444;

// pomiar analog. na wej. PC4

}

void RCC_Conf(void)

//ustawia zewnetrzny oscylator na 8MHz

{

RCC_DeInit();

// reset ustawien RCC

RCC->CR=RCC_CR_HSEON;

// wlaczenie HSE

while((RCC_CR_HSERDY)==0);

// czekaj az zewn. osc. sie ustabil.


RCC->CFGR = 0x00154400;

// ustalenie prescalerów

background image

4

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

FLASH_SetLatency(FLASH_Latency_2);

// zwloka dla pamieci Flash


RCC->CR |= 0x01000000;

// wlaczenie PLL

while((RCC_CR_PLLRDY)==0);

// czekaj az PLL sie ustabil.


RCC->CFGR |= 0x00000002;

// wł. PLL na SYSCLK

while(RCC_GetSYSCLKSource() != 0x08);

// czekaj az PLL bedzie sygnalem
//zegarowym systemu


//wlaczenie sygn. zegara na peryferia
RCC->APB2ENR=RCC_APB2ENR_IOPAEN|RCC_APB2ENR_IOPBEN
|RCC_APB2ENR_IOPCEN|RCC_APB2ENR_TIM1EN|RCC_APB2ENR_ADC1EN;

RCC->APB1ENR=RCC_APB1ENR_SPI2EN;

// wlaczenie SPI dla LCD

}

void NVIC_Conf(void)
{

NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM

// Jezeli tablica wektorow w RAM, to ustaw jej adres na 0x20000000

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

#else // VECT_TAB_FLASH

// W przeciwnym wypadku ustaw na 0x08000000

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

#endif


// Wlacz przerwanie od TIM1

NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}


void TIMER1(void)
{

TIM1->PSC = 5599;

//fclk = 56MHz/5600 = 10kHz

TIM1->ARR = 9999;

//podzielnik -> 10kHz

TIM1->CR1|= 0x00000010;

//dekrementcja licznika

TIM1->DIER|= 0x00000002;

//aktyw. przerwania od CC1

}

void ADC1_Conf(void)
{

ADC1->CR2|= 0x00100000;

//wyzw. zewn. od TIM1 kanalu CC1,

//wyrown. do prawej

ADC1->SQR3|= 0x0000000E;

//kanal 14

ADC1->CR2|= 0x00000001;

//aktywacja ADC1

background image

5

ADC1->CR2|= 0x00000008;

//reset kalibracji

while((ADC_CR2_RSTCAL)==1);

//czekaj na zakoncz. resetu kalibracji


ADC1->CR2|= 0x00000004;

//kalibracja

while((ADC_CR2_CAL)==1);

//czekaj na zakoncz. kalibracji

}

2.1.

Podstawowe cechy projektu

Wykorzystywany w ćwiczeniu jest przetwornik ADC1. Mierzona jest wartość

napięcia na potencjometrze analogowym dołączonym do pinu PC4 mikrokontrolera.
Ustawiona jest częstotliwość sygnału zegara systemowego na 56MHz. Z tego sygnału, po
podzieleniu częstotliwości przez 4, uzyskiwany jest sygnał taktujący przetworniki ADC.
Wyzwalanie przetwornika dokonywane jest od timera TIM1 z okresem 1s. Wartość
zmierzonego napięcia przedstawiana jest na wyświetlaczu LCD.

3. Zadania do wykonania

3.1.

Zadanie 1 (1 punkt)


W dostępnym projekcie ustawić częstość wyzwalania zgodnie z algorytmem:
t

wyzw

= 1[s] + 300 x (nr stanowiska)

i wysterować wybraną diodę LED sygnalizującą momenty dokonanych konwersji.

3.2.

Zadanie 2 (2 punkty)

Wykorzystać analogowy watchdog do kontroli poziomu mierzonego napięcia.

Ustalić wartości progów:

dolny:

U

Lprog

= 0[V] + 0.15 x (nr stanowiska)

górny

U

Hprog

= 1.5[V] + 0.15 x (nr stanowiska)

Przekroczenie progów sygnalizować zaświeceniem wybranej diody LED.


3.3.

Zadanie 3 (2 punkty)

Wykorzystując grupę kanałów wstrzykiwanych (injected group) dokonywać

pomiarów napięć z potencjometru P1 i czujnika temperatury. Wartości zmierzonych napięć
przedstawiać na wyświetlaczu LCD.




background image

6

3.4.

Zadanie 4 (2 punkty)

Wykorzystując dostępny projekt (wyzwalanie od timera 1) wprowadzić procedurę

wyzwalania na żądanie (jednym z przycisków) uaktywniając programowe (pending bit)
zgłoszenie aktywnego przerwania.

Alternatywnym zadaniem jest wykorzystanie wspólne przetworników ADC1 i 2 do

pomiaru napięć od źródeł jak w zadaniu 3.


Wyszukiwarka

Podobne podstrony:
Instrukcja ESRI id 216707 Nieznany
instrukcja laboratoryjna id 216 Nieznany
Instruktaz stanowiskowy id 2176 Nieznany
INSTRUKCJA obserwacja id 217027 Nieznany
Instrukcja 12 id 215508 Nieznany
INSTRUKCJA BHP 4 id 215697 Nieznany
KOS instrukcja 7 TM id 248303 Nieznany
instrukcja DTC id 216677 Nieznany
lab4(1) 3 id 259842 Nieznany
INSTRUKCJE Cwiczenie 1 id 71952 Nieznany
5 Instrukcja if id 39694 Nieznany
Instrumenty pochodne id 217770 Nieznany
Instrukcja UV2 id 217242 Nieznany
lab2 Instrukcja P2 C P id 75048 Nieznany
instrukcja 10 id 215506 Nieznany
Instrukcja kolka1 id 217336 Nieznany
Instrukcja cwiczenia 9 id 21649 Nieznany
lab3 Instrukcja P3 id 750620 Nieznany
Instrukcja belka id 215691 Nieznany

więcej podobnych podstron