pulseIn в attiny13 синтаксис

holl
Offline
Зарегистрирован: 01.02.2019

Всем доброго дня.

Сильно не пинаться, плиз. 

Задача: В зависимости от длительности импульса нужно включать светодиод.

Что я делаю не так?

[code]
int pin = 1;
unsigned long duration;

volatile bool comp = 0;
//const wait = 180;
void setup() {
              pinMode(pin, INPUT);
              pinMode(3, OUTPUT);
              pinMode(4, OUTPUT);
             

}

void loop() {
            duration = pulseIn(1, HIGH);
             if ()
                       {
                        digitalWrite(4, HIGH);
                        }
              else{
                  digitalWrite(4, LOW);
                   }
             }
             
[/code]

 

holl
Offline
Зарегистрирован: 01.02.2019

условие пропустил, но ругается на функцию pulseIn

exit status 1
too few arguments to function 'long unsigned int pulseIn(unsigned char, unsigned char, long unsigned int)'
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
duration = pulseIn(pin, HIGH);

 

holl
Offline
Зарегистрирован: 01.02.2019

так а что здесь не так?

holl
Offline
Зарегистрирован: 01.02.2019

просил вежливо, не ругаться, а тем более не шиздеть

holl
Offline
Зарегистрирован: 01.02.2019

давно перевел. Ты бы сказал чего там не хватае

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

условие пропустил, но ругается на функцию pulseIn

у меня не ругается, если условие исправить

holl
Offline
Зарегистрирован: 01.02.2019

в синтаксисе так же как и у меня

holl
Offline
Зарегистрирован: 01.02.2019
int pin = 7;
unsigned long duration;
 
void setup()
{
  pinMode(pin, INPUT);
}
 
void loop()
{
  duration = pulseIn(pin, HIGH);
}
 
holl
Offline
Зарегистрирован: 01.02.2019

вот чужой скетч. Такой же синтаксис

b707
Offline
Зарегистрирован: 26.05.2017

holl - единственная идея, что pulseIn() для тиньки13 имеет другой синтаксис. У меня сейчас на компе не стоит пакет для тиньки, проверить не могу. Попробуй скомпилировать этот код для платы Уно - получится?

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

прототип функции pulseIn  для Тиньки

'long unsigned int pulseIn(unsigned char, unsigned char, long unsigned int)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

может, так как пишет, что нужно четыре параметра, у меня тут только для 2313 можно проверить, но с ней всё ок

holl
Offline
Зарегистрирован: 01.02.2019

у меня ругается когда  стоит плата attyni13, а когда uno или что нибудь другое, то не ругается.

Но мне нужно именно для тиньки

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

пишет, что нужно четыре параметра

три.

holl
Offline
Зарегистрирован: 01.02.2019

спасибо, 3 параметра хватило. Я пробовал 3 параметра ставить, но первые разы не то ставил. Еще раз спасибо

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ua6em пишет:

пишет, что нужно четыре параметра

три.

сам вижу, что три, а в голове вертится четыре, + 27 с утра однако, а извращенцы, это кто изменил функцию

holl
Offline
Зарегистрирован: 01.02.2019

почему то посты исчезают

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

функцию не меняли, изначально их и было две, одна принимала два параметра, вторая - три.  В Тиньке первую убрали, оставили только вторую (пошто так - нинаю).  

У мня тоже +27 внаулице и 38.6 унутре. :(  Их бин бальной. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

holl пишет:

почему то посты исчезают

неинформативные посты я удаляю. 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

неинформативные посты я удаляю. 

один зря удалил - где ТС написал, что за третий параметр (таймаут)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

да. прошу прощения. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

да. прошу прощения. 

а 38 то чего, вирусы одолели?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

в выходные 15 было, видимо простыл, када под смородиной ночью валялся. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016


pulseIn(pin, value)
pulseIn(pin, value, timeout)

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

а срачик про светофор тоже ты, Дед, зарубил??? Я проснулся, хотел оттянуться, а срача уже нет.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да, я.  Ну я чесно его вчера предупредил, что удалю.  Если нужно, надо пропросить bwn, он восстановит.  Только, зачем?  Чую там хитрожопую задницу и не очень порядочные отношения с предыдущим исполнителем.  IMHO.

holl
Offline
Зарегистрирован: 01.02.2019

как совладать с возвращаемым значение pulseIn, допустим оно равно 16000, они же реальные 16000мкс и зависят ли они от установки тактовой частоты?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

holl пишет:

как совладать с возвращаемым значение pulseIn, допустим оно равно 16000, они же реальные 16000мкс и зависят ли они от установки тактовой частоты?

от  частоты зависит точность. Для 9600 - +/- 27мкс, для 4800 - 53

holl
Offline
Зарегистрирован: 01.02.2019

wdrakula пишет:

holl пишет:

как совладать с возвращаемым значение pulseIn, допустим оно равно 16000, они же реальные 16000мкс и зависят ли они от установки тактовой частоты?

от  частоты зависит точность. Для 9600 - +/- 27мкс, для 4800 - 53

подскажи пожалуйста от куда эта инфа? время такта 1/f, а вот от куда +/-?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

А тебе трудно самому исходник посмотреть?

вот код микрос:

unsigned long micros(){
	unsigned long x;
	asm("cli");
	#if F_CPU < 150000 && F_CPU > 80000
	x = ovrf * 2000;
	#elif F_CPU == 600000
	x = ovrf * 427;
	#elif F_CPU == 1000000
	x = ovrf * 256;
	#elif F_CPU == 1200000
	x = ovrf * 213;
	#elif F_CPU == 4000000
	x = ovrf * 64;
	#elif F_CPU == 4800000
	x = ovrf * 53;
	#elif F_CPU == 8000000
	x = ovrf * 32;
	#elif F_CPU == 9600000
	x = ovrf * 27;
	#elif F_CPU == 10000000
	x = ovrf * 26;
	#elif F_CPU == 12000000
	x = ovrf * 21;
	#elif F_CPU == 16000000
	x = ovrf * 16;
	#else 
	#error This CPU frequency is not defined
	#endif
	asm("sei");
	return x; 
}

а вот pulseIn

//Untested code lurks ahead! If it does or does not work, please notify me!
unsigned long pulseIn(unsigned char pin, unsigned char stat, unsigned long timeout = 0xFFFFFFFF){
	unsigned long st,to;
	to = micros();
	while(digitalRead(pin) == stat){if((micros() - to) > timeout){return 0;}}
	while(digitalRead(pin) != stat){if((micros() - to) > timeout){return 0;}}
	st = micros();
	while(digitalRead(pin) == stat){if((micros() - to) > timeout){return 0;}}
	return micros()-st;
}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

holl пишет:

подскажи пожалуйста от куда эта инфа?

И еще, важно для новичка:

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

Еще раз проявишь сомнения - отправишься в задницу - ждать другого "советчика".

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

А тебе трудно самому исходник посмотреть?

Посмотреть-то нетрудно :)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

wdrakula пишет:

А тебе трудно самому исходник посмотреть?

Посмотреть-то нетрудно :)

Действительно! Что это я?! Даже неловко... ;)))

---------

Надо признать, что есть еще микрокор ядро. Там pulseIn аккуратнее написан и точность 16 тактов CPU.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

Действительно! Что это я?! 

Бывает :)

Сегодня andriano сделал мой день. Как вспомню #33, так не могу не улыбаться.

holl
Offline
Зарегистрирован: 01.02.2019

с чего ты взял что это сомнения? Зачем сразу так реагировать?

Я много чего не знаю, поэтому  и спрашиваю. Про исходник я вообще не знаю

А задницу лучше прибереги)) Без обид!!!