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

Схеман

Members
  • Постов

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

  • Посещение

Весь контент Схеман

  1. Сломались петли экрана, разобрал весь ноутбук, аккуратно поменял петли дисплея. За одно решил поменять термопасту на видеокарте и процессоре (старую пасту убрал растворителем и уайт спиритом) и попутно поменял их куллер, так как он издавал странные звуки и добавил оперативки 8 гигов (теперь 2 планки 4 и 8), заменил батарею, так как старя уже не заряжалась, теперь не включается монитор. Подключал дополнительный монитор, тоже не включается, значит менять придётся материнскую плату целиком? Сам ноут работает, HDD крутится, куллер крутится. Можно ли как-то отдельно протестировать дисплей? Есть ли какие-то тестеры, что бы подключить его в разъём и проверить?
  2. Задержка 1 секунда с помощью нулевого таймера Всем привет, изучаю таймеры, начал с нулевого. Захотел сделать паузу 1 секунду. Правильно ли я всё понимаю? МК у меня настроен на 1МГц, TCCR0 решил выставить на 0b00000101; Получается 1МГц = 1 000 000 / 1024 = 977, с такой частотой теперь будет работать МК. Узнаю длительность, 1 делю на частоту 1/ 977 = 0.001 (одна милисекунда, с округлением) TCNT0 может сохранить 255 тактов, это значит каждый такт будет происходить, через 0.001 миллисекунд. Значит максимальное время будет 0.001 * 255 = 0.255 секунды, то есть почти четверть секунды. Мне нужно сделать задержку 1 секунду, значит 0.001 можно умножить на 100 и потом ещё на 10. Перехожу к коду, сначала отслежу, когда счётчик дойдёт до 100, значит прошло 0.100 миллисекунд, увеличиваю переменную z на 1 и когда она достигнет числа 10, значит прошла одна секунда и можно включить один светодиод, если переменная == 20, значит прошло 2 секунды и светодиод можно переключить. Каким способом это можно сделать лучше? Я так понял, мой способ выдаёт не точную секунду, а приблизительную? И ещё я кое что не понимаю, таймер восьмибитный, в каждую ячейку памяти регистра таймера записывается один бит по истечению определённого промежутка времени в моём случае мне нужно 100 ячеек, значит надо 100 бит? И так таймер начинается с 0, значит через 0.001 микросекунду заполнится 1 бит, а их всего 8 и тут я в ступаре.
  3. Я починил, написал код, которому надо только один выход 15. Не нужен транзистор, кварц и c PC6 ничего мудрить не надо. #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода #include <util/delay.h> int main(void) { PORTB=0x00; DDRB=0x02; TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; unsigned char i; while (1){ for (i=0;i<255;i++){ OCR1A++; _delay_ms(5); } for (i=0;i<255;i++) { OCR1A--; _delay_ms(5); } }; }
  4. @_abk_ Не решена, теперь не могу сделать плавное тушение
  5. @andrusha152 остальное я програмировал без кварца и всё работает @andrusha152 вот фьюзы @andrusha152 Вот сделал код, который плавно включает светодиод без кварца #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода #include <util/delay.h> int main(void) { PORTB=0x00; DDRB=0x02; TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; while (1) { OCR1A++; _delay_ms(100); }; }
  6. Нашёл схему и код. Светодиод должен мигать, но почему то он просто горит. Кварц по схеме я подключать не стал, потому что моя atmega8 работает на частоте 1МГц и PC6 у меня просто подключён от программатора разъёма MISO, я думаю без этого должно работать. #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода //Програма задержки void pause (unsigned int a) { unsigned int i; for (i=a;i>0;i--); } //Програма инициализации ШИМ void init_pwm (void) { TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; //Начальная яркость нулевая } //Основная програма int main(void) { unsigned char i; DDRB=0x02; //Инициализация PB1 (OC1A) как выход init_pwm(); while (1) { for (i=0;i<255;i++) //Плавно повышаем яркость {OCR1A++; pause(1000);} for (i=0;i<255;i++) //Плавно понижаем яркость {OCR1A--; pause(1000);} } return 1; }
  7. @Dr. West Большое спасибо, я оказывается неправильно подключал потенциометр.
  8. Я у подстроечника, всегда только 2 вывода использую
  9. Я подключил на 10 км, подсветка не реагирует.
  10. Я регулятор вообще не подключал.
  11. Включается экран и вообще ничего не выводится, пробовал atmega8 и на ардуине (для неё использовал тестовый код). Что может быть? Может ли такое быть, что контакты плохо спаял? Как вообще проверить, что символы могут отображаться? #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> //---------------------------------------- void LCD_ini(void); void setpos(unsigned char x, unsigned y); void str_lcd (char str1[]); //---------------------------------------- #define e1 PORTD|=0b00001000 // установка линии E в 1 #define e0 PORTD&=0b11110111 // установка линии E в 0 #define rs1 PORTD|=0b00000100 // установка линии RS в 1 (данные) #define rs0 PORTD&=0b11111011 // установка линии RS в 0 (команда) //---------------------------------------- //---------------------------------------- void sendhalfbyte(unsigned char c) { c<<=4; e1; //включаем линию Е _delay_us(50); PORTD&=0b00001111; //стираем информацию на входах DB4-DB7, остальное не трогаем PORTD|=c; e0; //выключаем линию Е _delay_us(50); } //---------------------------------------- void sendbyte(unsigned char c, unsigned char mode) { if (mode==0) rs0; else rs1; unsigned char hc=0; hc=c>>4; sendhalfbyte(hc); sendhalfbyte(c); } //---------------------------------------- void sendchar(unsigned char c) { sendbyte(c,1); } //---------------------------------------- void setpos(unsigned char x, unsigned y) { char adress; adress=(0x40*y+x)|0b10000000; sendbyte(adress, 0); } //---------------------------------------- void LCD_ini(void) { _delay_ms(15); //Ждем 15 мс (стр 45) sendhalfbyte(0b00000011); _delay_ms(4); sendhalfbyte(0b00000011); _delay_us(100); sendhalfbyte(0b00000011); _delay_ms(1); sendhalfbyte(0b00000010); _delay_ms(1); sendbyte(0b00101000, 0); //4бит-режим (DL=0) и 2 линии (N=1) _delay_ms(1); sendbyte(0b00001100, 0); //включаем изображение на дисплее (D=1), курсоры никакие не включаем (C=0, B=0) _delay_ms(1); sendbyte(0b00000110, 0); //курсор (хоть он у нас и невидимый) будет двигаться влево _delay_ms(1); } //---------------------------------------- void clearlcd() { sendbyte(0b00000001, 0); _delay_us(1500); } //---------------------------------------- void str_lcd (char str1[]) { wchar_t n; for(n=0;str1[n]!='\0';n++) sendchar(str1[n]); } //----------- void port_ini(void) { PORTD=0x00; DDRD=0xFF; } //---------------------------------------- int main(void) { port_ini(); //Инициализируем порты LCD_ini(); //Инициализируем дисплей setpos(0,0); str_lcd("Hello World!"); setpos(2,1); str_lcd("String 2"); while(1) { } }
  12. Схеман

    побитовый оператор

    Вот такой код #define F_CPU 1000000UL // 1 MHz #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0b11111111; PORTD = 0b0000100; while(1){ PORTD = 0b00010010; PORTD = PORTD & (1 << 5); } } 00010010 & (1 << 5) Получается 00010010 & 00100000 = 00010000 Почему получается тогда 00010010? Должен гореть только светодиод, под номером 5, а горят 2, второй и пятый.
  13. В общем отдал в ремонт и там её оживили и дополнительно поставили предохранитель, заплатил 3500р.
  14. на самой фишке сейчас обнаружил, что не прозванивается кнопка включения
  15. Передняя панель "lg 6871er1081p" вообще не реагирует, как будто отключили свет. Несколько раз включал/выключал с розетки, не помогло. Подключил в неё обогреватель, он заработал, значит розетка исправная. Опять включил, начал замерять напряжение после фильтра дроселя, оно есть 220, но кнопка вкл, по прежнему не реагирует. Иду дальше, начал проверять напряжение на самой панели, на самой жёлтой фишке приходит 220, на кнопку вкл, которая чёрная справа, почему то всего 0.24 в, это не малова-то?
  16. Какой прибор лучше купить для проверки якорей и статоров? ИКЗ-3 или DSL-8240L? Купить дроссель для проверки якорей, говорят им можно испортить якорь? Или лучше самому схему собрать? Поделитесь пожалуйста опытом. Проверка статора по шарику? По лампочке с переменным током?
  17. Я так понял, что для каждой atmega, нужен свой кварц? На программаторе кварц на 12 Мгц. И может лучше мне собрать такую плату и тогда программатор заработает? на фото видно, что кварц на 8 Мгц.
  18. А как узнать при покупке, на какой кварц настроена Mega?
  19. А может купить ардуино, с atmega328, выпаять её оттуда и использовать эту atmega328 отдельно и каждый раз паять, прошивать и выпаивать?
  20. Купил в магазине usbasp и atmega8 (не на алиэкспресс). Сделал перемычку для jp3 и не хочет прошивать с помощью avrdude. Драйвер установлен. Пишет ошибку Cформированная командная строка: avrdude.exe -p m8 -c Usbasp -B 200 -P usb -U flash:r:"C:\Users\User\Desktop\atmega\atmega\Debug\atmega.hex":i avrdude.exe: set SCK frequency to 4000 Hz avrdude.exe: error: programm enable: target doesn't answer. 1 avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. Я менял разные настройки для avrdude (usbasp_1M, usbasp_4M, usbasp_8M, usbasp-32), всегда ошибки Cформированная командная строка: avrdude.exe -p m8 -c Usbasp -B 1 -P usb -U calibration:r:calibration.hex:r avrdude.exe: set SCK frequency to 750000 Hz avrdude.exe: error: programm enable: target doesn't answer. 1 avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude.exe done. Thank you. Когда нажимаю на "чтение" или "программирование", то на секунду загорается светодиод на программаторе, рядом с другим. Питание выходит с программатора 5 вольт. Я так понял, что перемычку используют не всегда, а для некоторых атмег, может мне купить какую-нибудь другую, для которой не нужна перемычка? Пробовал на вин10 и вин7, результат один и тот же. Что делать? Соединял по этой схеме, 10 пинов, перепроверил несколько раз Думаю купить STK500 и atmega328, может это заработает. И ещё вопрос, почему на перемычке дорожка только на одном контакте?
  21. Я собрал эту схему, светодиод светится, если из ОУ выдернуть контакт 2, то светодиод гаснет пульсациями, так и должно быть? Но я так и не понял зачем этот ОУ?
  22. Я не понимаю, как загорятся светодиоды, если от зелёного, выход идёт через транзистор, а он будет заперт, так как на его базу ничего не подаётся, а красный не загорится, потому что анод расположен к +. Может в этой схеме не хватает фоторезистора?
×
×
  • Создать...