Система вимірника струмів

курсовая работа

3.1 Проектування процедури ініціалізації апаратури мікропроцесора

У процедурі ініціалізації ми повинні налаштувати усі задіяні вузли мікроконтролеру та зовнішніх пристроїв за допомогою функцій, які встановлять усі необхідні режими роботи та початкові значення регістрів, потрібних для роботи програми. Ми повинні проініціалізувати наступні блоки:

- порти вводу/виводу;

- таймер-лічильник 0;

- АЦП;

- РКІ;

Функція налаштування портів, АЦП та таймеру:

void init_mega (void)

{

DDRC = 0xFF; // порт С на вивід

DDRB = 0xFF; // порт В на вивід

DDRD = 0xFF; // порт D на вивід

ACSR = 0x80; // вимкнення компаратору

ADMUX = ADC_VREF_TYPE; // зовнішнє джерело опорної напруги, вхід АЦП - порт А, вхід 0

ADCSRA = 0xEE; // АЦП - вкл, почати перетворення, режим переривання від Т/Л0, дозвіл переривання від АЦП

SFIOR = 0x80; // переривання по переповненню Т/Л0

#asm("cli") // заборона усіх переривань

TIMSK |= (1 << TOIE0); // дозвіл переривань від Т/Л0

TCNT0=Tmr0_Reload; // завантаження початкового значення

TCCR0=PrescalerTmr0; // обрання частоти тактового сигналу

}

Функція налаштування роботи РКІ

void lcd_init (void)

Ця функція використана із стандартного include - файлу LCD.h компілятору. Її повне описання можна переглянути у компіляторі. Вона налаштовує РКІ на режим роботи з 4 лініями даних, без включення курсору, відображення символів ввімкнено, режим роботи з двома строками. Керуюча послідовність:

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x20);

_long_delay();

_lcd_write_data(0x28);

_long_delay();

_lcd_write_data(0x04);

_long_delay();

_lcd_write_data(0x85);

_long_delay();

Делись добром ;)