Jump to content

На чем писать  

560 members have voted

  1. 1. Что чаще используете в разработках?

    • Assembler
      156
    • C
      282
    • Что-то еще
      61


Recommended Posts

Фигня это все. Для написания на любом языке нужен алгоритм как вводная задания, а не готовый текст. Тут сначала надо разобраться в пляске мысли, а на это уйдет времени больше, чем на создание сего чуда. Можно сыграть в обратную сторону. Выложить текст на Ассме и предложить повторить его на Си. Причем эта процедура будет иметь еще меньше шансов на успех... А вы все спорите, что лучше? :)

Share this post


Link to post
Share on other sites

Хорошо, в программе реализовано следующее:

Используется ATtiny2313.

На входы компаратора подаётся входное напряжение и опорное напряжение.

Два вывода используются как дискретные входы для задания режимов подачей 0 или 1 с помощью перемычек.

Один вывод выход для управления светодиодом, включение нулём.

Алгоритм работы:

Если вх.напряжение превышает опорное, то ничего не делаем.

Если входное напряжение ниже опорного, то начинаем отсчитывать 1 минуту.

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

Если досчитали до 1-й минуты, то начинаем мигать светодиодом 2 раза в секунду.

Если после этого напряжение станет выше опорного, то мигать не прекращаем, а просто ведём отсчёт в обратную сторону и прекращаем мигать только после достижения нуля.

То есть направление отсчёта времени зависит от состояния компаратора, а переключения мигает/немигает осуществляется в крайних положениях.

состояния перемычек

1, 1 выдержка 1 минута

1,0 выдержка 30 секунд

0,х выдержки нет, реакция мгновенная.

Share this post


Link to post
Share on other sites

Что-то ассемлерные гуру не могут осилить данный простенький алгоритм. Си однозначно победил.:P

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

А разве кто взялся этим заниматься? У меня своих забот выше крыши (никак не могу взяться за "для души"). Могу сказать вот что. Подготовка периферии в ручную займет времени больше, чем написание алгоритма. Ну нет у меня Attiny, все больше Atmega. Заниматься только ради спора - нужно иметь время свободное.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
                     

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

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Всё это отговорки. Признайте поражение, это будет честно.

Share this post


Link to post
Share on other sites

Спор изначально глупый! Во-первых, лучший инструмент тот, которым

хорошо владеешь. Во-вторых, для разных работ нужен и разный инструмент!

Можно и сапкой вскопать 10га, но тех трактористов (с плугом), которые

на этом сильно настаивают, отправляют в дурку! Как и наоборот - прореживать

грядки плугом несколько неудобно. Ассемблерщикам могу сказать так:

- типично, ассемблерщики, например, IARа, получше Вас будут и потому

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

сделать вручную - например, сквозной на всю программу указатель на все

переменные) дает результат_С_компиляции почти не хуже, а часто и лучше!

- можно за неделю написать пару килобайт, а за пару лет, например стек

TCP/IP, но Ваша семья будет сильно голодная и потомки Вашего подвига

не поймут!

А знать Асм, конечно НУЖНО, как и железо до последнего регистра - и от

этого незнания страдают многие крутые Сишники++++! Но у них свои задачи и,

типично, за них больше платят!

Share this post


Link to post
Share on other sites

Да кто спорит-то?

Пишущие на АСМе бьют себя пяткой в грудь, что лучше ничего и придумать нельзя. Когда я предложил реализовать простенький алгоритм, мною реализованный на Си за очень короткое время, то все крутые писатели на АСМе "сдулись". У них очень много работы, да и вообще, неинтересно.

Интересно сидеть на форуме и строчить посты о крутизне программирования на АСМе.

Ну а по поводу Си-шников, я скажу так, многие из них АСМ знают (потому, что приходится отлаживать программы), но пишут всё равно на Си, потому, что удобнее и быстрее.

Share this post


Link to post
Share on other sites

Незнаю не знаю, я как-то перед новым годом быстренько написал на ассемблере программу "мигалку" на 4 канала с ШИМ и сохраненным паттерном в EEPROMe. По сложности - аналогична предложенной для переделки. Врятли возможно было бы написать аналогичную на Си, которая влезла бы в старичка AT90S1200

Share this post


Link to post
Share on other sites

Есть Си для таких "мелких" контроллеров называется ICCtiny, для TinyAVR-ок.

Всячески рекомендую. Ваша задача на нём была бы реализована в течение десяти минут.

Share this post


Link to post
Share on other sites

mazzi, да успокойся ты! :) Нечего доказывать. Никто не спорит, что на Си писАть быстрее (вот только скорость, как говорится, требуется в трех случаях... :D ). Это можно сравнить как панельное домостроение со стандартными проектами и индивидуальное строительство дизайнерского плана. Что под чем, думаю понятно. Стоит отойти от стандартных библиотек и интерфейсов и тыц в проблему. Скорость падает до минимума. Начинается лихорадочный поиск новых библиотек в Нете (запойная зависимость). А как быть с проектом, когда МК занимает 5% от всей схемы и требуется ввести(изменить) несколько узлов, добавить(убрать) несколько микросхем? Изменяется интерфейс управления схемой, при неизменной логике работы в целом. Как реализуются изменения в Си, когда требуется добавить в общий алгоритм несколько бит (и не всегда кратных байту) или линий интерфейса для управления этими изменениями? Быстро? Как пример, взгрустнулось мне задействовать дисплей от Nokia 1100. Библиотек нет, инфы в Нете нет. Пришлось позаниматься с низкоуровневым "подглядыванием" методом посадки на интерфейс МК с последующим отчетом. Теперь есть наработки для этого дисплея. Думаю на Си такого было сделать невозможно. Спор реально беспредметный. На вкус и цвет товарищей нет. :)

Edited by Геннадий

Share this post


Link to post
Share on other sites

Во развели холи вар ... Мужики вы что ?))) все языки для своих нужд и не надо их пытаться применить во всем, только потому что Я ИХ ЗНАЮ, есть же функциональные языки Prolog, Haskell, Irlang Никто же не предлагает с ними в микропроцессоры лезть. Есть языки для работ внутри системы, я под Linux'om, в Perl Python C C++ Java пишу, под Виндой Python Java Ruby C# Basic.

Абсолютно ясно что для электроники есть Ассемблер и ВСЕ, все остальное НЕ НУЖНОЕ упрощение жизни от нежелания работать и усложнять себе жизнь, технологии скакнут вверх вообще дельфю сделают нахрен для микросхем...

Share this post


Link to post
Share on other sites

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

А как данная проблема решается на АСМе?

...Как реализуются изменения в Си, когда требуется добавить в общий алгоритм несколько бит (и не всегда кратных байту)...

Шутите?

...Думаю на Си такого было сделать невозможно...

:lol:

Share this post


Link to post
Share on other sites

Шутите?

Нет. Если учесть, что тактовая частота интерфейса всего в 4 раза ниже тактовой МК. А требовалось изучить не только передаваемые данные, но и ряд электрических параметров сигнала (разрядность, задержки, фазы). Не верится, что неуклюжесть Си позволила бы успеть все это обработать.

Share this post


Link to post
Share on other sites

Неуклюжесть Си? А вам не приходила мысль взять контроллер побыстрее? И о какой обработке за 4 такта может идти речь?

Очень хочу глянуть на фрагмент программы успевающей совершить некую сложную обработку данных за 4-е такта.

Share this post


Link to post
Share on other sites

Маленький кусочек:

in temp,port(X)

st Z+,temp :)

Вот видишь, mazzi, ты и мыслишь по Си-шному (взять контроллер побыстрее, а нет его). Главное не обработать, а схватить. Обработка делается потом, при выводе. Предвижу вопрос "куда все схватить, если места в МК маловато?". Приходилось выкручиваться нестандартными решениями - смещать точку синхронизации записи по счетчику входных операций и делать выборку кусками. Видишь, тут приходилось слегка "извращаться" с алгоритмом (который никто не написАл, как готовую библиотеку), но цель достигнута (а это главное) малыми мощностями (Мега8).

Си - классный инструмент для "математики", Ассм - для интефейсов.Мир, дружба, братство. :)

Edited by Геннадий

Share this post


Link to post
Share on other sites

Один из моих проектов на Си состоит из 40 файлов исходных текстов общим объёмом 432 килобайта. Всё это компилируется в 54 килобайта бинарника.

В этом проекте используется масса интерфейсов и протоколов. Кроме того, ведётся база данных на внешних EEPROM. Система многоканальна и многозадачна. Одна из задач клиент для внешнего канала, другая сервер для нескольких каналов.

Всё это создавалось и развивалось в течение 2-х лет.

Я думаю, что на АСМе такое сделать за обозримое время невозможно.

Со мной работал один программист пишущий на АСМе, но после того, как его исходник перевалил за 16килобайт он просто не мог отладить свою программу, хотя парень отнюдь не глупый. После перехода на Си, он больше к АСМу по большому счёту не обращался.

На АСМе можно писать более-менее большие программы только при наличии хороших библиотек с реализацией функций арифметических, ввода-вывода, преобразования и т.д. Иначе кроме простеньких программ ничего у вас не получится.

Если глянуть на историю развития программирования в общем, то были следующие этапы(могу ошибаться в числах, привожу по памяти):

  • писали на машинном языке совсем небольшие программы
  • писали на ассемблере в один файл - до 500 строк
  • использование макроассемблера и процедур - функций 1000 строк
  • используя правила структурирования на языках ВУ до 10000 строк
  • модульное программирование (не помню)
  • используя объектно ориентированную методику - предел пока не достигнут. По крайней мере рубеж в миллион строк уже преодолён.

Выбор делайте сами. Серьёзные вещи нужно делать серьёзными средствами. Хотя, конечно, ассемблер нужно знать.

Share this post


Link to post
Share on other sites

 Сильно. Что и подтверждает - для достижения совершенства программирования МК оба языка нужны.

...А мой первый опыт встречи с Ассмом - дизассемблирование бинарника чуть выше 16кБ (до этого момента я его не понимал вообще) и переделка под свои нужды на Ассме. В результате - проект получился в 4 раза короче (по размеру кода около 4,6кБ) и в несколько раз функциональней. Чем мне Ассм и понравился. Насчет 54 кБ исходника ничего не скажу, но стараюсь более четко структурировать программы, чтобы потом не "пыхтеть" вспоминая "тему". А самые удачные решения "складываю" в "библиотечку подпрограмм" для последующих применений. 

Edited by Геннадий

Share this post


Link to post
Share on other sites

Вот и праздничные дни. Всех с наступающим Новым Годом! Вот что у меня получилось сегодня (по просьбе mazzi). Не скажу, что уложился в 30мин. (несколько нагоняев от жены за отлынивание от подготовки к празднику, визит внучки со всеми вытекающими..., поход в гараж... и в итоге результат на ваше рассмотрение :) ) , зато в 2,5 раза короче и некоторые поправки в виде динамического отклика на изменение конфигурации перемычек.


; ******************************************************
; BASIC .ASM template file for AVR
; ******************************************************

.include "C:\VMLAB\include\2313def.inc"

.def  temp  =r16
.def	blink	= r18
.def	tick	= r19      
.def	sc	= r20		
.def	strt	= r21	

reset:
  rjmp start
  reti      ; Addr $01
  reti      ; Addr $02
  reti      ; Addr $03
  reti      ; Addr $04
  rjmp	t1	; Addr $05
  reti      ; Addr $06        Use 'rjmp myVector'
  reti      ; Addr $07        to define a interrupt vector
  reti      ; Addr $08
  reti      ; Addr $09
  reti 	; Addr $0A

t1:
  rcall	set_t1 			
  sbis	acsr,5 			
  rjmp	quit_t1   		
  sbr	strt,1            
  rjmp	quit_t1          
quit_t1:
  set                    
  reti

start:
  ldi	temp,low(RAMEND)
  out	SPL,temp
  ldi	temp,0b11000100
  out	portb,temp
  ldi	temp,0b00000100
  out	ddrb,temp
  ldi	temp,0b00000011	
  out	tccr1b,temp
  ldi	temp,0b10000000
  out	timsk,temp
  ldi	temp,0b01001000
  out	acsr,temp
  ldi	r31,11		
  ldi	r30,238
  clr	sc
  clr	tick
  clr	strt
  clr	blink
  rcall	set_t1
  sei	

main:
  brtc	end_main      
  rcall	mode          
  rcall	set_delay
  clt
end_main:
  rcall	leds
  rjmp main

mode:
  sbrs	strt,0      
  rjmp	quit_mode   

ticks:
  inc	tick
  cpi	tick,2
  brne	quit_mode
  clr	tick
  sbic	acsr,5    
  rjmp	sec_plus   
dec_sc:              
  cp		sc,r17      
  brlo	next_dec_sec
  mov	sc,r17      
next_dec_sec:
  tst	sc          
  breq	led_off 	
  dec	sc          
end_dec_sc:
  rjmp	quit_mode	
sec_plus:          
  cp		sc,r17	
  brge	led_on
  inc	sc 		
  clr	blink
  rjmp	quit_mode
led_on:
  sbr	blink,1
  mov	sc,r17
  rjmp	quit_mode
led_off:
  clr	blink
  clr	strt
quit_mode:
  ret

leds:
  sbrs	blink,0
  rjmp	leds_off
  in		r22,TCNT1H
  in		r23,TCNT1L
  sbrc	r22,7
  sbi	portb,2
  sbrs	r22,7
  cbi	portb,2
  rjmp	quit_leds
leds_off:
  sbi	portb,2
quit_leds:
  ret	

set_t1:
  out	TCNT1H,r31
  out	TCNT1L,r30
ret

set_delay:
  in		temp,pinb 	
  sbrs	temp,7
  rjmp	no_delay
  sbrs	temp,6
  rjmp	delay_30
  ldi	r17,60
  rjmp	quit_set_delay
delay_30:
  ldi	r17,30
  rjmp	quit_set_delay
no_delay:
  ldi	r17,0
quit_set_delay:
  ret

 

Share this post


Link to post
Share on other sites

Наконец мой вызов был принят. Причём, нужно заметить, представителем ещё "того" поколения, для которого слово "честь" не пустой звук. ( вывод о поколении сделан по наличию внуков ).:)

Респект Геннадию!

Поздравляю всех читателей этой ветки и всего форума с наступающим новым годом и Рождеством!

Share this post


Link to post
Share on other sites

я бы set_t1 оформил в виде

.macro set_t1
  out  TCNT1H,r31
  out  TCNT1L,r30
.endmacro

вызов подпрограммы тратит на этой элементарной вещи целых 8 тактов. 4 такта(макрос) против 12(подпрограмма)

И еще полезнейший иногда макрос

.macro set_reg
 LDI   temp,  @1
 MOV   @0,    temp
.endmacro

Который делает инициализацию переменных в R0...R15 более наглядной(а для R16..R31 не имеет смысла)

Вот если бы сделать макросы условными... для R0..15 один макрос, для 16..31 другой можно ведь так?

Ну и вывод в порт тоже можно сократить в тексте программы...

.macro set_io  
 LDI   temp,  @1 
 OUT   @0,    temp
.endmacro


START:
  ...
  set_io portb, 0b11000100
  set_io ddrb,  0b00000100
  set_io tccr1b,0b00000011     set_io timsk, 0b10000000
  set_io acsr,  0b01001000

Такие макросы делают текст программы более читабельным

Share this post


Link to post
Share on other sites

Присоединяюсь. Всех с натупающим!!! Alexeyslav, твои рекомендации очень ценные. Их можно отнести к стадии оптимизации. А на это времени уже нет. :)Еще раз всех с праздником (уже близко)!!! :drinks:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • By LegionKC
      Добрый день.
      Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю.
      Спасибо.
       

    • By Cheshire Cat
      Здравствуйте, только начинаю изучать программирование мк. Я уже задавал этот вопрос в моих прошлых схемах мне отвечали что-то типа "любой стабилизрованый источник постоянного напряжения", или кидали схему такого источника. Можно назвать мне конкретное устройство? В общем то что я смогу забить в гугл и приписать купить. 

      Я уже больше двух месяцев жду пока мне придут с aliexpress детали для маленького лабараторного блока, но этот вариант может разбиться о кривизну моих рук.  Хочу просто купить такой источник и наконец заняться непосредственно МК. 
    • By Cheshire Cat
      Здравствуйте, только начал изучать программирование микроконтроллеров. В учебнике есть схема, но она не учитывает питание и землю. Скажите правильно ли я её дополнил.
      И еще дополнительный вопрос. Что можно использовать как источник постоянного питания на 5В? Из не дорогого и того, что можно купить в Казани. Знаю, что лучший вариант - лабораторный БП, но они дорогие.

  • Сообщения

    • Да то было скорее утверждение,а не вопрос.Паш,жизнь прекрасна и удивительна-если выпить предварительно.
    • А если этого не сделать, что будет? Я просто никогда такой ереси не слышал. Это всё равно что после покупки нового жёсткого диска для компьютера, разобрать его, проверить люфты шпинделя, протереть спиртом пластины и только после этого пользоваться. То есть я так понял прибор новый, прекрасно работает, но вы его разобрали что бы увидеть то, в чём не разбираетесь, по совету каких-то "обзорщиков" сомнительной квалификации? Не в обиду, но делать так не стОит. Знаете поговорку "Не мешай технике работать"? Это золотое правило. Поверьте, даже самый занюханный китайский товар, уже не то говно, что было лет 5-10 назад.
    • Да, там есть ещё один триггер. Каким образом это коррелирует с возможностью "корректировки" под два канала ? В курсе как кодируются/дешифруются команды в пультах ДУ? С протоколом RC5 ознакомились ?
    • Амплитуда неискаженного сигнала +/- 18V Синус на входе 2.1V максимально     АЧХ   Посмотрите на такую линейность до 1 Мгц :)))) От 10Гц до 1 Мгц... Ах! Вот вам класс-А
    • такой сигнал  я чет даже на шпаргалке такого не видел - резисторы затворов -68 Ом - резистор первички- 10 Ом VID_20191019_195632.mp4 мне нужно домотать витки?
    • Все мы скоро или не очень там будем.Увидим.
  • Покупай!

×
×
  • Create New...