Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

ATTiny13 управление портами в CodeVisionAVR

Непрочитано 21.04.2014, 16:07  
orionSSV
Временная регистрация
 
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
orionSSV на пути к лучшему
По умолчанию ATTiny13 управление портами в CodeVisionAVR

Доброго времени суток господа и товарищи.
Собственно проблема возможно проста и её решение тоже, но меня она поставила в тупик.
Вот кусок сода:
Код:
#define sensor1 PINB.3// сенсор №1 ЗАТЕНЁН
#define sensor2 PINB.4// сенсор №2 ЗАТЕНЁН 

bit blockSensor1 = 0;
bit blockSensor2 = 0;

void control(void)
{
if(sensor1)
  {
  blockSensor1 = 1;
  };
if(sensor2)
  {
  blockSensor2 = 1;
  };
PORTB.0 = blockSensor1;
PORTB.1 = blockSensor2;               
};
void main(void)
{
...
...
...
while (1)
      {
      control();
      };
По идее при blockSensor1 = 1 и/или blockSensor2 = 1 состояние пина.0 и/или пина.1 порта В тоже должны быть равны единице (например свечение светодиодов), вплоть до ресета, и в протеусе так и происходит. НО! На макетке то состояние поддерживается только пока выполняется условие if. Как будто не
Код:
if(sensor1)
  {
  blockSensor1 = 1;
  };
а
Код:
if(sensor2)
  {
  blockSensor2 = 1;
  }
else
     {
       blockSensor2 = 0;
     }
Т.е. к примеру, единица на выходе PORTB.0 держится только пока вход PINB.3 тоже равен 1
Камень tiny13...
Спасибо.
Реклама:

Последний раз редактировалось orionSSV; 21.04.2014 в 16:13.
orionSSV вне форума  
Непрочитано 22.04.2014, 13:22  
sserg_ey
Частый гость
 
Регистрация: 22.07.2007
Адрес: Харьков
Сообщений: 47
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
sserg_ey на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

#define sensor1 PINB.3 !!!
#define sensor2 PINB.4 !!!

странно - работаете с пинами 3 и 4, а подтяжки делаете 0 и 1 !?

PORTB.0 = blockSensor1; ??
PORTB.1 = blockSensor2; ??

А если вы выводите в пин PORTx.0 то соответственно сконфигурируйте пин на выход - DDRx.0 = 1;

DDRB.0=1; DDRB.1=1;
while(1)
{
PORTB.0= sensor1;
PORTB.1= sensor2;
}
както так.

Последний раз редактировалось sserg_ey; 22.04.2014 в 13:34. Причина: добавить
sserg_ey вне форума  
Непрочитано 22.04.2014, 13:29  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

может по сторожевому таймеру ресетиться ?

Цитата:
странно - работаете с пинами 3 и 4, а подтяжки делаете 0 и 1 !?

PORTB.0 = blockSensor1; ??
PORTB.1 = blockSensor2; ??
это не подтяжки это запись в порт
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Сказали "Спасибо" E_C_C
orionSSV (22.04.2014)
Непрочитано 22.04.2014, 13:31  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от orionSSV Посмотреть сообщение
единица на выходе PORTB.0 держится только пока вход PINB.3 тоже равен 1
Все как заказано. Функция control() ведь ставит выход в состояние входа, причем в бесконечном цикле.
А Вы что ожидали получить?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 22.04.2014, 13:39  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от akegor Посмотреть сообщение
Функция control() ведь ставит выход в состояние входа, причем в бесконечном цикле.
А Вы что ожидали получить?
Так у него
Код:
 blockSensor1 = 1;
если сработает хоть раз, то

нигде не будет
Код:
 blockSensor1 = 0;
, соответственно
Код:
PORTB.0 = blockSensor1;
          PORTB.1 = blockSensor2;
на выходе всегда единица, уже независимо от входа.
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Непрочитано 22.04.2014, 13:52  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от E_C_C Посмотреть сообщение
Так у него
Таки, да. Просю пардона. Недовник. Тогда только через сброс, чудес не бывает.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 22.04.2014 в 14:04.
akegor вне форума  
Непрочитано 22.04.2014, 19:58  
orionSSV
Временная регистрация
 
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
orionSSV на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Спасибо за участие в решении моей проблемы.
Голову скоро сломаю. В каком-то месте глобальные переменные blockSensorX сбрасываются в ноль. Но пока выполняется условие - они равны единице. Что может вызывать сброс этих переменных сразу по снятии единицы (+5в) с пинов PINB.3 и PINB.4 я не знаю. Фьюзы вобще не трогал - там полный дефаулт. Конструкция реально ведёт себя, как если бы я написал PORTB.0 = PINB.3 и PORTB.1 = PINB.4))). Но это не соответствует моим целям! Что ещё поглядеть, какие данные выложить? Проект встал колом из-за какой-то нелепицы)).
На всякий случай упрощённая схемка (удалил всё непричастное, оставил только суть, один фиг работает не так - как ожидаю)
Нажмите на изображение для увеличения
Название: cxema.png
Просмотров: 193
Размер:	1.9 Кб
ID:	63295
И состояние фьюзов (AVR Studio)
Нажмите на изображение для увеличения
Название: pic.jpg
Просмотров: 110
Размер:	72.0 Кб
ID:	63296
полный листинг (CodeVisionAVR 2.05.3)
Код:
#include ‹tiny13.h›
#include ‹delay.h›

// Declare your global variables here
#define sensor1 PINB.3// сенсор №1 ЗАТЕНЁН
#define sensor2 PINB.4// сенсор №2 ЗАТЕНЁН 

#define lampON  PORTB.0 = 1
#define lampOFF PORTB.0 = 0
bit blockSensor1 = 0;
bit blockSensor2 = 0;


void control(void)
{
if(sensor1)
  {
  blockSensor1 = 1;
  };
if(sensor2)
  {
  blockSensor2 = 1;
  };
PORTB.0 = blockSensor1;
PORTB.1 = blockSensor2;               
};


void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=Out Func4=In Func3=In Func2=Out Func1=Out Func0=Out 
// State5=0 State4=P State3=P State2=0 State1=0 State0=0 
PORTB=0x18;
DDRB=0x27;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

while (1)
      {
      control();
      }
}
жду помощи
orionSSV вне форума  
Непрочитано 22.04.2014, 20:13  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Не знаю, как ведет себя по умолчанию wdt, лень читать. Посмотрите сами, он у Вас включен соответствующим фьюзом. Или отключите, или периодически сбрасывайте его.
Скорее всего, собака порылась там. Вам об этом уже говорили.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
orionSSV (22.04.2014)
Непрочитано 22.04.2014, 20:20  
orionSSV
Временная регистрация
 
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
orionSSV на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от akegor Посмотреть сообщение
Не знаю, как ведет себя по умолчанию wdt, лень читать. Посмотрите сами, он у Вас включен соответствующим фьюзом. Или отключите, или периодически сбрасывайте его.
Скорее всего, собака порылась там. Вам об этом уже говорили.
Спасибо за совет. Следуя ему проблему решил - она была именно в этом сторожевом псе. Мне пока не совсем ясны тонкости работы и использования его - поэтому я его просто выключил. Схема стала работать ожидаемым образом. Ещё раз спасибо - сам бы до фьюзов дошёл не раньше чем к выходным)).
P.S. E_C_C тоже спасибо - вы первый заподозрили WD ещё до скрина с fuses))

Последний раз редактировалось orionSSV; 22.04.2014 в 20:48.
orionSSV вне форума  
Непрочитано 22.04.2014, 21:57  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от orionSSV Посмотреть сообщение
Мне пока не совсем ясны тонкости работы
Выбирается его период так, чтобы при нормальной работе контроллера успевать его сбрасывать. В этом случае только при зависании он проснется и сбросом выведет контроллер из тупика.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Attiny13 на коде из Bascom не просыпается по WDT 123ksn AVR 7 18.12.2017 23:30
Управление симистором от МК для активной нагрузки V_andre Источники питания и свет 12 15.07.2015 23:00
Управление вентилятором - нужен транзистор Example626 Электроника средств транспорта 44 10.05.2011 06:29
управление микроконтроллером баластом на FM2822 tipman Микроконтроллеры, АЦП, память и т.д 0 08.08.2008 22:22
Библиотеки для CodeVisionAVR dimonbest Proteus, KiCAD и другие ECAD 2 17.05.2007 00:00


Часовой пояс GMT +4, время: 02:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.