inaugeego 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Помогите пожалуйста разобраться, задача такая: в CVAvr измерить напряжение на любом входе, где стоит переменный резистор, вывести значение напряжения на LCD с помощью типов int, float, char. Необходимо написать программу без использования прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Помогите пожалуйста Что именно непонятно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Что именно непонятно? как бы в принципе всё, т.к. впервые столкнулся с программированием контроллеров, кровь из носу нужно разбираться в этом деле, причем срочно. Не могу разобраться с портами что куда и как. я понимаю, что задача тривиальна, но все же не получается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба как бы в принципе всё, Даташит прочитан ? Если нет, говорить не о чем. И книг по AVR масса. Тот же Трамперт и еще много много всякой литературы: http://lord-n.narod.ru/walla.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Необходимо написать программу без использования прерываний.Из чего вытекает такое требование? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Даташит прочитан ? Если нет, говорить не о чем. И книг по AVR масса. Тот же Трамперт и еще много много всякой литературы: http://lord-n.narod.ru/walla.html Прочитан. Книги есть. Но не помогло особо пока что. мне проще понять, когда есть реальный пример. Из чего вытекает такое требование? Из ТЗ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Из ТЗ И кто такие странные ТЗ раздает? По делу: примеры в сети нужно искать. Но без базовых знаний вряд ли Вы сразу все разберете. Откажитесь от выполнения задания. Отказывать простительно, непростительно соглашаться и делать ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба И кто такие странные ТЗ раздает? По делу: примеры в сети нужно искать. Но без базовых знаний вряд ли Вы сразу все разберете. Откажитесь от выполнения задания. Отказывать простительно, непростительно соглашаться и делать ошибки. эээ. Дают. Для того чтоб разобраться с простыми принципами, но в силу особенностей моего мозга мне гораздо проще глянуть на пример и понять основы, нежели пыхтеть изучая их методом проб и ошибок в силу ограниченности времени. Примеры в сети искались. Подходящего не нашел. Отказаться нельзя. По прежнему жду, что кто-либо поможет все таки кодом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
leen 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба А что из оборудования у Вас есть? 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)ж } } Лаба или курсач? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба А что из оборудования у Вас есть? JTAG там, плата отладочная, какие версии софта? а то напишет кто-нибудь под CV выпуска так года 2003, а у Вас этот пример не соберется. Да и LCD разные бывают. Из оборудования все есть, Codevision есть последний и 1.25 Лаба или курсач? Ни то, ни то. На работе решили меня нагрузить этим, радует только что Atmel, а не Freescale достался. Спасибо большое за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Ни то, ни то. Не верится категорически. Ограничения задания абсолютно надуманы, а сама цель "работы" совершенно бесполезна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба Не верится категорически. Ограничения задания абсолютно надуманы, а сама цель "работы" совершенно бесполезна. Не верится и не надо. Ограничения даны для того, чтобы пошагово разобраться с новым для себя разделом. Собственно и цель, как Вы говорите, "работы" такая же. Далее задания по нарастающей. Или необходимо было начинать обучение с создания программы на камне Motorolla или Freescale в каком-нибудь медицинском комплексе который пойдет в серию? Не, спасибо. Цель Вашего комментария непонятна. "Тонкий" троллинг? Толсто! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба Или необходимо было начинать обучение с создания программы на камне 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); } } А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inaugeego 0 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба В серию конечно нет, но а на каком "камне" - какая разница? Конечно есть разница между Tiny и Cortex M3, а тем более Cortex A8, но не такая уж и глобальная (пока в дебри не лезть). К сожалению именно в дебри с ATmega лезть и придется. Процесс освоение нового "камня", это по минимуму: 1) знакомство с распределением памяти и стартом процессора (откуда начинает, начальная инициализация). 2) постепенное знакомство с периферийными устройствами в проце. Все остальное - это уже "шлифовка". Переферия - почему "постепенно", потому что для начала достаточно порт освоить (т.е. ногодрыганье), из-за чего Hello world в МК это "помигать светодиодиком". Затем лично я предпочитаю разобраться с таймером, хотя бы одним, и прерыванием от него - чтобы можно было сделать системные часы и делать всякие временные задержки, но это необязательно. Спасибо за полезные советы В Вашей задаче - после портов надо с АЦП разбираться, задержку в концйе концов, можно и тупым циклом поначалу сделать. Ваша программа будет выгладеть примерно так: ... А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно. Спасибо, задача уже мной успешно решена была, со всем разобрался, дальше работать проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба Цель Вашего комментария непонятна. Не ставить и не заниматься бессмысленными задачами. Бессмысленность постановки задачи тянет за собой и бессмысленность полученного результата и "опыта". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться