Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.07.2010, 00:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Помогите с avr
"Язык Си для микроконтроллеров" - proavr.narod.ru/05.htm
Не весь Си а только чуток - потрудитесь прочесть !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
26.07.2010, 00:58
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите с avr
Во первых, если у вас обычная кнопка на замыкание, то нужно или включить внутреннюю подтяжку (PORTD.0 = 1), или подтянуть кнопку через 10кОм к +Пит.
Тогда код данный avr123 нужно изменить так
Код:
|
PORTC.4 = 0;
while(1){
while(PIND.0); // ждать появления 0
PORTC.4 ^= 1; // изменить PC4
delay_ms (100); // пауза от лишних страбатываний - подобрать по задаче
while(!PIND.0); // пока 0 - ждать появления 1
delay_ms (100); // пауза от лишних страбатываний
} |
|
|
|
|
26.07.2010, 01:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Помогите с avr
Я бы оставил код
while(!PIND.0); // пока 0 - ждать появления 1
перед
while (1) {
чтобы до входа в цикл прога дождалась отпускания кнопки.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
26.07.2010, 01:16
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите с avr
Изначально она не нажата и на ноге висит "единица", а в цикле есть проверка на отпускание.
Или я чего не увидел?
|
|
|
|
26.07.2010, 01:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Помогите с avr
Вы оптимист ! про изначально ...
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
26.07.2010, 01:35
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите с avr
Да...
Достаточно туманно,
В этой теме "изначально".
|
|
|
|
26.07.2010, 13:50
|
|
Частый гость
Регистрация: 07.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
а мне надо както сделать так чтоб при кратковременной подаче на PD0 (1) (+5вольт) PC4 включался и работал
а при следуюшей подаче подаче на PD0 (1) (+5вольт) PC4 выключался
это делается гораздо проще.
if ( PIND.0 == 1 && Flag == 0 ) { PORTC.4 = 1; Flag = 1;}
if ( PIND.0 == 0 && Flag == 1 ) { Flag = 0;}
Последний раз редактировалось Sk700S; 26.07.2010 в 14:00.
|
|
|
|
26.07.2010, 14:15
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
Сообщение от Sk700S
|
это делается гораздо проще.
if ( PIND.0 == 1 && Flag == 0 ) { PORTC.4 = 1; Flag = 1;}
if ( PIND.0 == 0 && Flag == 1 ) { Flag = 0;}
|
ЧЕТО НЕ ПОЛУЧАЕТСЯ
__________________
да я такой
|
|
|
|
26.07.2010, 14:38
|
|
Частый гость
Регистрация: 07.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
Переменная Flag должна быть статической или глобальной. Чтобы получалось.
Ну и желательно *_* правильно сконфигурировать порт D
Для примера и ясности:
DDRB = 0x00; //|: Установим все порты порта В как входы DDRB = 0x00. Если же DDRB = 0xFF
//|- как выходы. Каждая отдельная «ножка» порта PB может работать либо как
//|- вход, либо как выход. Это определяется регистрами Data Direction Register
//|- ( DDR ). 1 делает «ножку» выходом, 0 – входом.
//|- Таким образом, выставив, например, DDRB = 10, мы делаем выходами
//|- «ножки» PB1, PB3, остальные – входы, т.к. 10 в двоичном коде
//|- будет: 00001010.
//| 10 или 0x0A или 0b00001010
//| 8 7 6 5 4 3 2 1 - номера бит.
//| 128 64 32 16 8 4 2 1 - вес бит.
//| 0 0 0 0 1 0 1 0 - состояние бит.
//| PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 - порты.
//| IN IN IN IN OUT IN OUT IN - IN или OUT.
PORTB = 0x00; //|: Если порт В назначен как вход DDRB = 0x00. То при PORTB = 0xFF все порты
//|- порта В устанавливаются как вход с подтяжкой =› чтобы при отключенной ножке
//|- на входе была 1. При такой конфигурации для изменения состояния порта его
//|- необходимо закорачивать на корпус схемы. При значении PORTB = 0x00
//|- подтяжка отключена =› для изменения состояния порта необходимо подать
//|- высокий уровень. Ножку порта при этом необходимо подключить на копрус через
//|- резистор. Не подключенная ножка будет находися в неопределенном состоянии.
Последний раз редактировалось Sk700S; 26.07.2010 в 14:44.
|
|
|
|
26.07.2010, 14:42
|
|
Частый гость
Регистрация: 03.03.2009
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите с avr
int flag;
или не так ???
__________________
да я такой
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:22.
|
|