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

dubrovkin

Members
  • Постов

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

  • Посещение

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

  1. Я все сообщения читаю. Просто у меня не всё ПО есть. И ассемблер у меня другой. Но я займусь этим. Там же весь код влез в картинку? Прошил я USBasp последней прошивкой с того сайта. Предварительно извлёк то, что было и на первом программаторе и на втором. А потом я скачал все прошивки, что были на сайте. Я не говорю про содержимое, но даже по размеру эти две ни с чем не совпали (как и между собой). У меня такой вопрос, не могли же они прошиты быть ещё чем-то. Скорее, может быть то, как у них на сайте собран hex от Intel, не совпадает с hex от Intel, который выдаёт avrdude? То есть, я сам формат не изучал, может быть он не строгий, а вольный. Скажем, один и тот же результат, может быть достигнут разным текстом. Скажем, это как в коде на ассемблере/C/C++ и так далее, использовать знаки форматирования и видеть что размер будет разный, а делать одно и то же. С hex от Intel та же история? Или же он строгий формат и раз у меня размеры не сошлись, то и прошивки значит что-то другое делают? Ну и ещё, так и не понятно, почему микроконтроллер выдаёт какую-то хрень от 20 МГц.
  2. Не. А что это за прога? Proteus? Я слышал что Proteus хорошая программа, но её же не купить сейчас. А что это за ассемблер такой удобный? Смотрю команды могут быть на одной строке. А так, я не знаю что это за код и для какой он частоты. Там вообще написано и текст WS2818 и текст WS2812. Разбери там что для чего.
  3. Да там что-то годик старый. Неужели, покупая программатор 5-6 лет назад, на нём может быть прошивка, которая ещё старее, чем новейшая, вышедшая 6 лет назад от покупки программатора? Тем более, это же официальный програматор. А китайский там, я хз, совместимо ли всё.
  4. @Геннадий , в общем прошил микроконтроллер вашей прошивкой. Не менял её. Сам микроконтроллер прошил на новый младший фьюз 0b01111010. Подключаю и не работает. По осциллографу вижу, что при нажатии кнопки там бегут импульсы, то есть сам микроконтроллер работает и что-то отсылает. Так вот, подаю питание и в большинстве случаев светодиод не горит. Я включал раз 10. Один раз он загорелся белым. 1-2 раза он (при включении) быстро моргнул красным и потух. Нажатие кнопки ничего не меняет. Так же как и её удержание. Правда, один раз, когда загорелось белым, я кнопку всё-таки нажал (только не помню держал или нет). И белый цвет начал меняться (ярче что ли становиться). Но я не стал ждать конца, выключил. Включил заново и больше не смог поймать такого состояния, чтобы светодиод светился белым и чтобы кнопка что-то меняла. Интересная вещь. Я всё прошивал китайским клоном USBasp. Когда-то давно приделал к нему ножки на JP3 и замкнул перемычкой. Вот на днях достал новый китайский USBasp (только распаковал). И так же приделал к нему всё то же, что и прошлому. Но, первый прошивает микроконтроллер, котому нужно внешнее тактирование (да, тактирование от другого микроконтроллера идёт), а второй не прошивает. Может быть у них разная прошивка. Вообще, это же китайский клон. Где ему прошивку достать?
  5. Тогда почему на выводе (5 ножка) микроконтроллера полный бред? Код я прилагал. Вроде нормальный. То есть, по логике, в равной степени должен меняться уровень сигнала. Но там не так.
  6. Это я замерял напряжение, фиксируя щупы осциллографа на 4 и 8 ножках микроконтроллера.
  7. В общем, вот что получилось. Но про 500 мВ я не читал к тому моменту, в общем деление у меня по 100 мВ (если про это имеется в виду под чувствительностью). В начале просто как оно выглядит без питания на 100 нс: Оно же, но на 1 мс: А теперь включаю питание и выставляю на 100 нс: Оно же, но на 1 мс: А вот так, когда осциллятор на 20 МГц отключен (не подаётся питание):
  8. Так. Теперь хоть узнал что у него есть три режима: AD, DC и GND. Интересно, что это за режим земли такой. В общем что получается, если я даже просто питание не подаю, у него уже линия не прямая, есть помехи какие-то, всё дрожит в пределах +/- 20 мВ. А когда подаю питание, то начинается каша. Напряжение в режиме AD уходит от 0 аж на 300 мВ.
  9. Там тоже всё на на том же уровне (5 В). Вроде показывает осциллограф там колебания какие-то (или уже я так придирчиво). В общем, там всё на уровне 5 В, если что-то и колеблется, то на уровне, я хз, нановольт. Но это на вскидку.
  10. Подключил осциллограф сразу к питанию. Всё стабильно, всегда 5 В. Ничего не прыгает. Просто ровно. Это не помогло. Нет, я думал эта прошивка предназначалась для 20 МГц. А блок питания вот этот.
  11. Так, ну про передвинуть ближе я забыл. Конденсатор поставил. А вот несколько картинок вывода:
  12. Под процессором подразумеваете микроконтроллер? Что за конденсатор на пины питания микроконтроллера? У меня там стоит один, он вообще для осциллятора был предназначен.
  13. Да генератор на 20 МГц. У продавца он ещё назывался активный кварцевый резонатор. Напряжение питания 5 В. Не знаю про какие пульсации. Когда запускаю, там жесть что творится.
  14. Но честно говоря, я что-то не понимаю. Вот залил я на испытываемую ATtiny13A (которая должна работать на 20 МГц) такой вот код: .equ DDRB,0x17 .equ PORTB,0x18 .equ SPL,0x3D .section .text .org 0x00 vectors: rjmp main ; RESET reti ; INT0 reti ; PCINT0 reti ; TIM0_OVF reti ; EE_RDY reti ; ANA_COMP reti ; TIM0_COMPA reti ; TIM0_COMPB reti ; WDT reti ; ADC main: cli ; Стек ldi R16,0x9F out SPL,R16 ; Направление пинов ldi R16,0b00000001 out DDRB,R16 ldi R16,0b00000000 out PORTB,R16 loop: ldi R16,0b00000000 out PORTB,R16 nop nop ldi R16,0b00000001 out PORTB,R16 rjmp loop Подключаю к ней осциллятор на 20 МГц. Запускаю. На 5 ножке хрен пойми что. Там не сигнал равномерный HIGH и LOW, Там вообще шифровка какая-то отправляется) Осциллятор проверял, он действительно выдаёт 20 МГц. Выглядит так, словно ATtiny13A не справляется. Но как так. Что сделать-то нужно?
  15. Блин, он же и так 0. Это...ну да, я понял. Спасибо. Так, спасибо за помощь @donec и @Геннадий . Результат такой: прошивается и от 200 КГц и от 1.6 МГц и от 4.8 МГц, но только если JP3 замкнуть (то есть работа от 8 КГц). Если JP3 не замкнуть (работа от 375 КГц), то не прошивается. Ещё показалось (но могу ошибаться, просто по памяти), что когда я пробовал от 200 КГц, то быстрее прошивка залилась, чем когда попробовал от 4.8 МГц.
  16. .equ DDRB,0x17 .equ PORTB,0x18 .equ TCCR0A,0x2F .equ TCCR0B,0x33 .equ TCNT0,0x32 .equ OCR0A,0x36 .equ OCR0B,0x29 .equ SPL,0x3D .section .text .org 0x00 vectors: rjmp main ; RESET reti ; INT0 reti ; PCINT0 reti ; TIM0_OVF reti ; EE_RDY reti ; ANA_COMP reti ; TIM0_COMPA reti ; TIM0_COMPB reti ; WDT reti ; ADC main: cli ; Стек ldi R16,0x9F out SPL,R16 ; Направление пинов ldi R16,0b00000001 out DDRB,R16 ; Установка переключения OC0A (ножка 5) и CTC (Clear Timer on Compare Match) ldi R16,0b01000010 out TCCR0A,R16 ; Совпадение каждый тик ldi R16,1 out OCR0A,R16 ; Частота таймера каждый тик ldi R16,0b00000001 out TCCR0B,R16 loop: rjmp loop
  17. Так, а что-то странно. Он меняет сигнал, каждые 200 нс. А я ожидал что каждые 100 нс будет. То есть, получается, что вместо 4.8 МГц, он выдаёт 2.4 МГц. Я где-то ошибся или больше и не выжать с него? Это конечно больше, чем 1.6 МГц, но всё же.
  18. Да, я ошибся. Во второй раз я указал снова TCCR0A, хотя нужно TCCR0B. А вот что же получается. Если для прошивки микроконтроллера, он должен работать в 4 и более раз быстрее чем подаваемый на SPI сигнал, то...если прошить фьюзы так, чтобы микроконтроллер работал от внутреннго RC-генератора на 128 КГц и включить деление на 8, то в итоге микроконтроллер будет работать на 16 КГц. А USBasp (у меня китайский клон), позволяет переключать скорость между 8 КГц и 375 КГц. Так вот, это что, значит через этот программатор его уже не прошить? Ну и всё-таки, что же он тогда стеснялся от 20 МГц прошиваться. То есть ему нужно не только в 4 раза больше, но и не больше какого-то значения что ли.
  19. А направление пинов через DDRB менять не нужно на выход, куда будет выходить сигнал таким образом? Что-то я похоже не правильно понял. Я думал как: Устанавливаем так, чтобы ножка 5 меняла свой уровень сигнала при совпадении. Устанавливаем режим CTC. Устанавливаем с каким числом сверяться. Запускаем таймер каждый тик. В общем-то так: ; Установка переключения OC0A (ножка 5) и CTC (Clear Timer on Compare Match) ldi R16,0b01000010 out TCCR0A,R16 ; Совпадение каждый тик ldi R16,1 out OCR0A,R16 ; Частота таймера каждый тик ldi R16,0b00000001 out TCCR0A,R16 Но что-то никакого сигнала нет. Что я упустил?
  20. Ну это же и есть ШИМ? Я просто про ШИМ в ATtiny13A пока ничего не читал. Я так понимаю, там пин не выбирается, там заранее определённый уже на это. А COMnx[1:0] = 1, это как раз с частотой в 4.8 МГц.
  21. Так если таймер сделать в CTC режиме...а кто будет сигнал менять?
  22. А мне говорили, что нужно ещё не хилое так время, чтобы вошли в прерывание, вышли...то есть получится куда затратнее чем сделать просто в цикле. Вроде есть ещё вариант сделать через ШИМ, но пока и так работает.
  23. В общем получилось прошить. Когда JP3 не замкнут, частота 375 КГц и не прошивается. Но замкнув, сделав 8 КГц, стало прошиваться, когда такты идут на 1.6 МГц. Мой код всё равно творит дичь. Слишком быстро всё моргает не понятно чем. Проверил Ваш код. С 3 ножки снимаю вывод и на микросхему. А на 5 ножку подключил кнопку (я так понял там на неё подтягивающий резистор), так что я соединил её с минусом. В общем, при включении там, вроде сначала ничего, потом быстро (в общем-то мгновенно что ли) загорается белый. Один раз, ждал и там, вроде что-то типа фиолетового получилось. А кнопку и нажимал и держал, вообще не понимаю изменяется ли что-то (не видно). Так почему 3.2 МГц? Он же 3 такта меняет уровень сигнала. Затем ещё 3 такта и снова меняет. То есть, полный цикл 6 тактов.
×
×
  • Создать...