INT 21h

Hi, I am Vladimir Smagin, SysAdmin, DevOps and barely good guy. Telegram Email / GIT / Микроблог / Thingiverse / GPG

ESP8266: Прошивка ESP-01 через Arduino IDE и USB <-> UART адаптер

№ 8384 В разделах: Electronics ESP8266 Programming от August 11th, 2017,
В подшивках: , ,

GPIO0->GND переключение микросхемы в режим прошивки
RST->GND сброс микросхемы и перезапуск

При перезапуске GPIO0 должен быть притянут к 0.

Нет комментариев »

Permission denied при попытке прошить arduino\esp8266

№ 8347 В разделах: Electronics ESP8266 Programming Sysadmin от July 7th, 2017,
В подшивках: , ,

Просто добавьте вашего пользователя в группу dialout и перелогиньтесь.

vlad@vlad-notebook:~$ sudo adduser vlad dialout

Нет комментариев »

Контроллер I2C для дисплея HD44780

№ 7181 В разделе "Electronics" от April 26th, 2015,
В подшивках: , , ,

Можно подключать к Raspberry Pi, Arduino и т.п. На некоторых персональных компьютерах есть даже I2C выход на материнской плате.
(more…)

Нет комментариев »

АЦП (ADC) в AVR mega88 (mega8, mega48, mega168, mega328)

№ 5146 В разделах: Electronics Programming от May 6th, 2013,
В подшивках:

По работе мне понадобилось сделать датчик поворота руля. Самый простой и точный способ это выдернуть шифратор из обычной компьютерной мыши, пришаманить его к рулевой колонке, а потом тупо считать подаваемые импульсы. А что если руководитель проекта подумал, что сделать это с помощью переменного резистора гораздо круче? Ну раз он захотел, то почему бы и нет? Ну подумаешь точность немного упадет 🙂 Все равно компьютер будет подруливать.

Чтобы ADC заработал нужно подключить AGND, AREF и AVCC к питанию. Резистор нужно подключить к ADC0 согласно схеме на рисунке ниже.
sNRkfEiZeFSjInT7nvBGsBg

Теперь необходимо инициализировать АЦП. Включаем нужный пин на вход (я это сделал довольно грубо и одним махом сделал входом весь порт C), устанавливаем делитель в ADCSRA на 256, в DIDR0 отключаем ненужные входы АЦП 1, а нужные 0 и настраиваем мультиплексор.

void initADC(void) {
   DDRC = 0;
   PORTC = 0xFF; 
   PRR |= (1<<PRADC);
   ADCSRA = (1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);
   DIDR0=0b00111110;
   ADMUX = (1<<MUX0);
}

Чтобы снизить шумы можно применить LC фильтр, описаный в даташите

adc_noise_reduce

Теперь можно начать читать из АЦП значения. Они будут изменяться от 0 до 1023.

  int adc_value=0;
  while (1) {
      sumsung_clr();
      sumsung_goto(0,0);
      fprintf_P(&display,PSTR("%02d\n"), adc_value);
      _delay_ms(300);
      ADCSRA |= (1<<ADSC)|(1<<ADEN);
      while((ADCSRA & (1<<ADSC))!=0) ;
      adc_value=ADC; 
  }

Должно получиться что-то типа такого

2013-05-07 00.34.21

Демонстрационный стенд с подключеным экраном

2 комментариев »

Микроблог перейти

# 2019-12-23 09:14:01

Очень интересная концепция, docker-compose для kubernetes kompose.io/ #devops #kubernetes #docker

# 2019-12-16 17:21:18

Надо будет почитать для общего развития как оживить кластер в случае проеба сертов habr.com/ru/company/southbridg #kubernetes #devops

# 2019-12-12 17:33:46

js bootstrap с интерфейсом как в DOS github.com/kristopolous/BOOTST


© Vladimir Smagin, 2005-2019. Копирование материалов без разрешения запрещено. GPG DA4CD0F5E222EA727D6A40C413BCE12E5618F071 *
Яндекс.Метрика

Fortune cookie: There was a young woman named Alice Who peed in a Catholic chalice. She said, "I do this From a great need to piss, And not from sectarian malice."