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

apolon1919

Members
  • Постов

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

  • Посещение

Электроника

  • Стаж в электронике
    Менее года

Достижения apolon1919

Энтузиаст

Энтузиаст (6/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

-18

Репутация

  1. Спасибо Генадий, так и сделал, обошелся одним таймером. ошибка была только в том что я не сохранял в регистр состояний ядра при входе в прерывания. Теперь все работает
  2. Вот же да! Действительно, вот где я упустил момент! Ну спасибо вам огромное! А я уже и так и так думал... Оказывается все просто. Я написал, что они уже заняты под другие нужды, где нужна большая точность
  3. Если я вдруг не понятно спросил, то короче вопрос может выглядеть так: Как управлять RGB светодиодом с помощью ШИМ, причем в основной программе делать задержки без последствий?
  4. apolon1919

    Rgb Светодиод К Atmega8

    Всем привет. Решил подключить RGB светодиод к Atmega8. И возникла проблема. Сперва опишу как подключил: К пинам порта D, подключил через PNP транзисторы ножки светодиода PD0 - Blue PD1 - GREEN PD3 - RED Что бы светодиод работал как нужно, мне нужно использовать ШИМ. Для этого я использовал прерывания от таймера T0. И в нем веду счетчик ШИМ и управляю ножками светодиода. ; PD0 = RED ; PD1 = GREEN ; PD2 = BLUE T0: push r25 push r26 push r27 in r25, PORTD lds r26, COUNT_PWM ; Счетчик ШИМ cpi r26, 0 brne T0_red cbr r25, 0x0B ; Если счетчик ШИМ на нуле включаем все светодиоды ; Если значение счетчика ШИМ достигло LED1_*** то выключаем нужные светодиоды T0_red: lds r27, LED1_RED cp r26, r27 brne T0_green sbr r25, 0x01 ; Отключам RED T0_green: lds r27, LED1_GREEN cp r26, r27 brne T0_blue sbr r25, 0x02 ; Отключам GREEN T0_blue: lds r27, LED1_BLUE cp r26, r27 brne T0_exit sbr r25, 0x08 ; Отключам BLUE T0_exit: out PortD, r25 ; Увеличиваем счетчик ШИМ inc r26 sts COUNT_PWM, r26 pop r27 pop r26 pop r25 reti Этот код отлично работает! Светодиод горит как нужно. Проблема заключается в том что у меня еще на контроллере висит дисплей, датчик температуры, и еще кое какие фентиплюшки. И из за того что я использую регистры в таймере T0, у меня временами глючит дисплей, так как для передачи данных дисплею эти регистры используются. 1. Так вот, в программе часто используется delay, соответственно, код из таймера я ни как не могу перенести в программу, потому что из за задержки светодиод гаснет! 2. Я не могу перенести выводы светодиода на встроенные ШИМ контроллера, так как они уже заняты. 3. Я пробовал все регистры от r16 до r31. Все равно, дисплей глючит. Как мне сделать такой ШИМ что бы не трогать регистры?
  5. Я не про закон Ома, я про то что без каких то спец формул, даже не знаю как сказать, То есть при разработке схем так везде придется чисто логическим путем доходить? Сто процентных формул на каждый случай нет? Или какого то обобщения? Стандартизации? Это не легко... Просто сложные схемы например с конденсаторами я так не понимаю.... Например вот эта схема на проверку кварцевого резонатора мне очень интересна, но я не понимаю суть этих натыканых конденсаторов...
  6. Подскажите, правильно ли я рассчитываю эту схему? Просто без учителя очень трудно понимать. Значит я рассчитываю так: Светодиод у меня с падением напряжения 1,9В и токе 8 мА. Стабилитрон у меня 3,5В и номинальным током 8 мА Нужно соответственно сделать так что бы и на стабилитроне и на светодиоде был нужный ток. так как по закону Кирхгофа сумма исходящих токов из узла равна сумме входящих, я суммирую 8+8= 14 мА Значит рассчитываем сопротивления R1 так, (5В-3,5В) / 0,014А = примерно 100 Ом Теперь на стабилитроне будет аж 14 мА и 3,5В Идем дальше, подключаем светодиод и резистор и считаем точно так же (3,5В - 1,9В) / 0,008А = 200 Ом ( Но на практике у меня был только 220 Ом, вот я и воткнул в схему) А мощность на стабилитроне выходит P = I * U = ((5-3.5)/100 - 0.008(на светодиоде)) * 3,5 = 0,0245 Вт. Вот скажите я правильно рассчитал? Я просто логически это вывел, без каких то формул и объяснений, потому что толком не нашел. Очень сложно так.. Но интересно
  7. Всем привет, имеется LCD St7920, подключенный в данный момент к ATMEGA8. Программирую на ассемблере. Работаю в текстовом режиме. По даташиту написал для него небольшой драйвер. В общем все работает, но вертикальная прокрутка не работает! Я просто не понимаю как ей пользоваться. В даташите сказано что нужно включить режим extended instruction, я включаю. Далее разрешаю прокрутку командой 0 0 0 0 0 0 0 0 1 1. Затем вывожу команду нулевого адреса прокрутки 0 0 0 1 0 0 0 0 Затем вывожу текст, и в этот момент все отлично! Но вот стоит мне только изменить адрес прокрутки например так 0 0 0 1 0 0 0 1 то картинка исчезает! Объясните мне как использовать адрес прокрутки, я 2 дня понять не могу!
  8. Привет всем, вот купил такой вот дисплей хочу спросить у вас, где на него взять подробную информацию Подойдет ли описания работы с http://easyelectroni...ya-hd44780.html этой статьи? Нашел еще описания выводов Вопрос, теперь где вообще находить подробнейшие описания на мониторчик? Хочу использовать параллельный режим 4 бита, будет ли он работать по обычному протоколу как в статье которую я дал?
×
×
  • Создать...