Интересное на AliExpress и eBay

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сейчас случайно видел очень мелкую маркировку на сменных жалах купленных на али

HAKKO 900M-T-B

LEADFREE

MADE IN YAPAN 13BL729 1366

a5021
Offline
Зарегистрирован: 07.07.2013

axill пишет:
правда в отличии от предыдущего здесь почти нулевая истрия продаж. Толи маркетинг толи мухлеж, не купишь не узнаешь

Да вроде не совсем нулевая. 29 продаж и все отзывы положительные. Несколько человек сказали, что очень быстро доставляет. Типа, до Москвы -- две недели.

Immortal пишет:
Тоже беру Pro Mini и мегу328 сдуваю феном. Такие платы-доноры можно позже оживить запаяв туда 8 или 168

Вот за что я люблю здешний форум, так как раз за простые, но весьма эффектные решения, которы самому почему-то в голову не приходили. Есть у меня пара ардуин про-мини, стоЯщих по месту и выполняющих простейшие функции. Есть так же несколько старых мег8, которые давно уже просто лежат без дела. Только прочитав про "сдуваю феном", задумался, что мегам328п с ардуин можно найти более интересное применение, а вот мегам8 как раз будет самое место на тех ардуинах. Осталось проверить, все ли подойдет и можно приступать к трансплантации.

strannik
Offline
Зарегистрирован: 30.07.2015

jeka_tm пишет:

сейчас случайно видел очень мелкую маркировку на сменных жалах купленных на али...

а чем она сделана? Лазером?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

скорее всего. немного оттенок отличается, но ямки нет. поэтому сразу и не заметил

strannik
Offline
Зарегистрирован: 30.07.2015

Интересно, могут ли китайские лазерные граверы делать надписи на металле?

Я имею в виду самые дешевые, типа такого  500mW DIY Laser Engraver USB Carving Printer Machine Box High Power Speedy

Стоит ли покупать готовый, или лучше самому сделать? Намного ли дешевле получится?

Насколько я понял, работать с ним можно только в специальных защитных очках, а каких именно - зависит от длины волны лазера?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

металл врядли. раза в 1.5-2 наверно дешевле выйдет. смотря с чем сравнивать. цены скачут

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

strannik пишет:

Интересно, могут ли китайские лазерные граверы делать надписи на металле?

Я имею в виду самые дешевые, типа такого  500mW DIY Laser Engraver USB Carving Printer Machine Box High Power Speedy

Стоит ли покупать готовый, или лучше самому сделать? Намного ли дешевле получится?

Насколько я понял, работать с ним можно только в специальных защитных очках, а каких именно - зависит от длины волны лазера?

ИМХО - игрушка из бумаги не белой трафареты делать, да на фанерке выжигать. Нормальный аппарат на CO2 лазере 40Вт с охлаждением от $600

http://ru.aliexpress.com/item/Free-Shipping-By-DHL-1PC-XD-40-CO2-40W-Las...

bwn
Offline
Зарегистрирован: 25.08.2014

sav13 пишет:

Нормальный аппарат на CO2 лазере 40Вт с охлаждением от $600

http://ru.aliexpress.com/item/Free-Shipping-By-DHL-1PC-XD-40-CO2-40W-Las...

Кстати, как частному лицу, такую штуку получиться через кордон протащить? Или как то мощность регламентируется?

nevkon
Offline
Зарегистрирован: 20.01.2015
sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013
nevkon
Offline
Зарегистрирован: 20.01.2015

Так я с доставкой и смотрел. Уже давно не покупаюсь на цену товара - всегда захожу и смотрю на строку итого.

axill
Offline
Зарегистрирован: 05.09.2011

Что то мне думается такие мощные лазеры никто не пропустит для простого обывателя

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

Парни, очень прошу не считать рекламой - не имею я отношения к этой компании, но я тут как-то писал уже про совершенно смешную цену на гнёзда С8 на блок в России. Тогда я заказал 20 штук и, честно говоря, ожидал звонка от менеджера, типа мол недоразумение. Нет, ни фига, вчера получил - всё нормально. Если ещё и без доставки (там несколько пунктов самовывоза в разных городах), то просто даром. В Москве, например, пункт самовывоза в двух шагах от метро - очень удобно, я вчера забрал без проблем.

vde69
Offline
Зарегистрирован: 10.01.2016

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

Парни, очень прошу не считать рекламой - не имею я отношения к этой компании, но я тут как-то писал уже про совершенно смешную цену на гнёзда С8 на блок в России. Тогда я заказал 20 штук и, честно говоря, ожидал звонка от менеджера, типа мол недоразумение. Нет, ни фига, вчера получил - всё нормально. Если ещё и без доставки (там несколько пунктов самовывоза в разных городах), то просто даром. В Москве, например, пункт самовывоза в двух шагах от метро - очень удобно, я вчера забрал без проблем.

прикольно

R_Touch screen 9.0", 5 wires, thickness_1.4mm, tail_155mm, F(212.9X134.7), A(197.4X118.7) - 1534руб

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

vde69 пишет:

прикольно

R_Touch screen 9.0", 5 wires, thickness_1.4mm, tail_155mm, F(212.9X134.7), A(197.4X118.7) - 1534руб

Это я не знаю, я про разъём писал :)))

А "R_Touch screen 9.0" тоже у них нашли что-ли? И, простите мою неосведомлённость, 1534 руб. это дороо или дёшево?

strannik
Offline
Зарегистрирован: 30.07.2015

jeka_tm пишет:
strannik пишет:
Интересно, могут ли китайские лазерные граверы делать надписи на металле?

Я имею в виду самые дешевые, типа такого  500mW DIY Laser Engraver USB Carving Printer Machine Box High Power Speedy

Стоит ли покупать готовый, или лучше самому сделать? Намного ли дешевле получится?

металл врядли. раза в 1.5-2 наверно дешевле выйдет. смотря с чем сравнивать. цены скачут

а если взять "механику" и моторчики от старых CD/DVD приводов? Рассмотрел внимательно фото, и пришел к выводу, что "железо" очень похоже! Разве нет?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так и есть. сам лазер дешевле 2300 не нашел вчера

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Мож кому надо.....

New 5V 8 Channel Relay Module Board for Arduino PIC AVR MCU DSP ARM Electronic  
5 уе   цена до 18 апреля.....

  http://www.buyincoins.com/?r=bicProduct/index&pid=11203&gid=676#.VwzdAnq...

bankir_1986
Offline
Зарегистрирован: 23.03.2015
vde69
Offline
Зарегистрирован: 10.01.2016

trembo пишет:

Мож кому надо.....

New 5V 8 Channel Relay Module Board for Arduino PIC AVR MCU DSP ARM Electronic  
5 уе   цена до 18 апреля.....

  http://www.buyincoins.com/?r=bicProduct/index&pid=11203&gid=676#.VwzdAnq...

очень дорого....

вот сильно дешевле http://www.ebay.com/itm/182045093944

a5021
Offline
Зарегистрирован: 07.07.2013

bankir_1986 пишет:
Как смотрите на такой набор?

Лично я, как-то не впечатлен. В конструкции, где нагреватель встроен в жало, конечно есть свои преиущества, но одно такое жало стоит столько, сколько набор из 10 штук разных для Hakko-936.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

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

Парни, очень прошу не считать рекламой - не имею я отношения к этой компании, но я тут как-то писал уже про совершенно смешную цену на гнёзда С8 на блок в России. Тогда я заказал 20 штук и, честно говоря, ожидал звонка от менеджера, типа мол недоразумение. Нет, ни фига, вчера получил - всё нормально. Если ещё и без доставки (там несколько пунктов самовывоза в разных городах), то просто даром. В Москве, например, пункт самовывоза в двух шагах от метро - очень удобно, я вчера забрал без проблем.

Кстати, у меня ящик DB9 папа, DB9 мама и корпуса у ним серые и цветные без дела валяются. Может быть, кому-то оно нужно? :)

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Оно неплохо, но жало с негревателем замурованным - хранить неудобно, менять и стоит ощутимо дороже простенького этого, как его - ну, на который наконечники кругом вёдрами продают. У меня Лаки-720 уже несколько лет, бывало сутками работает и нормально. Хотя, и такие станции сейчас стоят дорого. Можно отдельно купить регулятор из этого набора и отдельно паяльник, если на станцию денег не хватает. Но фен всё равно понадобится. Недавно видел распродажу, где станция с феном стоила 1500р + тыща с кусочком доставка.

vde69
Offline
Зарегистрирован: 10.01.2016

кстати кто подскажет датчик открытия крана? должен показывать открытия любого крана в стояке.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

расходомер на трубу (счетчик) , если он считает то вода гдето открыта,самый простой вариант

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Baks пишет:

расходомер на трубу (счетчик) , если он считает то вода гдето открыта,самый простой вариант

Расходомер не предупредит, что кран в магистрали открыт и нельзя откручивать шланги рукомойника. :)|
Надо ставить давленометр (ну, манометр по-научному). :)

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Парни, кто-нибудь слав Розе находил на али? Блин, розочки и прочая дребедень, миллион припоев... - уже как только не искал... 

strannik
Offline
Зарегистрирован: 30.07.2015

faeton пишет:
... Но фен всё равно понадобится.

 я такой заказал 1Pcs Black 220V Portable Hand Held HOT AIR Desoldering Tool Station Free Shipping с бесплатной доставкой!

P.S.: Ничего дешевле не нашел, хотя наверно больше часа потратил на поиски. 

 

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

strannik пишет:

faeton пишет:
... Но фен всё равно понадобится.

 я такой заказал 1Pcs Black 220V Portable Hand Held HOT AIR Desoldering Tool Station Free Shipping с бесплатной доставкой!

P.S.: Ничего дешевле не нашел, хотя наверно больше часа потратил на поиски. 

Да ладно! Я специально не искал, но видел нормальные фены примерно за столько же... А этот плюс-минус лапоть ведь дуть будет со своими крутилочками никем не калиброванными. Впрочем, температура для фена не так уж и критична к точности - всё равно она сильно зависит от расстояния, от движения. Если есть тестер с термопарой, то можно будет и самому откалибровать.

axill
Offline
Зарегистрирован: 05.09.2011

faeton пишет:

Парни, кто-нибудь слав Розе находил на али? Блин, розочки и прочая дребедень, миллион припоев... - уже как только не искал... 

этот сплав вроде только у нас встречается. я здесь покупал http://p-plata.ru/product/splav-roze/

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

strannik пишет:

faeton пишет:
... Но фен всё равно понадобится.

 я такой заказал 1Pcs Black 220V Portable Hand Held HOT AIR Desoldering Tool Station Free Shipping с бесплатной доставкой!

P.S.: Ничего дешевле не нашел, хотя наверно больше часа потратил на поиски. 

Вот даже не искал - в рекомендациях сама появилась: хороший набор, хотя, в коментариях иногда встречаются отзывы, что ничего описанного, кроме самой станции, нет.

http://ru.aliexpress.com/item/Best-Selling-220V-8586-2in1-Rework-Station-Hot-Air-Gun-Solder-Iron-better-than-ATTEN/2024661747.html

Если поискать, то и схорошими отзывами и даже дешевле найти - я думаю.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

axill пишет:

faeton пишет:

Парни, кто-нибудь слав Розе находил на али? Блин, розочки и прочая дребедень, миллион припоев... - уже как только не искал... 

этот сплав вроде только у нас встречается. я здесь покупал http://p-plata.ru/product/splav-roze/

Возможно, это же наш чел его придумал. У них сплав Вуда, который что-то нехорошее содержит - уже не помню состав, но ещё лучше плавится, если не ошибаюсь,, при 65гр.

strannik
Offline
Зарегистрирован: 30.07.2015

faeton пишет:
Вот даже не искал - в рекомендациях сама появилась: хороший набор, хотя, в коментариях иногда встречаются отзывы, что ничего описанного, кроме самой станции, нет.

http://ru.aliexpress.com/item/Best-Selling-220V-8586-2in1-Rework-Station-Hot-Air-Gun-Solder-Iron-better-than-ATTEN/2024661747.html

Посмотрел на цену -  подумал "халява" - паяльная станция  всего за $34, но...

посмотрел ниже - доставка службой EMS  $86,61!  Вместе $120,61!!!

faeton пишет:
Если поискать, то и схорошими отзывами и даже дешевле найти - я думаю.

Перед тем как искать товар, я почти всегда ставлю галочку "Free Shipping"! Это заметно упрощает поиск!

Joiner
Offline
Зарегистрирован: 04.09.2014

vde69 пишет:

кстати кто подскажет датчик открытия крана? должен показывать открытия любого крана в стояке.

Сделать сужение на трубе, что-то вроде сопла. Манометр до сужения, манометр-после. При отсутствии расхода давление на манометрах равно, при расходе - различно.

nevkon
Offline
Зарегистрирован: 20.01.2015

faeton пишет:

Baks пишет:

расходомер на трубу (счетчик) , если он считает то вода гдето открыта,самый простой вариант

Расходомер не предупредит, что кран в магистрали открыт и нельзя откручивать шланги рукомойника. :)|
Надо ставить давленометр (ну, манометр по-научному). :)

В случае с манометром тоже может получится ситуация что все краны вроде как закрыты, а давление высокое. Это происходит из-за герметичности соединений.

Strannik, free shipping не всегда дает самый дешевый результат. Я к тому же сейчас вообще стараюсь не брать с бесплатной доставкой - без отслеживания почта или таможня ворует.

vde69
Offline
Зарегистрирован: 10.01.2016

Joiner пишет:

vde69 пишет:

кстати кто подскажет датчик открытия крана? должен показывать открытия любого крана в стояке.

Сделать сужение на трубе, что-то вроде сопла. Манометр до сужения, манометр-после. При отсутствии расхода давление на манометрах равно, при расходе - различно.

нашел такие http://www.ebay.com/itm/Generic-Magnetic-Stainless-Steel-Flow-Switch-Water-Sensor-C-Type-/350993888095?hash=item51b8ddb35f:g:D88AAOxygPtS9QWt только что-то дорого и стремно :)

vde69
Offline
Зарегистрирован: 10.01.2016

или вот http://www.ebay.com/itm/Water-Flow-Sensor-Switch-Hall-Effect-Flowmeter-Counter-Water-Control-1-30L-min-/331316531184?hash=item4d24010ff0:g:~doAAOSwRLZUEW2K но корпус пластиковый сомнения вызывает, да и крыльчатка банально стоп словит из-за накипи или еще чего,

у кого есть опыт использования? сколько они ходят ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

axill пишет:

jeka_tm пишет:

пример блинка на iar можешь показать для stm8?

заказал на всякий случай еще 103 плату

могу на моей библиотеке показать) это будет очень просто.

ну так что там с примером?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

vde69 пишет:

или вот http://www.ebay.com/itm/Water-Flow-Sensor-Switch-Hall-Effect-Flowmeter-Counter-Water-Control-1-30L-min-/331316531184?hash=item4d24010ff0:g:~doAAOSwRLZUEW2K но корпус пластиковый сомнения вызывает, да и крыльчатка банально стоп словит из-за накипи или еще чего,

у кого есть опыт использования? сколько они ходят ?

накипи там быть не может а клинить может только из за мусора, ставьте фильтр как рекомендованно перед любым счетчиком, также можно купить обычный советский квартирный счетчик уже с сигнальными проводами, (на рынке продают) но что и как от туда снимать я не знаю. в новостройках видел ставят сейчас такие

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

jeka_tm пишет:

ну так что там с примером?

для полноты картины надо показать с десяток файлов библиотеки, это можно наглядно сделать если опубликовать на каком нить github, пока руки не дошли

могу просто показать пример последней программы датчика работающего на rs485

там есть и работа с таймером, с портами, с АЦП, с UART и тд

//----------------------------------------------------------------------------------
// настройки
//#pragma bitfields=reversed

#define F_MASTER            16000000UL
#define I2C_BITRATE         100000UL

#define TIMERS_BMP085_SEC   60
#define TIMERS_DHT_SEC		10
#define TIMERS_VALID_MIN	10

#define PHOTO_MIN			180
#define PHOTO_MAX			940

#define ADC_COUNT           64
#define ADC_CHANNEL_PHOTO   2
#define ADC_CHANNEL_NTC     3

//----------------------------------------------------------------------------------
// библиотеки
#include <string.h>

//----------------------------------------------------------------------------------
// настройка простого ввода-вывода
#define UART1
#define UART1_RX_BUFFER_SIZE	64
#define UART1_TX_BUFFER_SIZE	64

#include <stavrcomlib/stavrcomlib_gpio.h>
#include <stavrcomlib/stavrcomlib_uart.h>
#include <stavrcomlib/stavrcomlib_i2c.h>
#include <stavrcomlib/stavrcomlib_bmp085.h>
#include <stavrcomlib/stavrcomlib_dht.h>
// smartlets
#include <smartlets/smartlets_in_uart.h>
// общая структура данных для передачи
#include <axill/sensor_meteo_rs485.h>
// nts data
#include "ntc_mf52at_10k.h"

//----------------------------------------------------------------------------------
// определение пинов ввода/вывода
STAVR_define_gpio_functions(rs485_rw, C, 6)      // режим передачи rs485
STAVR_define_gpio_functions(bmp085_eoc, D, 3)    // bmp085 EOC
STAVR_define_gpio_functions(dht, C, 5) 		   	 // DHT22
STAVR_define_dht_sensor(dht, dht_get, dht_set, dht_clr, dht_setoutput, dht_setinput)

//----------------------------------------------------------------------------------
// определение функций
void mcu_init();

//void order_copy(uint8_t *dst, uint8_t* src), uint8_t size {
//	while(size) dst[--size] = *(src++);
//}
void reverse_order_2(void* var) {
	uint8_t v = ((uint8_t*)var)[1];
	((uint8_t*)var)[1] = ((uint8_t*)var)[0];
	((uint8_t*)var)[0] = v;
}
void reverse_order_4(void* var) {
	uint8_t v = ((uint8_t*)var)[3];
	((uint8_t*)var)[3] = ((uint8_t*)var)[0];
	((uint8_t*)var)[0] = v;
	v = ((uint8_t*)var)[1];
	((uint8_t*)var)[1] = ((uint8_t*)var)[2];
	((uint8_t*)var)[2] = v;
}
void reverse_order(void* var, uint8_t s) {
	if(s == 2) reverse_order_2(var);
	if(s == 4) reverse_order_4(var);
}

//----------------------------------------------------------------------------------
// определение переменных
typedef enum { bmp085_none, bmp085_wait_temperature, bmp085_wait_pressure } bmp085_enum;

struct {
    struct {
      bmp085_enum    status;
    } bmp085;
    struct {
		volatile	uint16_t	data;
		volatile	uint8_t		ready;
    } ntc;
    struct {
		volatile	uint16_t	data;
		volatile	uint8_t		ready;
    } photo;
	sensor_meteo_data	data;
	struct {
        volatile uint16_t    sum;
        volatile uint8_t     count;
    } adc;
    struct {
        volatile uint8_t    presecond;
		volatile uint8_t	second;
        volatile uint8_t    bmp085;
		volatile uint8_t	dht;
		volatile uint8_t	rx_timeout_secdiv10;
		volatile uint8_t	valid_bmp_min;
		volatile uint8_t	valid_dht_min;
		volatile uint8_t	valid_ntc_min;
		volatile uint8_t	valid_photo_min;
    } timers;
} var;

int main( void )
{
	// GPIO & timers
	mcu_init();
	// uart1
	uart1_init(UART_BAUD_RATE_DIV(F_MASTER, RS485_BAUDRATE));
	// i2c
	i2c_init(I2C_BITRATE_DIV(F_MASTER, I2C_BITRATE));
	// bmp085
	bmp085_Init();
	var.bmp085.status = bmp085_none;
	// read on the bus
	rs485_rw_clr();

	ADC_CSR_CH    = ADC_CHANNEL_PHOTO;  // канал
	ADC_CR1_ADON  = 1;				  // запуск измерений

	var.timers.valid_bmp_min = TIMERS_VALID_MIN;
	var.timers.valid_dht_min = TIMERS_VALID_MIN;
	var.timers.valid_ntc_min = TIMERS_VALID_MIN;
	var.timers.valid_photo_min = TIMERS_VALID_MIN;

	uint16_t  					bmp085_temperature_data;
	smartlets_in_uart_message	message;
	uint8_t						message_ptr = 0;

	__enable_interrupt();

	while(1) {

		uint8_t need_to_reply = 0;

		//------------------------------------------------------------------------------------------------------------------
		// вычисления для BMP085
		if(!var.timers.bmp085) {
			if(var.bmp085.status == bmp085_none) {
				// measure temperature and pressure on bmp085
				bmp085_requestTemperatureData();
				var.bmp085.status = bmp085_wait_temperature;
			} else if(bmp085_eoc_get()) {
				switch(var.bmp085.status) {
					case bmp085_wait_temperature:
					  // get temperature data & request pressure measurement
					  bmp085_temperature_data = bmp085_readTemperatureData();
					  bmp085_requestPressureData(BMP085_OSS_ULTRAHIGHRESOLUTION);
					  var.bmp085.status = bmp085_wait_pressure;
					  break;
					case bmp085_wait_pressure:
					  // get pressure data & convert to get temperature & pressure
					  {
						  int32_t pressure_data = bmp085_readPressureData(BMP085_OSS_ULTRAHIGHRESOLUTION);
						  bmp085_convert(bmp085_temperature_data, pressure_data, BMP085_OSS_ULTRAHIGHRESOLUTION, \
							  &var.data.bmp085_temperature, &var.data.bmp085_pressure);
						  var.bmp085.status = bmp085_none;
						  var.timers.bmp085 = TIMERS_BMP085_SEC;
						  var.timers.valid_bmp_min = TIMERS_VALID_MIN;
					  }
					 break;
				}
			}
		 }
		//------------------------------------------------------------------------------------------------------------------
		// вычисления для DHT
		if(!var.timers.dht) {
			int16_t temperature, humidity;
			dht_status status;

			__disable_interrupt();
			status = dht_read(&temperature, &humidity);
			__enable_interrupt();

			if(status == dht_status_ok) {
				var.data.dht_temperature = temperature;
				var.data.dht_humidity = humidity;
				var.timers.valid_dht_min = TIMERS_VALID_MIN;
			}
			var.timers.dht = TIMERS_DHT_SEC;
		}

		//------------------------------------------------------------------------------------------------------------------
		// вычисления для NTC
		if(var.ntc.ready) {
			var.data.ntc_temperature = calc_temperature(var.ntc.data);
			var.ntc.ready = 0;
			var.timers.valid_ntc_min = TIMERS_VALID_MIN;
		}

		//------------------------------------------------------------------------------------------------------------------
		// вычисления для PHOTO
		if(var.photo.ready) {
			uint32_t data = var.photo.data;

			if(data < PHOTO_MIN) {
				data = 0;
			} else if(data > PHOTO_MAX) {
				data = 100;
			} else {
				data -= PHOTO_MIN;
				data *= 1000;
				data /= PHOTO_MAX + PHOTO_MIN;
				data /= 10;
			}

			var.data.photo_light = data;
			var.photo.ready = 0;
			var.timers.valid_photo_min = TIMERS_VALID_MIN;
		}

		//------------------------------------------------------------------------------------------------------------------
		// проверить входящие
		uint8_t n = uart1_rx_available();
		if(n) {
			uint8_t byte = uart1_get_byte();
			if(message_ptr) {
			  // next byte
				((uint8_t*)&message)[message_ptr++] = byte;
				if(message_ptr > 2 && message_ptr == (sizeof(smartlets_in_uart_header) + sizeof(smartlets_message_header) \
					+ message.sl_msg.header.data_length)) {
					// message received
					uart1_rx_clear();
					message_ptr = 0;
					reverse_order_2(&message.sl_msg.header.type);
					reverse_order_2(&message.sl_msg.header.dst_id.dev_id);
					reverse_order_2(&message.sl_msg.header.src_id.dev_id);
					if(message.sl_msg.header.type == SMARTLETS_MSGTYPE_CUSTOM_1
					   && message.sl_msg.header.src_id.appl_id == SML_APPL_SEGMENT_MASTER) {
						need_to_reply = 1;
					 }
				}
			} else if(byte == SMARTLETS_IN_UART_START_CHAR) {
				// first byte
				message.header.start = byte;
				message_ptr++;
				var.timers.rx_timeout_secdiv10 = 1 + 200;
			}
		}
		if(var.timers.rx_timeout_secdiv10 == 1) {
			uart1_rx_clear();
			message_ptr = 0;
			var.timers.rx_timeout_secdiv10 = 0;
		}

		//------------------------------------------------------------------------------------------------------------------
		// ответить если нужно
		if(need_to_reply) {
		  smartlets_in_uart_message	uart_msg;
		  sensor_meteo_data			data;

		  uart_msg.header.start = SMARTLETS_IN_UART_START_CHAR;
		  uart_msg.header.crc8 = 0;
		  uart_msg.sl_msg.header.type = SMARTLETS_MSGTYPE_CUSTOM_1;
		  uart_msg.sl_msg.header.src_id.dev_id = SMARTLETS_METEO_ID;
		  uart_msg.sl_msg.header.dst_id.dev_id = SMARTLETS_MASTER_ID;
		  uart_msg.sl_msg.header.data_length = sizeof(var.data);
		  memcpy(&data, &var.data, sizeof(var.data));

		  // fixing byte order
		  reverse_order_2(&uart_msg.sl_msg.header.type);
		  reverse_order_2(&uart_msg.sl_msg.header.src_id.dev_id);
		  reverse_order_2(&uart_msg.sl_msg.header.dst_id.dev_id);

		  reverse_order_2(&data.bmp085_temperature);
		  reverse_order_4(&data.bmp085_pressure);
		  reverse_order_2(&data.ntc_temperature);
		  reverse_order_2(&data.dht_temperature);
		  reverse_order_2(&data.dht_humidity);
		  memcpy(&uart_msg.sl_msg.data, &data, sizeof(data));

		  // write to the bus
		  rs485_rw_set();
		  delay_ms_wait(10);
		  // send data
		  uart1_put_block((void*)&uart_msg, sizeof(smartlets_in_uart_header) + sizeof(smartlets_message_header) + sizeof(var.data));
		  while(!uart1_tx_empty());

		  // switch to read from the bus
		  delay_ms_wait(5);
		  rs485_rw_clr();

		  need_to_reply = 0;
		}

		 __wait_for_interrupt();
	}
}

void mcu_init() {
  	CLK_CKDIVR = 0;

    rs485_rw_setoutput();

    // ADC
    ADC_CSR_EOCIE   = 1;                  // прерывание по завершению преобразование
    ADC_CR1_SPSEL   = 2;                  // /4 prescaler
    ADC_CR1_CONT    = 1;                  // непрерывное преобразование
    ADC_CR1_ADON    = 1;                  // power ON
    ADC_CR2_ALIGN   = 1;                  // выровныть влево

  	// timer
  	TIM2_PSCR       = 3;                  // предделитель 8(CLK / 2 ^  PSCR)
  	TIM2_CNTRH      = 0;                  // счетчик = 0
  	TIM2_CNTRL      = 0;
  	TIM2_ARRH       = 0x61;
  	TIM2_ARRL       = 0xA8;               // потолок счета 25000
  	TIM2_IER        = MASK_TIM2_IER_UIE;  // разрешение прерывания по переполнению
  	TIM2_CR1        = MASK_TIM2_CR1_URS | MASK_TIM2_CR1_CEN; // счет вверх, прерывание по переполнению, старт таймера
}

//----------------------------------------------------------------------------
// Timer2 overflow interrupt
#pragma vector = TIM2_OVR_UIF_vector
__interrupt void TIM2_OVR_UIF_handler(void)
{
	// 10 times per second
	if(var.timers.rx_timeout_secdiv10 > 1) var.timers.rx_timeout_secdiv10--;

	if(++var.timers.presecond == 10) {
        // once per second
        var.timers.presecond = 0;

        if(var.timers.bmp085) var.timers.bmp085--;
        if(var.timers.dht) var.timers.dht--;

		if(++var.timers.second == 60) {
			// once per minute
			var.timers.second = 0;

			if(var.timers.valid_bmp_min && !--var.timers.valid_bmp_min) {
				var.data.bmp085_temperature = 0;
				var.data.bmp085_pressure = 0;
			}
			if(var.timers.valid_dht_min && !--var.timers.valid_dht_min) {
				var.data.dht_temperature = 0;
				var.data.dht_humidity = 0;
			}
			if(var.timers.valid_ntc_min && !--var.timers.valid_ntc_min)
				var.data.ntc_temperature = 0;
			if(var.timers.valid_photo_min && !--var.timers.valid_photo_min)
				var.data.photo_light = 0;
		}
    }

    TIM2_SR1_UIF = 0;                 // очистка флага прерывания
}

//----------------------------------------------------------------------------
// ADC interrupt
#pragma vector = ADC1_EOC_vector
__interrupt void ADC1_EOC_handler(void)
{
    uint16_t value = ADC_DRL;
    value |= (ADC_DRH << 8);

    var.adc.sum += value;
    if(++var.adc.count == ADC_COUNT) {
      switch(ADC_CSR_CH) {
        case ADC_CHANNEL_PHOTO:
		  ADC_CSR_CH = ADC_CHANNEL_NTC;
          var.photo.data = var.adc.sum / ADC_COUNT;
		  var.photo.ready = 1;
          break;
        case ADC_CHANNEL_NTC:
		  ADC_CSR_CH = ADC_CHANNEL_PHOTO;
		  var.ntc.data = var.adc.sum;
		  var.ntc.ready = 1;
          break;
      }
      var.adc.sum     = 0;
      var.adc.count   = 0;
    }

    ADC_CSR_EOC = 0;
}

 

axill
Offline
Зарегистрирован: 05.09.2011

в эту программу если вставить блинк на пин dht то будет выглядеть так:

while(1) {
     dht_set();
    delay_ms_wait(500);
    dht_clr();
    elay_ms_wait(500);
}

 

strannik
Offline
Зарегистрирован: 30.07.2015

nevkon пишет:
 free shipping не всегда дает самый дешевый результат. Я к тому же сейчас вообще стараюсь не брать с бесплатной доставкой - без отслеживания почта или таможня ворует.

более-менее дорогие товары китайцы отправляют с полноценными трек номерами!

и ещё хочу сказать, что нужно обращать внимание, какой указан Free Shipping перевозчик -  от этого очень сильно зависит скорость доставки! 

Например, заказывал паяльник Freeshipping Soldering Irons soldering station heat soldering stand welding electric soldering iron tip A-BF GS90D 110V/220V 90W   Доставка "Singapure Post" заняла всего около двух недель!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

axill пишет:

в эту программу если вставить блинк на пин dht то будет выглядеть так:

while(1) {
     dht_set();
    delay_ms_wait(500);
    dht_clr();
    elay_ms_wait(500);
}

спасибо. можешь только блинк? интересует настройка портов, вообще я видел как это делается, просто интересно как у тебя

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

nevkon пишет:
Strannik, free shipping не всегда дает самый дешевый результат. Я к тому же сейчас вообще стараюсь не брать с бесплатной доставкой - без отслеживания почта или таможня ворует.

Free shipping конечно не всегда дает самый дешевый результат, более того он не всегда выдает даже то, что было с free shipping когда галочка не стояла. И часто поиск вообще не дает самый дешевый результат. 

nevkon пишет:
Я к тому же сейчас вообще стараюсь не брать с бесплатной доставкой - без отслеживания почта или таможня ворует.

 

Это у вас жестко. У меня обычно все приходит. Но наличие отслеживания чвасто не связано с Free shipping, больше зависит от цены товара.
axill
Offline
Зарегистрирован: 05.09.2011

а можно с таймером использовать готовый макрос:

STAVR_define_gpio_functions(led_rx, C, 6)
STAVR_BLINK(led_rx, led_rx_get(), led_rx_set(), led_rx_clr())


...

led_rx_init();

....

led_rx_run(5, 10); // моргаем 5 раз с длительностью интервала 10 таймера

.....
led_rx_update();  // это внутри таймера

 

axill
Offline
Зарегистрирован: 05.09.2011

jeka_tm пишет:

спасибо. можешь только блинк? интересует настройка портов, вообще я видел как это делается, просто интересно как у тебя

макрос объявления функций для портов ввода-вывода ниже, там есть кусок для AVR и есть для STM8S

//-----------------------------------------------------------------------------
// macro for simple definition of I/O function
#ifdef _STAVR_PLATFORM_AVR_
	#define STAVR_define_gpio_functions(name, port, pin) \
	void name ## _setoutput(void) { DDR ## port |= (1 << pin); } \
	void name ## _setinput(void) { DDR ## port &= ~(1 << pin); } \
	void name ## _set(void) { PORT ## port |= (1 << pin); } \
	void name ## _clr(void) { PORT ## port &= ~(1 << pin); } \
	uint8_t name ## _get(void) { return (PIN ## port & (1 << pin))?1:0; } \
	uint8_t name ## _getinv(void) { return (PIN ## port & (1 << pin))?0:1; } \
	const uint8_t name ## _MASK = (1 << pin);
#elif defined (_STAVR_PLATFORM_STM8S_)
	#define STAVR_define_gpio_functions(name, port, pin) \
	void name ## _setinput(void) { P ## port ## _DDR_bit.DDR ## pin = 0; } \
	void name ## _setoutput(void) { P ## port ## _DDR_bit.DDR ## pin = 1; } \
	void name ## _pullup_set() { P ## port ## _CR1 |= MASK_P ## port ## _CR1_C1 ## pin; } \
	void name ## _set(void) { P ## port ## _ODR_bit.ODR ## pin = 1; } \
	void name ## _clr(void) { P ## port ## _ODR_bit.ODR ## pin = 0; } \
	uint8_t name ## _get(void) { return P ## port ## _IDR_bit.IDR ## pin; } \
	uint8_t name ## _getinv(void) { return (name ## _get())?0:1; } \
	const uint8_t name ## _MASK = (1 << pin);
#endif

 

Immortal
Offline
Зарегистрирован: 28.12.2013

axill, а не пробовали писать на С++ для AVR? Я вот пишу на С++ и проверяю полученный машинный код в дизассемблере.

Использование классов в С++ совместно с define-макросами позволяет ускорить разработку прошивок.

Да и вообще при грамотном использовании C++ позволяет писать столь же эффективные решения что и решения на C, но при этом получать более читаемый и более безопасный за счет проверок компилятора код. А механизм шаблонов позволяет писать эффективные реализации обобщенных алгоритмов, что проблематично на C.

Ссылки:

Поддержка C++ на avr в gcc

Сделаем GCC C++ для AVR и Arduino лучше?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

мда)) спасибо. придут жезезки обращусь за помощью

axill
Offline
Зарегистрирован: 05.09.2011

Immortal пишет:

axill, а не пробовали писать на С++ для AVR? Я вот пишу на С++ и проверяю полученный машинный код в дизассемблере.

Использование классов в С++ совместно с define-макросами позволяет ускорить разработку прошивок.

Да и вообще при грамотном использовании C++ позволяет писать столь же эффективные решения что и решения на C, но при этом получать более читаемый и более безопасный за счет проверок компилятора код. А механизм шаблонов позволяет писать эффективные реализации обобщенных алгоритмов, что проблематично на C.

Ссылки:

Поддержка C++ на avr в gcc

Сделаем GCC C++ для AVR и Arduino лучше?

я сознательно не использую С++ хотя имею большой опыт его использования на компьютерах

С++ это более высокий уровень абстракции, но это не только плюс в проверках компилятора, эти плюсы стоят ресурсов управление которыми берет на себя компилятор