#1 Re: Апаратні питання » Як замінити реле на полеві транзистори? » 2023-01-13 18:29:50

Ось тут росписана теорія по вашим питанням. https://power-electronics.info/full-bridge.html#1

#2 Re: Проекты » Робимо розумною систему резервного живлення » 2023-01-10 23:35:16

Не зрозумів цілі даного проекту. Автоматично вимкнути комп'ютер? Це можна зробити руками якщо людина за компом, достатньо вольтремра. Як на мене треба додати зарядний пристрій та функцію автоматичного вмиканя компа при появі світла.

#3 Re: Апаратні питання » Помехи от преобразователя напряжения на MT3608 » 2022-12-08 11:23:44

Спробуйте підпаяти на вихід кемічний конденсатор 0.1 мкф та електроліт на 470-1000 мкф, можна також индуктивність додати.

#4 Re: Різне » Шукаю вчителя » 2022-12-02 10:32:57

Kagitfb пише:

Я вже писав раніше. Для того щоб знати з чого починати треба хоч щось знати. У мене немає ніяких знань і я не можу вчитись послідовно бо не знаю що за чим потрібно вчити. Щодо матеріалів в неті - справді багато. Але все розрізнені дані без будьякої послідовності. Це може вам здаватись диким чому я не знайшов через те що ви в темі. А для того кому це новинка - дуже важко зорзуміти порядок навчання.

Можливо вам треба спочатку навчитися правильно формувати запитання? Відкриваємо гугл вбиваємо фразу "уроки ардуино для начинающих", пропускаємо рекламу и перші ж посилання йдуть на уроки з послідовним вивченням платформи ардуіно. Там є абсолютно все для самостійного вивчення.

#5 Re: Різне » Шукаю вчителя » 2022-11-30 09:58:31

Kagitfb пише:

Приклад - нещодавно намагався розбрати як зробити щоб ргб діод при кожному натисканні кнопки змінював колір на інший. Витративши 2 години часу я нічого не знайшов. Проте, мав би вчителя, то отримав би відповідь за 10 хвилин або менше.
Тому не погоджусь з вами - вчитель це ефективніше ніж колупати самому те в чому зовсім не розбираєшся.

Для того щоб отримати відповідь при самостійному пошуку - в перш чергу потрібно знати як вірно задати питання. А я того не знаю.

Ви намагаєтесь перестибнути через декілька тем, без їх вивчення нічого не вийде. Якщо вам потрібно зробити якусь одну конкретну річ - тоді, так, можна в когось спитати, якщо ви хочете розібратися в ардуіно - тоді тільки послідовно все вивчати не перестибуючи вперед. Всі навчальні посібники в гарній якості є у вільному доступі в інеті.
Я так розумію ви не хочете послідовно все вивчати, ви хочете щоб вам розтолкували якесь одне питання, що вас бентежить в даний час, ви знайдете людину і вона вам все розтлумачить, але крок вліво або вправо і ви знов опинитесь біля розбитого корита, так як теорії у вас не буде, буде тільки практика по окремому питанню. Житя буде вас постійно повертати на самий початок - на сві ті теми, що не вивчили.
Вирішувати вам: або вчити все довго, нудно, послідовно і бути гарним спеціалістом, або нахапатися якихось прикладів і нічого толком не знати.

#6 Re: Різне » Шукаю вчителя » 2022-11-29 17:35:42

Ні, не ефективніше: якщо розберетися самостійно - ви повністю вивчете тему питання, якщо спитаєте - отримаєте відповідь на своє питання, а слідом буде наступне питання і так далі поки повністью не зактиєте тему.

#8 Апаратні питання » RTC с будильником посоветуйте » 2020-09-10 17:11:16

alex_dol
відповідей: 1

Что-то типа DS1307 посоветуйте, но с будильником и выводом прерывания, чтоб ардуинку будить по расписанию.

#9 Re: Проекты » Автоматическое зарядное устройство, десульфатация + восстановление » 2019-10-10 14:16:37

Aleksey пише:

Уважаемый alex_dol! Ответьте на "нубовский" вопрос пожалуйста! Не смог осилить вашу фразу "установка подстроечного резистора на коэффициент деления 1:4." То есть, к примеру если сопротивление между + и землей 40 то между землей и А0 10, а между А0 и + 30 или наоборот, или как? Если можно ответьте на электронную почту. Собрал Вашу схему, ползунок резистора установил на авось.

Да. так.

#10 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-10 23:12:38

IVSEL в MCUCR устанавливается в начале майна.
Boot Lock bit BLB02 и остальные блокировки не стоят.
avr-objcopy -j .text -j .data ... , компилировал что с опциями -j, что без них - виснет одинаково.
Светодиод прерывание не зажигает, то есть типа заходит в прерывание, но куда оно заходит х.з.
Виснет собственно намертво, так что даже вачдог не спасает, причем, ручной ресет кнопкой помогает.

#11 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-10 13:24:25

Не забыл, таблица векторов прерываний перенесена в область бута, исходник:

...
  uint8_t m = MCUCR;
  MCUCR = m | (1 << IVCE);  //Enable change of Interrupt Vectors 
  MCUCR = m | (1 << IVSEL); //Move interrupts to Boot Flash section
...
ISR(USART_RX_vect) {
  RxBuff[RxCount++] = UDR0;
}

Дисасемблер:

ATmegaBOOT_168_atmega328_pro_8MHz.elf:     file format elf32-avr

Disassembly of section .text:

00007000 <__vectors>:
    7000:	0c 94 34 38 	jmp	0x7068	; 0x7068 <__ctors_end>
    7004:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7008:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    700c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7010:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7014:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7018:	0c 94 48 38 	jmp	0x7090	; 0x7090 <__vector_6>
    701c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7020:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7024:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7028:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    702c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7030:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7034:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7038:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    703c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7040:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7044:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7048:	0c 94 52 38 	jmp	0x70a4	; 0x70a4 <__vector_18>
    704c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7050:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7054:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7058:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    705c:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7060:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>
    7064:	0c 94 46 38 	jmp	0x708c	; 0x708c <__bad_interrupt>

00007068 <__ctors_end>:
    7068:	11 24       	eor	r1, r1
    706a:	1f be       	out	0x3f, r1	; 63
    706c:	cf ef       	ldi	r28, 0xFF	; 255
    706e:	d8 e0       	ldi	r29, 0x08	; 8
    7070:	de bf       	out	0x3e, r29	; 62
    7072:	cd bf       	out	0x3d, r28	; 61

00007074 <__do_clear_bss>:
    7074:	23 e0       	ldi	r18, 0x03	; 3
    7076:	a0 e0       	ldi	r26, 0x00	; 0
    7078:	b1 e0       	ldi	r27, 0x01	; 1
    707a:	01 c0       	rjmp	.+2      	; 0x707e <.do_clear_bss_start>

0000707c <.do_clear_bss_loop>:
    707c:	1d 92       	st	X+, r1

0000707e <.do_clear_bss_start>:
    707e:	a8 31       	cpi	r26, 0x18	; 24
    7080:	b2 07       	cpc	r27, r18
    7082:	e1 f7       	brne	.-8      	; 0x707c <.do_clear_bss_loop>
    7084:	0e 94 80 39 	call	0x7300	; 0x7300 <main>
    7088:	0c 94 19 3c 	jmp	0x7832	; 0x7832 <_exit>

0000708c <__bad_interrupt>:
    708c:	0c 94 00 38 	jmp	0x7000	; 0x7000 <__vectors>

00007090 <__vector_6>:

//прерывание по срабатыванию вачдога----------------------------------
ISR(WDT_vect) {
    7090:	1f 92       	push	r1
    7092:	0f 92       	push	r0
    7094:	0f b6       	in	r0, 0x3f	; 63
    7096:	0f 92       	push	r0
    7098:	11 24       	eor	r1, r1
  //здесь делать пока ничего не надо
}
    709a:	0f 90       	pop	r0
    709c:	0f be       	out	0x3f, r0	; 63
    709e:	0f 90       	pop	r0
    70a0:	1f 90       	pop	r1
    70a2:	18 95       	reti

000070a4 <__vector_18>:

//Прерывание по приему байта последовательным портом------------------
ISR(USART_RX_vect) {
    70a4:	1f 92       	push	r1
    70a6:	0f 92       	push	r0
    70a8:	0f b6       	in	r0, 0x3f	; 63
    70aa:	0f 92       	push	r0
    70ac:	11 24       	eor	r1, r1
    70ae:	2f 93       	push	r18
    70b0:	3f 93       	push	r19
    70b2:	8f 93       	push	r24
    70b4:	9f 93       	push	r25
    70b6:	ef 93       	push	r30
    70b8:	ff 93       	push	r31
  //RxBuff[RxCount++] = UDR0;
    70ba:	80 91 64 01 	lds	r24, 0x0164	; 0x800164 <RxCount>
    70be:	90 91 65 01 	lds	r25, 0x0165	; 0x800165 <RxCount+0x1>
    70c2:	9c 01       	movw	r18, r24
    70c4:	2f 5f       	subi	r18, 0xFF	; 255
    70c6:	3f 4f       	sbci	r19, 0xFF	; 255
    70c8:	30 93 65 01 	sts	0x0165, r19	; 0x800165 <RxCount+0x1>
    70cc:	20 93 64 01 	sts	0x0164, r18	; 0x800164 <RxCount>
    70d0:	20 91 c6 00 	lds	r18, 0x00C6	; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7e00c6>
    70d4:	fc 01       	movw	r30, r24
    70d6:	ea 59       	subi	r30, 0x9A	; 154
    70d8:	fe 4f       	sbci	r31, 0xFE	; 254
    70da:	20 83       	st	Z, r18
}
    70dc:	ff 91       	pop	r31
    70de:	ef 91       	pop	r30
    70e0:	9f 91       	pop	r25
    70e2:	8f 91       	pop	r24
    70e4:	3f 91       	pop	r19
    70e6:	2f 91       	pop	r18
    70e8:	0f 90       	pop	r0
    70ea:	0f be       	out	0x3f, r0	; 63
    70ec:	0f 90       	pop	r0
    70ee:	1f 90       	pop	r1
    70f0:	18 95       	reti

#12 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-10 09:48:16

Есть программа, она компилируется и все работает со всеми прерываниями. Далее, мне необходимо ее использовать как загрузчик.

В атмеге238 загрузчик использует последние 4, 2 или 0,5 кБ флеши, выставляется  фьюзами. Я использую 4 кБ. Следовательно устанавливаю оба фьюза размера бута и так же фьюз бутресета. Этот же адрес я даю компилятору: -Wl,--section-start=.text=0x7000. Все остальные опции компилятора я не меняю.
Еще переношу таблицу прерываний в область загрузчика:
  uint8_t m = MCUCR;
  MCUCR = m | (1 << IVCE);  //Enable change of Interrupt Vectors
  MCUCR = m | (1 << IVSEL); //Move interrupts to Boot Flash section

Батник для компиляции:
avr-g++ -g -Wall -Os -mmcu=atmega328p -DF_CPU=8000000L  -DMAX_TIME_COUNT=F_CPU>>4 -DNUM_LED_FLASHES=1 -DBAUD_RATE=57600 -DDOUBLE_SPEED   -c -o ATmegaBOOT_168.o ATmegaBOOT_168.c
avr-g++ -g -Wall -Os -mmcu=atmega328p -DF_CPU=8000000L  -DMAX_TIME_COUNT=F_CPU>>4 -DNUM_LED_FLASHES=1 -DBAUD_RATE=57600 -DDOUBLE_SPEED -Wl,--section-start=.text=0x7000 -o ATmegaBOOT_168_atmega328_pro_8MHz.elf ATmegaBOOT_168.o
avr-objcopy -j .text -j .data -O ihex ATmegaBOOT_168_atmega328_pro_8MHz.elf ATmegaBOOT_168_atmega328_pro_8MHz.hex

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

Что я делаю не правильно?

Вячеслав Азаров пише:

Загрузчик использует специальную область памяти программ, а не стандартную. Это требует специфического плана компоновки.

Специальная область памяти - это последние n кБ флеши. Специфический план компоновки - это что?

LynX пише:

Посмотрите в бинарнике по каким адресам расположен код самого загрузчика, может один из них находится в не области памяти из которой разрешена запись на flash, то это и будут проблемы линковки.

Все начинается c 7000h и занимает чуть больше 2 кБ.

#13 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-09 16:15:10

Вячеслав Азаров пише:

Скорее всего вы напутали в инстукциях линкера. Для программы и загрузчика планы размещения сегментов разные.

Можно чуть подробнее или ссылку?

#14 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-06 23:07:35

Дисасемблировал 2 варианта компиляции: через ИДЕ (работает) и через avr-g++ (виснет на прерывании). Все одинаково за исключением строки:

ИДЕ:
2a4:    e8 51           subi    r30, 0x18    ; 24

avr-g++:
70d6:    ea 59           subi    r30, 0x9A    ; 154

Код прерывания скомпилированный через ИДЕ:

00000272 <__vector_18>:
 272:	1f 92       	push	r1
 274:	0f 92       	push	r0
 276:	0f b6       	in	r0, 0x3f	; 63
 278:	0f 92       	push	r0
 27a:	11 24       	eor	r1, r1
 27c:	2f 93       	push	r18
 27e:	3f 93       	push	r19
 280:	8f 93       	push	r24
 282:	9f 93       	push	r25
 284:	ef 93       	push	r30
 286:	ff 93       	push	r31
 288:	80 91 14 03 	lds	r24, 0x0314	; 0x800314 <RxCount>
 28c:	90 91 15 03 	lds	r25, 0x0315	; 0x800315 <RxCount+0x1>
 290:	9c 01       	movw	r18, r24
 292:	2f 5f       	subi	r18, 0xFF	; 255
 294:	3f 4f       	sbci	r19, 0xFF	; 255
 296:	30 93 15 03 	sts	0x0315, r19	; 0x800315 <RxCount+0x1>
 29a:	20 93 14 03 	sts	0x0314, r18	; 0x800314 <RxCount>
 29e:	20 91 c6 00 	lds	r18, 0x00C6	; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7e00c6>
 2a2:	fc 01       	movw	r30, r24
 2a4:	e8 51       	subi	r30, 0x18	; 24
 2a6:	fe 4f       	sbci	r31, 0xFE	; 254
 2a8:	20 83       	st	Z, r18
 2aa:	ff 91       	pop	r31
 2ac:	ef 91       	pop	r30
 2ae:	9f 91       	pop	r25
 2b0:	8f 91       	pop	r24
 2b2:	3f 91       	pop	r19
 2b4:	2f 91       	pop	r18
 2b6:	0f 90       	pop	r0
 2b8:	0f be       	out	0x3f, r0	; 63
 2ba:	0f 90       	pop	r0
 2bc:	1f 90       	pop	r1
 2be:	18 95       	reti

А это через avr-g++:

000070a4 <__vector_18>:
    70a4:	1f 92       	push	r1
    70a6:	0f 92       	push	r0
    70a8:	0f b6       	in	r0, 0x3f	; 63
    70aa:	0f 92       	push	r0
    70ac:	11 24       	eor	r1, r1
    70ae:	2f 93       	push	r18
    70b0:	3f 93       	push	r19
    70b2:	8f 93       	push	r24
    70b4:	9f 93       	push	r25
    70b6:	ef 93       	push	r30
    70b8:	ff 93       	push	r31
    70ba:	80 91 64 01 	lds	r24, 0x0164	; 0x800164 <RxCount>
    70be:	90 91 65 01 	lds	r25, 0x0165	; 0x800165 <RxCount+0x1>
    70c2:	9c 01       	movw	r18, r24
    70c4:	2f 5f       	subi	r18, 0xFF	; 255
    70c6:	3f 4f       	sbci	r19, 0xFF	; 255
    70c8:	30 93 65 01 	sts	0x0165, r19	; 0x800165 <RxCount+0x1>
    70cc:	20 93 64 01 	sts	0x0164, r18	; 0x800164 <RxCount>
    70d0:	20 91 c6 00 	lds	r18, 0x00C6	; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7e00c6>
    70d4:	fc 01       	movw	r30, r24
    70d6:	ea 59       	subi	r30, 0x9A	; 154
    70d8:	fe 4f       	sbci	r31, 0xFE	; 254
    70da:	20 83       	st	Z, r18
    70dc:	ff 91       	pop	r31
    70de:	ef 91       	pop	r30
    70e0:	9f 91       	pop	r25
    70e2:	8f 91       	pop	r24
    70e4:	3f 91       	pop	r19
    70e6:	2f 91       	pop	r18
    70e8:	0f 90       	pop	r0
    70ea:	0f be       	out	0x3f, r0	; 63
    70ec:	0f 90       	pop	r0
    70ee:	1f 90       	pop	r1
    70f0:	18 95       	reti

Разъясните мне бестолковому разницу.

#15 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-05 23:02:26

Makefile родной. Правда в оригинальном загрузчике не используются прерывания, может там че дописать надо. Придется опять рыть инет.

#16 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-05 22:37:52

Просто не было времени разбираться, надо было срочно скомпилировать и проверить, как говорится одной кнопкой. В общем этот этап уже пройден.
Сейчас возникла другая проблема: если компилирую свой бут через ИДЕ как обычную программу - все работает, собственного я его так и тестировал, а вот при компиляции через make + avr-gcc или avr-g++ программа зависает сразу же после приема первого байта.
Скорее всего неправильно компилируется прерывание. Не могу понять почему.
ISR(USART_RX_vect) {
  RxBuff[RxCount++] = UDR0;
}

Пробовал так, результат тот же - зависает.
extern "C" void __vector_18 /* USART Rx Complete */ (void) __attribute__ ((signal,used, externally_visible)) ; void __vector_18 /* USART Rx Complete */ (void) {
  RxBuff[RxCount++] = (*(volatile uint8_t *)(0xC6));
}

З.Ы. Размер бинарника при компиляции через ИДЕ меньше чем через avr-gcc.

#17 Re: Апаратні питання » Компиляция бутлоадера » 2018-07-05 17:08:10

Ничего крутого нет. Переписать его не сложно. А вот дальше начались приколы:
Утилита make в комплект ардуиновской ИДЕ не входит, ладно скачал, установил.
Запустил, на команду all - говорит что делать нечего. Ну, думаю, версия старая, порылся в инете - ничего новее нет. Значит будем компилировать выборочно, заработало.
Тут оказывается, что я переписал загрузчик на с++ и avr-gcc его не понимает, плюнул и переделал на с. Скомпилировалось.
В результате куча потерянного времени.

#18 Апаратні питання » Компиляция бутлоадера » 2018-07-04 16:12:07

alex_dol
відповідей: 25

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

#20 Re: Програмування Arduino » Для меня сложно, а для вас нет) » 2018-03-15 15:41:52

NEW_NOOB пише:

А как сбросить таймер millis? Нужно что бы он считал не с начала включения ардуино, а с начала включения лампы.

А зачем сбрасывать millis? Можно запомнить его текущее значение, дальше думайте сами.

#21 Re: Програмування Arduino » простой калькулятор » 2018-03-13 17:50:28

Начальной инициализации переменных нет.
Залейте другой скетч и убедитесь в работоспособности дисплея.

#22 Re: Апаратні питання » Прием кодов кнопок нажатых на мобильном телефоне » 2018-03-10 22:44:58

AT+DDET    DTMF detection control

Команда достаточно подробно расписана во многих даташитах.

#23 Re: Проекты » Удаленный термометр » 2018-02-26 12:24:39

Диапазон измеряемых температур, точность, период опроса датчиков?

#24 Re: Апаратні питання » Как отключить незапрашиваемые уведомления на Sim800? » 2018-02-12 18:13:56

Что-то подобное я для себя и написал, только я оперирую не "ОК", а циферными кодами и с отключенным эхом (ATE0V0+CMEE=0), удобнее.

#25 Re: Апаратні питання » Как отключить незапрашиваемые уведомления на Sim800? » 2018-02-12 14:19:10

Это все я могу, просто не хотелось повторять команду в случае если ответ не подходит под ожидаемый шаблон. Это надо ее в цикл пихать и т.д. Просто это загрузчик - объем ограничен, там есть еще что делать, кроме общения с модемом.

NoName, я с модулем работаю так: отослал команду, очистил входной буфер, в ответ должно прийти, например, 5 символов, ждем прихода 5 символов, пришли - обрабатываем. Причем в момент очистки входного буфера я могу обрезать часть незапрашиваемого уведомления, которое в этот момент приходит, и тогда бывает что вместо ожидаемого приходит х.з. что.

Ладно, это лирика, я уже начал парсер писать.

Підвал форуму