Перейти к содержанию

den2313

Members
  • Постов

    199
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент den2313

  1. den2313

    stm и ili9481

    реально быстро, мой косяк (неправильно выдавал команды)
  2. den2313

    stm и ili9481

    Подскажите: плата stm32f103c8, дисплей ili9481, 16 бит. Кубом сгенерировал проект (72 Мгц), подключил к дисплею,и скорость заливки целого экрана около 12 секунд, что-то многовато. Тактовая частота 72 Мгц, в описании команд только "подать 0" или "1" на выход (wr, dc,...). В описании передачи команд (или данных) на выход только обнуление битов и сравнение с 0 ( тогда или 0 или 1 на выход). Паузы перед командами (wr,dc) убрал, немного лучше, но не то. Дма хочу использовать для других целей. Заранее спасибо
  3. Здравствуйте. Подскажите статьи по файловой системе fat32. Те ,что находил в инете как то размыто объясняют вычисление адреса таблицы ( вторую не буду использовать). С вычислением из корневого каталога разобрался ( вычисляю адрес ,размер файла, имя, вообщем всё). Подключаю avr к ММС. PS. В " живую" подключаю карту, указываю сектор корневого каталога и работает
  4. Я тоже так думал- мотор " инертный", ШИМ увеличивается из-за сигнала датчика, а пока мотор наберет обороты ШИМ уже слишком велика и начинается обратный отсчет, в таком случае попробую время записи в ШИМ немного увеличить Или перевести скорость изменения датчика в ЦАП и подать на вход ШИМ, но получится аналоговая схема
  5. 1 оборот -24 сигнала с датчика, 1/24 секунды, 10 оборотов -1/240 секунды, не думаю что дискретность большая, скорее контроллер не успевает рассчитать значение. Схемы что я видел в интернете обычно на операционниках, и обратная связь- конденсатор с сопротивлением (коррекция) ,причем в одной из них ( промышленная) время реакции на увеличение оборотов одно а на снижение другое (видимо чтоб не "раскачивался"). Теории мне не хватает, придется изучать
  6. Нагрузка меняется, ПИД регуляция просто не успеет отследить ( или делать на stm- но я их не знаю). Поэтому хотелось жестко привязать обороты к времени импульса. Буду читать
  7. Прошу помощь (теория) по стабилизации оборотов коллекторного двигателя с помощью оптопары. Есть двигатель 100 в,400 ватт ,на валу диск с оптопарой, 24 отверстия, хочу регулировать обороты ШИМом ,но чтоб обороты более менее были стабильны. Подключил двигатель через мост ,транзистор к avr, регулировка "просто" ШИМ- регулируется но момент на низких оборотах зависит от нагрузки, на средних нормально. Задействовал диск- ждем 0, как только 1 то делаю подсчет таймером ,0 стоп и после высчитываю число в таймере, в зависимости от эталона делаю или меньше OCR или больше. Если двигатель не раскрутился (таймер переполнился) то добавляю Х число -"небольшой рывок" . В теории вроде нормально, но в реале- двигатель стартует и потом как бы "качается" плавно растут и падают обороты. Кто может подсказать что делаю неправильно? Подозрение- что мало время обработки. Или подсчитывать каждый импульс. Мк работает на 8 МГц. PS. Хочу стабилизировать от 10 оборотов. Пробовал- если разница эталона и числа таймера большая- добавлял (убавлял) OCR немного больше, но только хуже
  8. на фото китайский блок автоматики (если не ошибаюсь-als500),мега16,А так-нормальная автоматика
  9. ACS712- проще будет,а при старте игнорируйте (до определенного момента!) пусковой ток.Эти датчики достаточно точны,проверял
  10. Тогда можно сделать: главный мк- подчиненный (несколько),как автор писал выше,связь по uart (можно по rs232 ,можно и rs485 ). Плюсы- 4 провода подключения, легко настроить, возможно подключение к ПК (даже через labview), готовые модули ардуино (самые дешевые, без usb на м328, а прошивку через isp). Минусы- на каждые жалюзи мк и переходник ( хотя можно и сгруппировать некоторые жалюзи).
  11. автомат,пускатели,промежуточное реле,(возможно сверху терморегулятор),управление тиристорами для тэн (возможно и углом),частотник для ленты.
  12. arduino (можно и со своей прошивкой на си ,асм) и max232
  13. Сразу большое спасибо автору за статью,откуда взята теория http://avrdevices.ru...irkuly-k-kompu/ . Задача- подключить электронный микрометр к микроконтроллеру для обработки параметров. Был взят китайский шнурок (опция подключения к ПК) .На выходе имеем обычный COM порт, измерения в формате "знак"-0000,000 0x0D (хотя сам микрометр меряет только до ~13 мм). Изготовил макетку ,сделал пересчет и вывод на лсд значения ,выход на тиристоры и небольшое меню для ввода параметров. Схема работала но выяснил- параметры по COM порту приходят с большим опаздыванием, плюс еще и не стабильно,может прийти раз в секунду а может и в 2-3, хотя в среднем 1 раз в секунду (проверял и ПК через переходник). Устройство на который хотел поставить микрометр имеет кривошатунный механизм и вариант один- уменьшать скорость (ну или останавливать и ждать измерения-звонковый режим мотора). Итог: подключил микрометр к мк ATMEGA162 напрямую, без конвертеров, как у автора только сигнал не инверсный, подтяжка к питанию -резисторы 1МОм (4,5-5 выборок за 1 сек) . Сначала был вывод на лсд,но потом переделал на семисегментные, нашел плату с кнопками и индикаторами, лучше читаемость. По поводу прошивки- есть .asm, есть .c codevision. Codevision- использую прерывание Т2 для изменения разряда, Т1 для подсчета паузы перед первым битом. Т3 был задействован если нет долго сигнала-авария но потом отключил. Также отключил прерывание и разряды при приеме (думаю чтоб не потерять 0 или1 в бите, пробовал без отключения -работает но все же,для лсд еще проще). На .asm прерывание не отключал . Если поднять тактовую частоту (до 16) думаю не нужно отключать разряды, но не имею кварца проверить.Есть заметное мерцание индикаторов при измерении -это большой минус. Знак за ненадобностью не читаю, (в коде написано как прочитать). Простое меню, подсчет изделий вперед-назад с выключением, можно легко изменить. Программы писать красиво не умею но машина работает и сбоев не наблюдаю. Выложил только .с ибо в .asm долго разбираться. ( Может кто-то и допилит под свои нужды). Тот контроллер что дип корпусе - на .asm ,мерцания при измерении нет,прерывания не отключал . izmeritel.zip
  14. Ищите в инете как включить в режим прошивки,контроллер заряда если и сгорел то не должен влиять на включение планшета.
  15. Включите от лаб блока,если память не изменяет напряжение должно быть выше 3,8 в и ток блока около 2 А Симптомы включения-выключения точно как и у меня,планшет должен включиться
  16. На cube 21 у меня так,когда батарея в ноль,а заряжаю без подключения к зарядному (режим заряда с ПК). Планшет не видит зарядки ,не подключен 5 провод либо к плюс у либо к минусу.В одном случае ток зарядки мал (когда от ПК),в другом велик (только зарядка,блок питания 2А грелся достаточно.).А вот к какому надо подключить-не знаю,ищите док.Планшет пытается стартануть а тока мало,и заряжается малым током. Точно как у меня,когда сядет полнностью
  17. Интересно. Был случай _стиралка (промышленная ) такой точно дисплей разбили, купили ( с завода 3 ! штуки) ,ни один не работал .Что я сделал- переставил ЖК с нового на старую плату (где разбит дисплей) и все заработало. На родной плате мс toshiba а на тех что прислали с завода (немцы прислали) стояли китайские (не помню но что то вроде ch..). Подозреваю что дело в прошивке .Не подходит к китайским. PS я и кварцы разные ставил на китайца (думал проблема с таймингами,увеличу частоту,родной на 6Мгц) -не помагало и попробуйте сдвинуть сам жк,подозрение на то что не все сегменты совпадают. Я делал при включенном, понемногу сдвигал пока изображение не появилось полностью
  18. если не заблокирована то пробуйте считать eeprom,через сутки изменятся ячейки
  19. Третий вариант. Попробуйте считать после этого прошивку,сверьте с оригиналом
  20. В протеусе работает вторая часть. По поводу delay изменил (косяк)
  21. /******************************************************* Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 4,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *******************************************************/ #include <mega8535.h> #include <delay.h> bit data_bit1=0; bit data_bit2=0; bit data_bit3=0; bit data_bit4=0; //------------------------------------------- void scan_data(){data_bit4=data_bit3; data_bit3=data_bit2; data_bit2=data_bit1; data_bit1=PINA.1;} void out_port() {PORTB.4=data_bit1; PORTB.5=data_bit2; PORTB.6=data_bit3; PORTB.7=data_bit4;} void out_port_2(){PORTB.4=PINA.4; PORTB.5=PINA.5; PORTB.6=PINA.6; PORTB.7=PINA.7;} //----------------------------------------- void main(void) { DDRA=0; PORTA=0; DDRB=0xF0; PORTB=0xF; DDRC=0; PORTC=0xFF; DDRD=0; PORTD=0xFF; //----------------------------------------------------------------------------------------------- ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); //------------------------------------ while (1) { delay_ms(50); // дребезг if (PINA.2==0){ out_port(); delay_ms(50); //дребезг while (PINA.0==0); scan_data(); delay_ms(50); // дребезг while (PINA.0==1);} //--------------------------- else { out_port_2(); delay_ms(50); // дребезг while (PINA.0==0); delay_ms(50); // дребезг while (PINA.0==1);} } } Новый точечный рисунок.zip
  22. Там вверху в codevision #9 резисторы на корпус есть? ps/ Не разрешает добавлять картинки...(только архив).Точно-моя ошибка ,не видно файла,исправляю /******************************************************* Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 4,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *******************************************************/ #include <mega8535.h> #include <delay.h> // Declare your global variables here unsigned char temp=0; void key_0() { // 0 на входе,защелкнулись while (PINA.0==0){delay_ms(50);};// сидим пока 0 //стала 1 на выход PORTB.7=temp; while (PINA.0==1){delay_ms(50);};//сидим пока 1 // стало 0,защелка temp=PINA.5; //второе число while (PINA.0==0){delay_ms(50);};//сидим пока 0 // стала 1 PORTB.7=temp; while (PINA.0==1){delay_ms(50);};//сидим пока 1 // стало 0,защелка temp=PINA.6; //третье число while (PINA.0==0){delay_ms(50);};// сидим пока 0 //стала 1 на выход PORTB.7=temp; while (PINA.0==1){delay_ms(50);};//сидим пока 1 // стало 0,защелка temp=PINA.7; //четвертое число while (PINA.0==0){delay_ms(50);};// сидим пока 0 //стала 1 на выход PORTB.7=temp; while (PINA.0==1){delay_ms(50);};//сидим пока 1 // стало 0,защелка temp=PINA.4; } void main(void) { // Declare your local variables here DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (1<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0); DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); PORTC=(1<<PORTC7) | (1<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0); DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (1<<PORTD1) | (1<<PORTD0); //------------------------ TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0=0x00; TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2; TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x00; OCR2=0x00; TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0); MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2); UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME); ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE); //------------------------------------ temp=PINA.4; while (1) { key_0(); // Place your code here } } Новый точечный рисунок.zip ir2.zip
  23. как свайп может перехлестываться с убунту? Если есть бэды то (я бы так сделал) -взять загрузочную флеш с линукс ,загрузиться ,а на вторую записать данные а потом переустановить винду а после линукс ( пользуюсь linux12 kde)
  24. тот что я скинул (.hex) попробуйте в своей(!) модели протеус (укажите ему файл),частота 4 мгц.В реале -после светодиода ставьте резистор ( если для теста то 1к а по правилам высчитывать по формуле хотя частота будет влиять на дребезг кнопок (чем меньше-тем больше пауза)
×
×
  • Создать...