реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вывод напряжения на LCD с ATmega32
inaugeego
сообщение Jul 21 2011, 06:20
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332



Помогите пожалуйста разобраться, задача такая:
в CVAvr измерить напряжение на любом входе, где стоит переменный резистор, вывести значение напряжения на LCD с помощью типов int, float, char. Необходимо написать программу без использования прерываний.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 21 2011, 07:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(inaugeego @ Jul 21 2011, 09:20) *
Помогите пожалуйста

Что именно непонятно?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 21 2011, 07:24
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332



Цитата(Dog Pawlowa @ Jul 21 2011, 11:21) *
Что именно непонятно?

как бы в принципе всё, т.к. впервые столкнулся с программированием контроллеров, кровь из носу нужно разбираться в этом деле, причем срочно. Не могу разобраться с портами что куда и как. я понимаю, что задача тривиальна, но все же не получается
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 21 2011, 08:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(inaugeego @ Jul 21 2011, 10:24) *
как бы в принципе всё,


Даташит прочитан ? Если нет, говорить не о чем. И книг по AVR масса. Тот же Трамперт и еще много много всякой литературы:

http://lord-n.narod.ru/walla.html
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 21 2011, 09:36
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (inaugeego @ Jul 21 2011, 09:20) *
Необходимо написать программу без использования прерываний.
Из чего вытекает такое требование?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 21 2011, 15:31
Сообщение #6





Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332



Цитата(kovigor @ Jul 21 2011, 11:33) *
Даташит прочитан ? Если нет, говорить не о чем. И книг по AVR масса. Тот же Трамперт и еще много много всякой литературы:

http://lord-n.narod.ru/walla.html

Прочитан. Книги есть. Но не помогло особо пока что. мне проще понять, когда есть реальный пример.

Цитата(Сергей Борщ @ Jul 21 2011, 12:36) *
Из чего вытекает такое требование?

Из ТЗ
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 21 2011, 16:40
Сообщение #7


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (inaugeego @ Jul 22 2011, 00:31) *
Из ТЗ

И кто такие странные ТЗ раздает?

По делу: примеры в сети нужно искать. Но без базовых знаний вряд ли Вы сразу все разберете. Откажитесь от выполнения задания. Отказывать простительно, непростительно соглашаться и делать ошибки.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 21 2011, 20:38
Сообщение #8





Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332



Цитата(haker_fox @ Jul 21 2011, 20:40) *
И кто такие странные ТЗ раздает?

По делу: примеры в сети нужно искать. Но без базовых знаний вряд ли Вы сразу все разберете. Откажитесь от выполнения задания. Отказывать простительно, непростительно соглашаться и делать ошибки.

эээ. Дают. Для того чтоб разобраться с простыми принципами, но в силу особенностей моего мозга мне гораздо проще глянуть на пример и понять основы, нежели пыхтеть изучая их методом проб и ошибок в силу ограниченности времени. Примеры в сети искались. Подходящего не нашел. Отказаться нельзя. По прежнему жду, что кто-либо поможет все таки кодом.
Go to the top of the page
 
+Quote Post
Leen
сообщение Jul 21 2011, 20:53
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 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)ж
  }
}

Лаба или курсач?
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 21 2011, 21:43
Сообщение #10





Группа: Новичок
Сообщений: 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 достался.
Спасибо большое за помощь.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 21 2011, 22:18
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (inaugeego @ Jul 21 2011, 23:43) *
Ни то, ни то.

Не верится категорически. Ограничения задания абсолютно надуманы, а сама цель "работы" совершенно бесполезна.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 22 2011, 07:23
Сообщение #12





Группа: Новичок
Сообщений: 7
Регистрация: 21-07-11
Пользователь №: 66 332



Цитата(zltigo @ Jul 22 2011, 02:18) *
Не верится категорически. Ограничения задания абсолютно надуманы, а сама цель "работы" совершенно бесполезна.

Не верится и не надо. Ограничения даны для того, чтобы пошагово разобраться с новым для себя разделом. Собственно и цель, как Вы говорите, "работы" такая же. Далее задания по нарастающей. Или необходимо было начинать обучение с создания программы на камне Motorolla или Freescale в каком-нибудь медицинском комплексе который пойдет в серию? Не, спасибо. Цель Вашего комментария непонятна. "Тонкий" троллинг? Толсто!
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 22 2011, 07:43
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 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);        
      }
}


А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно.
Go to the top of the page
 
+Quote Post
inaugeego
сообщение Jul 22 2011, 09:11
Сообщение #14





Группа: Новичок
Сообщений: 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) *
В Вашей задаче - после портов надо с АЦП разбираться, задержку в концйе концов, можно и тупым циклом поначалу сделать.
Ваша программа будет выгладеть примерно так:
Код
...

А вот чтобы написать все внутренние функции - это Вам придется разбираться самостоятельно.

Спасибо, задача уже мной успешно решена была, со всем разобрался, дальше работать проще.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 22 2011, 19:22
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (inaugeego @ Jul 22 2011, 09:23) *
Цель Вашего комментария непонятна.

Не ставить и не заниматься бессмысленными задачами. Бессмысленность постановки задачи тянет за собой и бессмысленность полученного результата и "опыта".



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01777 секунд с 7
ELECTRONIX ©2004-2016