|
Вывод напряжения на LCD с ATmega32 |
|
|
|
Jul 21 2011, 06:20
|
Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332

|
Помогите пожалуйста разобраться, задача такая: в CVAvr измерить напряжение на любом входе, где стоит переменный резистор, вывести значение напряжения на LCD с помощью типов int, float, char. Необходимо написать программу без использования прерываний.
|
|
|
|
|
 |
Ответов
|
Jul 21 2011, 20:53
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343

|
А что из оборудования у Вас есть? JTAG там, плата отладочная, какие версии софта? а то напишет кто-нибудь под CV выпуска так года 2003, а у Вас этот пример не соберется. Да и LCD разные бывают. Upd: вот, наковырял. Код #include <alcd.h> #include <delay.h> // ******************** ADC ***************************** // инициализация АЦП void adc_init(void){ ADMUX = (0<<REFS1)|(1<<REFS0); // AVCC - 5v ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // CK/128 //ADCSRB = (1<<ADTS2)|(1<<ADTS1)|(0<<ADTS0); // timer1 overflow } // разовое чтение АЦП поллингом unsigned short int adc_convert(unsigned char channel){ unsigned short int result; ADMUX = (ADMUX & 0xF0)|channel; ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADSC))); result = ( ((unsigned short int)ADCH << 8) | (unsigned short int)ADCL); return result; } char flash fmt[] = "%d"; void main(void) { char buf[16]; unsigned short int adc_data; lcd_init(16); while(1) { adc_data = adc_convert(0); lcd_clear(); lcd_gotoxy(0,0); sprintf(buf, fmt, adc_data); lcd_puts(buf); вудфн_ьы(100)ж } } Лаба или курсач?
|
|
|
|
|
Jul 21 2011, 21:43
|
Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332

|
Цитата(Leen @ Jul 22 2011, 00:53)  А что из оборудования у Вас есть? JTAG там, плата отладочная, какие версии софта? а то напишет кто-нибудь под CV выпуска так года 2003, а у Вас этот пример не соберется. Да и LCD разные бывают. Из оборудования все есть, Codevision есть последний и 1.25 Цитата(Leen @ Jul 22 2011, 00:53)  Лаба или курсач? Ни то, ни то. На работе решили меня нагрузить этим, радует только что Atmel, а не Freescale достался. Спасибо большое за помощь.
|
|
|
|
|
Jul 22 2011, 07:23
|
Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332

|
Цитата(zltigo @ Jul 22 2011, 02:18)  Не верится категорически. Ограничения задания абсолютно надуманы, а сама цель "работы" совершенно бесполезна. Не верится и не надо. Ограничения даны для того, чтобы пошагово разобраться с новым для себя разделом. Собственно и цель, как Вы говорите, "работы" такая же. Далее задания по нарастающей. Или необходимо было начинать обучение с создания программы на камне Motorolla или Freescale в каком-нибудь медицинском комплексе который пойдет в серию? Не, спасибо. Цель Вашего комментария непонятна. "Тонкий" троллинг? Толсто!
|
|
|
|
|
Jul 22 2011, 07:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(inaugeego @ Jul 22 2011, 09:23)  Или необходимо было начинать обучение с создания программы на камне Motorolla или Freescale в каком-нибудь медицинском комплексе который пойдет в серию? В серию конечно нет, но а на каком "камне" - какая разница? Конечно есть разница между Tiny и Cortex M3, а тем более Cortex A8, но не такая уж и глобальная (пока в дебри не лезть). Процесс освоение нового "камня", это по минимуму: 1) знакомство с распределением памяти и стартом процессора (откуда начинает, начальная инициализация). 2) постепенное знакомство с периферийными устройствами в проце. Все остальное - это уже "шлифовка". Переферия - почему "постепенно", потому что для начала достаточно порт освоить (т.е. ногодрыганье), из-за чего Hello world в МК это "помигать светодиодиком". Затем лично я предпочитаю разобраться с таймером, хотя бы одним, и прерыванием от него - чтобы можно было сделать системные часы и делать всякие временные задержки, но это необязательно. В Вашей задаче - после портов надо с АЦП разбираться, задержку в концйе концов, можно и тупым циклом поначалу сделать. Ваша программа будет выгладеть примерно так: Код void main(void) { int ADC_Result;
InitProc(); // начальная инициализация процессора и его периферии InitLCD(); while(1) { Deleay(?);// задержка на ? время ADC_Result=GetADC(); LCD_Print(ADC_Result); } } А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно.
|
|
|
|
|
Jul 22 2011, 09:11
|
Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332

|
Цитата(Allregia @ Jul 22 2011, 11:43)  В серию конечно нет, но а на каком "камне" - какая разница? Конечно есть разница между Tiny и Cortex M3, а тем более Cortex A8, но не такая уж и глобальная (пока в дебри не лезть). К сожалению именно в дебри с ATmega лезть и придется. Цитата(Allregia @ Jul 22 2011, 11:43)  Процесс освоение нового "камня", это по минимуму: 1) знакомство с распределением памяти и стартом процессора (откуда начинает, начальная инициализация). 2) постепенное знакомство с периферийными устройствами в проце.
Все остальное - это уже "шлифовка". Переферия - почему "постепенно", потому что для начала достаточно порт освоить (т.е. ногодрыганье), из-за чего Hello world в МК это "помигать светодиодиком". Затем лично я предпочитаю разобраться с таймером, хотя бы одним, и прерыванием от него - чтобы можно было сделать системные часы и делать всякие временные задержки, но это необязательно. Спасибо за полезные советы Цитата(Allregia @ Jul 22 2011, 11:43)  В Вашей задаче - после портов надо с АЦП разбираться, задержку в концйе концов, можно и тупым циклом поначалу сделать. Ваша программа будет выгладеть примерно так: Код ... А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно. Спасибо, задача уже мной успешно решена была, со всем разобрался, дальше работать проще.
|
|
|
|
Сообщений в этой теме
inaugeego Вывод напряжения на LCD с ATmega32 Jul 21 2011, 06:20 Dog Pawlowa Цитата(inaugeego @ Jul 21 2011, 09:20) По... Jul 21 2011, 07:21 inaugeego Цитата(Dog Pawlowa @ Jul 21 2011, 11:21) ... Jul 21 2011, 07:24  kovigor Цитата(inaugeego @ Jul 21 2011, 10:24) ка... Jul 21 2011, 08:33   inaugeego Цитата(kovigor @ Jul 21 2011, 11:33) Дата... Jul 21 2011, 15:31    haker_fox QUOTE (inaugeego @ Jul 22 2011, 00:31) Из... Jul 21 2011, 16:40     inaugeego Цитата(haker_fox @ Jul 21 2011, 20:40) И ... Jul 21 2011, 20:38 Сергей Борщ QUOTE (inaugeego @ Jul 21 2011, 09:20) Не... Jul 21 2011, 09:36    zltigo QUOTE (inaugeego @ Jul 22 2011, 09:23) Це... Jul 22 2011, 19:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|