Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.05.2010, 20:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
CERGEI1982,
Цитата:
|
Ну а если надо измерять контроллером от 0 до 400 В
|
Вы цитату привели, хоть прочитайте ее внимательно. В самом первом посте вложена схема там делитель абсолютно рабочий собраный на резисторах в корпусе 0805 1%. Ничего переключать не нужно.
Цитата:
|
Советую найти книжку Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров
|
Так ее ж и курю. Только Шпак почемуто считает что книгу обязательно будет читать академик, Вы писали
Цитата:
|
Если стоит перед функцией void это обозначает что функция после окончания работы не возвращает никаких переменных в главную программу,которая вызвала ее
|
Шпак пишет
Цитата:
|
В качестве типа возвращаемого значения может использоваться слово void. Это означает, что функция или не возвращает никакого значения (в некоторых языках такие функции называют процедурам). конец предложения
стр117
|
Блин так нихрена и не понял, возвращает или нет? Шпак такое впечатление что выдрал кусок текста не удосужившись даже прочесть просто так пол предложения написал.
|
|
|
|
06.05.2010, 20:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Сообщение от 7Fantomas7
|
Блин так нихрена и не понял, возвращает или нет?
|
Не возвращает ничего.
|
|
|
|
06.05.2010, 21:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Сообщение от 7Fantomas7
|
В качестве типа возвращаемого значения может использоваться слово void. Это означает, что функция или не возвращает никакого значения (в некоторых языках такие функции называют процедурам). конец предложения
|
Здесь лишнее слово "ИЛИ". Т.е. это просто процедура, например зажечь светодиод или погасить и т.д. . Перед именем функции указывается тип возвращаемого значения, например "int summa(a,b)"
int summa(a,b)
{
int c;
c=a+b;
return c;
}
функция вернет результат сложения туда где она была вызвана, и где ей были указанны два операнда a и b. Например v=summa(5,2);
Если указано void, то она не возвращает ничего.
также если на месте передаваемых ей параметров стоит void, то ей (функции) ничего не передается.
Последний раз редактировалось andries5; 06.05.2010 в 21:06.
|
|
|
Сказали "Спасибо" andries5
|
|
|
07.05.2010, 12:17
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 67
Сказал спасибо: 24
Сказали Спасибо 13 раз(а) в 9 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
void - пустота; вакуум; лакуна. пробел, пропуск, пустое место
|
|
|
Сказали "Спасибо" nnikolaenko
|
|
|
10.05.2010, 13:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Добрый всем день.
Фух щас мозги съедут.
Вобшем помогите разобраться с выводом символа на индикатор.
Суть проблемы такая:
Индикатор с общим анодом подключен к порту В катодами, однако PB0 занят для других целей. Тким образом сегменты индикатора подключены к PB1...PB7, а сегмент запятой и восе подключен к PD4 выглядит это так
PINB0 вообще вход и в индикации не участвует, таблица подключения и старшинства разрядов
g f e d c b a in
pb7 pb6 pb5 pb4 pb3 pb2 pb1 pb0
pb0 вообще вход
знакогенератор особых затроуднений не вызвал равно как и другие функции за исключением записи цифры в порт например 0b00100001 (символ9). Если бы к порту был подключен индикатор полностью то вопросов никаких не возникает этот процес понятен полностью. Но как поведет себя PB0 если PORTB=0b00100001 т.е. запись 1 в бит0 порта. И как правильно в этом случае вывести цифру.
|
|
|
|
10.05.2010, 14:53
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Советую проглянуть вот этот аппноут
http://www.gaw.ru/pdf/Atmel/app/avr/avr_led-key.pdf
В кратце - мы можем переключать порт на вход или выход так как нам угодно. И нужно просто распределить в какой момент времени у нас будет входом в какой выходом. Более того мы даже на одном порту можем, к примеру, навсегда один пин оставить входом а остальные поставить выходом.
Кроме того нам по сути и не надо все сегменты вешать на один порт. Это делают для удобства.... Допустим, точку переносим на другой порт, и чтобы ее установить или снять нужно использовать побитовые операции. К примеру:
PHP код:
|
//DDRx|=0b00000100; // Ставим ногу нужного
//порта на выход если надо было на нее поставить сегмент индикатора
//Точка посажена на ногу PORTx.6 чтобы ее погасить до достаточно сделать так
//Если индикатор типа Общий катод
PORTx&=0b11111011;
//Если индикатор типа Общий анод
PORTx&=0b00000100;
//Ну и соответственно зажигаем
//OK
PORTx|=0b00000100;
//OA
PORTx|=0b11111011;
|
|
|
|
Сказали "Спасибо" MasterMushi
|
|
|
10.05.2010, 16:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
С апноутом проблемы в силу незнания капиталистических языков.
С асемблером тоже проблемы в силу нежелания его изучения, а в апноуте асемблер.
Цитата:
|
Более того мы даже на одном порту можем, к примеру, навсегда один пин оставить входом а остальные поставить выходом.
|
Да! да! да! так именно и нужно, забить гвоздями навсегда. Как правильно это сделать?
С точкой и побитовыми операциями вроде понятно, до точки еще доберусь.
А вот с побитовыми операциями для семи сегментов не совсем понятно
PORTB=0x01;//PB1 подтянут резистором
DDRB=0xFE; //PB1 объявлен входом остальные выхода 11111110
таким образом изначальное значение PORTB 00000001
но если мы будем делать побитовые операции хоть "И", хоть "ИЛИ" то первый раз то мы запишем что нужно, а через 10мс (частота переключения) мы будем уже писать другую цифру и на индикаторе получим не то что нужно.
|
|
|
|
10.05.2010, 17:12
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Сообщение от 7Fantomas7
|
С апноутом проблемы в силу незнания капиталистических языков.
С асемблером тоже проблемы в силу нежелания его изучения, а в апноуте асемблер.
|
И с внимательностью тоже.
Цитата:
|
PORTB=0x01;//PB1 подтянут резистором
DDRB=0xFE; //PB1 объявлен входом остальные выхода 11111110
|
|
|
|
|
10.05.2010, 17:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
st_1,
Да протормозил имелось в виду PB0 в проекте все правильно.
За указание на ошибки оно то и вроде как и спасибо, тока вот с моим вопросом бы помогли.
|
|
|
|
10.05.2010, 20:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: AT Mega8 вольтметр прошу помочь
Сообщение от 7Fantomas7
|
таким образом изначальное значение PORTB 00000001
но если мы будем делать побитовые операции хоть "И", хоть "ИЛИ" то первый раз то мы запишем что нужно, а через 10мс (частота переключения) мы будем уже писать другую цифру и на индикаторе получим не то что нужно.
|
Чтобы правильно горели цифры, можно делать в два этапа:
1 Погасить все катоды. PORTB |= 0b11111110;
2 Зажечь нужные, цифра (0) PORTB &=0b10000001; //fedcba , или (3) PORTB &=0b01100001;
Т.е. мы изменяем только PB7 - PB1, а PB0 не изменяем.
Последний раз редактировалось andries5; 10.05.2010 в 20:19.
|
|
|
Сказали "Спасибо" andries5
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
АЦП в mega8
|
FlashAck |
Микроконтроллеры, АЦП, память и т.д |
29 |
29.01.2010 17:50 |
Часовой пояс GMT +4, время: 19:34.
|
|