На чем писать  

543 пользователя проголосовало

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

    • Assembler
      149
    • C
      277
    • Что-то еще
      56


354 сообщения в этой теме

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

  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
usav    0

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

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

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

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

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

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

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

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

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

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

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

не поймут!

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

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

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

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем Геннадий
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
petro-ew    0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

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

Шутите?

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

:lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Шутите?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

in temp,port(X)

st Z+,temp :)

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

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

Изменено пользователем Геннадий

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем Геннадий

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот и праздничные дни. Всех с наступающим Новым Годом! Вот что у меня получилось сегодня (по просьбе 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

 

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    32

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

я бы 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

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

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, верно, к читаемости, т.к. на размер и код .hex не влияет. :)

Изменено пользователем Геннадий

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Alexey104
      Всем привет!
      Возникла следующая проблема:
       
      Есть две ардуины 'Mega2560'. По несчастливому стечению обстоятельств данные платы попали в руки одному чуваку, который, вернув их, заявил, что они перестали работать после того, как он "чисто ради интереса" поковырял на обеих некоторые фьюзы. Есть у меня такой китайский usbasp v2 программатор:
      Подключив данный девайс к ICSP-пинам первой платы, удалось без проблем восстановить на ней загрузчик через стандартную Arduino-IDE, после чего работоспособность платы полностью восстановилась. Но вот при попытке сделать то же самое со второй платой, получаю это:
      Такое же сообщение получаю при попытке зашить загрузчик в неподключенную к программатору ардуину, то есть программатор вообще не видит МК. Плата прекрасно работала до того, как вышеупомянутый товарищ покрутил настройки фьюзов.
       
      Что я пытался предпринять:
      Замыкал пины JP3 программатора, отвечающие за понижение скорости, подключал к ардуине 5V от внешнего источника при прошивке загрузчика, - не помогло.
       
      Поиском пользоваться умею, аналогичную тему тут находил, но там проблема была в том, что парень неверно подключал программатор к контроллеру. В моём же случае всё подключено верно, повторюсь, что загрузчик первой платы этим же программатором был восстановлен успешно.
      Буду рад любым советам касательно того, как восстановить работоспособность платы.
       
       
       
    • Автор: Ru_s
      Здравствуйте. Подскажите пожалуйста, возможно ли на attiny13 реализовать такую штуку. Мне в процессе работы программы нужно поменять режим работы таймера/счетчика с fast PWM на обычный счёт, отсчитать длительный промежуток времени и опять вернутся в режим ШИМ. Т.е. я подаю на ногу сигнал ШИМ и когда он в максимальном значении, я его отключаю, и тупо подаю на ногу высокий лог. уровень. В это время Т/С по идее свободен, и мне надо посчитать время работы выхода на максимальном лог. уровне, при достижении какого-то значения времени нужно перевести т/с обратно в ШИМ. Возможно ли это? И как приблизительно это реализовать
    • Автор: ShimkoMax
      Здравствуйте. Требуется вывести данные температуры и влажности на экран. С LCD дисплеем разобрался, осталось разобраться с SHT21. Постоянно выводит 0 на дисплей:
      Main.c:
      #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include "globals.h" #include "LCD_lib.h" #include "twi.h" // I2C #include "sht21.h" int main(void) { I2C_Init(); _delay_ms(100); LCD_init(); char buffer[20]; roomAdrInit(); SHT21_reset(); while(1) { SHT21_reset(); LCD_sendString(itoa((int)get_temperature(), buffer, 10), 4, 0, 0); _delay_ms(1000); } } twi.c:
      #include <avr/io.h> #include "twi.h" void I2C_Init(void) { TWSR = 0; TWBR = 0x20; TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); } void I2C_StartCondition(void) { TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); while(!(TWCR & (1<<TWINT))); } void I2C_StopCondition(void) { TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN); } void I2C_SendByte(uint8_t data) { TWDR = data; TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); } unsigned char I2C_ReadByteAck(void) { TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA); while(!(TWCR & (1<<TWINT))); return TWDR; } unsigned char I2C_ReadByteNak(void) { TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); return TWDR; } sht21.c:
      #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include "twi.h" #include "sht21.h" void SHT21_reset() { unsigned char reg[1]; reg[0]=SHT21_reset_cmd; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(*reg); I2C_StopCondition(); _delay_ms(100); } uint16_t checksum(unsigned char data[],uint8_t byte, uint8_t check) { uint8_t crc=0; uint8_t bytectr,bit; for (bytectr=0; bytectr<byte;bytectr++) { crc^=(data[bytectr]); for (bit=8;bit>0;bit--) { if(crc&0x80) { crc=(crc<<1)^polynomial; } else { crc=crc<<1; } } } if (crc!=check) { return 0; } else { return data; } } void write_user_register() { unsigned char reg[3]; reg[0]=user_register_write; reg[1]=0x44; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(*reg); I2C_StopCondition(); } uint16_t read_value(uint8_t reg) { char data[4],crc; uint16_t result; data[0]=reg; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(reg); I2C_StartCondition(); I2C_SendByte(SHT21_i2c_read); data[1] = I2C_ReadByteAck(); data[2] = I2C_ReadByteAck(); crc=I2C_ReadByteNak(); I2C_StopCondition(); result=(data[1]<<8) | data[2]; checksum(result,4,crc); result &= 0xFFFC; return result; } float get_humidity() { //char buffer2[4]; uint16_t hum_value = read_value(humidity_hold_mode); return -6 + 125.0 / 65536.0 * hum_value; //dtostrf(rh,5,2,buffer2); _delay_ms(100); } float get_temperature() { //char buffer1[4]; uint16_t temp_value = read_value(temperature_hold_mode); return -46.85 + 175.72 / 65536.0 * temp_value; //dtostrf(tc,5,2,buffer1); _delay_ms(100); }  
    • Автор: GeloMik
       
      Я новичок в программировании AVR контроллеров, хотя знаю +/- C++.
      Проблема заключается в том, что я не могу написать прошивку к своему маленькому проекту. Используемый мною контроллер - ATTiny45. У него на борту имеется 1 АЦП с выходом на 4 ноги. Нужно, чтобы фактически одновременно брался замер с 3, 4 и 5 порта по АЦП, и при появлении 1 на одном из них МК должен подать 5В на 1 или 2 порты. Источник АЦП AREF. 
      Сюда прикреплю схему самого робота, если кого не затруднит помочь написать прошивку, буду очень благодарен 

  • Сообщения

    • Почистите контакты и соберите, как было. Если заработает, то чинить пока не надо.
    • Страна чудес окружает вас - это вы покачиваетесь на эфирных волнах и живете по магнитному времени. Это у вас энергии не существует, но существует её иерархия. Находясь под теми препаратами, что вы принимаете, можно и грамматические ошибки в слове "бред" найти. И вы, похоже, в этой стране останетесь. Вы не сделали ничего достойного внимания. Даже нашего, т.е. дилетантского. Но направьте свои работы в академию наук - там-то наверняка не все дилетанты...
    • То есть эту схему можно смело нагружать на какую либо другую со входным сопротивлением в пределах 1--2к?
    • А, ну типа видишь летит самолет, так вот я имею к нему отношение. Вчера видел его по телевизору. "Ошибочная" теория, Валера, не объясняет принципы работы работающих приборов. Это теория СОЗДАЛА эти самые приборы. Причем в невероятном множестве и разнообразии.  Ты всерьез полагаешь, что "теории" безграмотного пустопорожнего болтуна кого то интересуют?  Тебе точно лечиться надо. Причем срочно. ЕДИНСТВЕННЫМ подтверждением правильности теории (любой теории), является ПРЕДСКАЗАНИЕ того, что случится ПОТОМ. То есть теория верна тогда и только тогда, когда способна рассчитать будущее. Рассчитывать прошлое никому не нужно. Объяснить его может даже бомж. Со своей бомжовой точки зрения. Имеет полное право. Я, Валера, никому ничего не должен.
    • Все очень просто. Я подключил осцилограф и измерил амплитуду. И там действительно меандр с 0.8 вольт в пике. По поводу полампера. А вас не смущает что я в качестве нагрузки светодиод повесил, не? А еще я вопрос свой разместил в теме Вопросы от Начинающих. Так что ежели я херню наваял с удовольствием рассмотрю Ваш вариант. Частота около 200Гц. Честно говоря я уже думал подтянуть базу к земле, но меня смутило что амплитуда и так приближается к порогу открытия транзистора, а делить ее еще у меня рука не поднялась. Или вы предлагаете R3 Вообще убрать и оставить только подтягивающий? Выходное сопротивление я, к сожалению, сказать не смогу. Одним транзистором мне кажется не обойдешься в виду тиго что нагрузка у меня индуктивная.
    • Переднюю морду тоже этой машинкой шлифовали? Какой там принцип?