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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,831
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,921
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATTiny13 управление портами в CodeVisionAVR

Сообщение от orionSSV Посмотреть сообщение
единица на выходе PORTB.0 держится только пока вход PINB.3 тоже равен 1
Все как заказано. Функция control() ведь ставит выход в состояние входа, причем в бесконечном цикле.
А Вы что ожидали получить?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 22.04.2014, 13:39  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,831
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,921
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,921
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,921
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
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, время: 11:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot