dubrovkin
Members-
Постов
133 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент dubrovkin
-
Я все сообщения читаю. Просто у меня не всё ПО есть. И ассемблер у меня другой. Но я займусь этим. Там же весь код влез в картинку? Прошил я USBasp последней прошивкой с того сайта. Предварительно извлёк то, что было и на первом программаторе и на втором. А потом я скачал все прошивки, что были на сайте. Я не говорю про содержимое, но даже по размеру эти две ни с чем не совпали (как и между собой). У меня такой вопрос, не могли же они прошиты быть ещё чем-то. Скорее, может быть то, как у них на сайте собран hex от Intel, не совпадает с hex от Intel, который выдаёт avrdude? То есть, я сам формат не изучал, может быть он не строгий, а вольный. Скажем, один и тот же результат, может быть достигнут разным текстом. Скажем, это как в коде на ассемблере/C/C++ и так далее, использовать знаки форматирования и видеть что размер будет разный, а делать одно и то же. С hex от Intel та же история? Или же он строгий формат и раз у меня размеры не сошлись, то и прошивки значит что-то другое делают? Ну и ещё, так и не понятно, почему микроконтроллер выдаёт какую-то хрень от 20 МГц.
-
Не. А что это за прога? Proteus? Я слышал что Proteus хорошая программа, но её же не купить сейчас. А что это за ассемблер такой удобный? Смотрю команды могут быть на одной строке. А так, я не знаю что это за код и для какой он частоты. Там вообще написано и текст WS2818 и текст WS2812. Разбери там что для чего.
-
Да там что-то годик старый. Неужели, покупая программатор 5-6 лет назад, на нём может быть прошивка, которая ещё старее, чем новейшая, вышедшая 6 лет назад от покупки программатора? Тем более, это же официальный програматор. А китайский там, я хз, совместимо ли всё.
-
@Геннадий , в общем прошил микроконтроллер вашей прошивкой. Не менял её. Сам микроконтроллер прошил на новый младший фьюз 0b01111010. Подключаю и не работает. По осциллографу вижу, что при нажатии кнопки там бегут импульсы, то есть сам микроконтроллер работает и что-то отсылает. Так вот, подаю питание и в большинстве случаев светодиод не горит. Я включал раз 10. Один раз он загорелся белым. 1-2 раза он (при включении) быстро моргнул красным и потух. Нажатие кнопки ничего не меняет. Так же как и её удержание. Правда, один раз, когда загорелось белым, я кнопку всё-таки нажал (только не помню держал или нет). И белый цвет начал меняться (ярче что ли становиться). Но я не стал ждать конца, выключил. Включил заново и больше не смог поймать такого состояния, чтобы светодиод светился белым и чтобы кнопка что-то меняла. Интересная вещь. Я всё прошивал китайским клоном USBasp. Когда-то давно приделал к нему ножки на JP3 и замкнул перемычкой. Вот на днях достал новый китайский USBasp (только распаковал). И так же приделал к нему всё то же, что и прошлому. Но, первый прошивает микроконтроллер, котому нужно внешнее тактирование (да, тактирование от другого микроконтроллера идёт), а второй не прошивает. Может быть у них разная прошивка. Вообще, это же китайский клон. Где ему прошивку достать?
-
Тогда почему на выводе (5 ножка) микроконтроллера полный бред? Код я прилагал. Вроде нормальный. То есть, по логике, в равной степени должен меняться уровень сигнала. Но там не так.
-
Это я замерял напряжение, фиксируя щупы осциллографа на 4 и 8 ножках микроконтроллера.
-
В общем, вот что получилось. Но про 500 мВ я не читал к тому моменту, в общем деление у меня по 100 мВ (если про это имеется в виду под чувствительностью). В начале просто как оно выглядит без питания на 100 нс: Оно же, но на 1 мс: А теперь включаю питание и выставляю на 100 нс: Оно же, но на 1 мс: А вот так, когда осциллятор на 20 МГц отключен (не подаётся питание):
-
Так. Теперь хоть узнал что у него есть три режима: AD, DC и GND. Интересно, что это за режим земли такой. В общем что получается, если я даже просто питание не подаю, у него уже линия не прямая, есть помехи какие-то, всё дрожит в пределах +/- 20 мВ. А когда подаю питание, то начинается каша. Напряжение в режиме AD уходит от 0 аж на 300 мВ.
-
А что значит закрытый вход?
-
Там тоже всё на на том же уровне (5 В). Вроде показывает осциллограф там колебания какие-то (или уже я так придирчиво). В общем, там всё на уровне 5 В, если что-то и колеблется, то на уровне, я хз, нановольт. Но это на вскидку.
-
Попробую. На клеммы БП.
-
Подключил осциллограф сразу к питанию. Всё стабильно, всегда 5 В. Ничего не прыгает. Просто ровно. Это не помогло. Нет, я думал эта прошивка предназначалась для 20 МГц. А блок питания вот этот.
-
Так, ну про передвинуть ближе я забыл. Конденсатор поставил. А вот несколько картинок вывода:
-
Под процессором подразумеваете микроконтроллер? Что за конденсатор на пины питания микроконтроллера? У меня там стоит один, он вообще для осциллятора был предназначен.
-
Да генератор на 20 МГц. У продавца он ещё назывался активный кварцевый резонатор. Напряжение питания 5 В. Не знаю про какие пульсации. Когда запускаю, там жесть что творится.
-
Но честно говоря, я что-то не понимаю. Вот залил я на испытываемую 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 не справляется. Но как так. Что сделать-то нужно?
-
Блин, он же и так 0. Это...ну да, я понял. Спасибо. Так, спасибо за помощь @donec и @Геннадий . Результат такой: прошивается и от 200 КГц и от 1.6 МГц и от 4.8 МГц, но только если JP3 замкнуть (то есть работа от 8 КГц). Если JP3 не замкнуть (работа от 375 КГц), то не прошивается. Ещё показалось (но могу ошибаться, просто по памяти), что когда я пробовал от 200 КГц, то быстрее прошивка залилась, чем когда попробовал от 4.8 МГц.
-
.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
-
Так, а что-то странно. Он меняет сигнал, каждые 200 нс. А я ожидал что каждые 100 нс будет. То есть, получается, что вместо 4.8 МГц, он выдаёт 2.4 МГц. Я где-то ошибся или больше и не выжать с него? Это конечно больше, чем 1.6 МГц, но всё же.
-
Да, я ошибся. Во второй раз я указал снова TCCR0A, хотя нужно TCCR0B. А вот что же получается. Если для прошивки микроконтроллера, он должен работать в 4 и более раз быстрее чем подаваемый на SPI сигнал, то...если прошить фьюзы так, чтобы микроконтроллер работал от внутреннго RC-генератора на 128 КГц и включить деление на 8, то в итоге микроконтроллер будет работать на 16 КГц. А USBasp (у меня китайский клон), позволяет переключать скорость между 8 КГц и 375 КГц. Так вот, это что, значит через этот программатор его уже не прошить? Ну и всё-таки, что же он тогда стеснялся от 20 МГц прошиваться. То есть ему нужно не только в 4 раза больше, но и не больше какого-то значения что ли.
-
А направление пинов через 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 Но что-то никакого сигнала нет. Что я упустил?
-
Ну это же и есть ШИМ? Я просто про ШИМ в ATtiny13A пока ничего не читал. Я так понимаю, там пин не выбирается, там заранее определённый уже на это. А COMnx[1:0] = 1, это как раз с частотой в 4.8 МГц.
-
Так если таймер сделать в CTC режиме...а кто будет сигнал менять?
-
А мне говорили, что нужно ещё не хилое так время, чтобы вошли в прерывание, вышли...то есть получится куда затратнее чем сделать просто в цикле. Вроде есть ещё вариант сделать через ШИМ, но пока и так работает.
-
В общем получилось прошить. Когда JP3 не замкнут, частота 375 КГц и не прошивается. Но замкнув, сделав 8 КГц, стало прошиваться, когда такты идут на 1.6 МГц. Мой код всё равно творит дичь. Слишком быстро всё моргает не понятно чем. Проверил Ваш код. С 3 ножки снимаю вывод и на микросхему. А на 5 ножку подключил кнопку (я так понял там на неё подтягивающий резистор), так что я соединил её с минусом. В общем, при включении там, вроде сначала ничего, потом быстро (в общем-то мгновенно что ли) загорается белый. Один раз, ждал и там, вроде что-то типа фиолетового получилось. А кнопку и нажимал и держал, вообще не понимаю изменяется ли что-то (не видно). Так почему 3.2 МГц? Он же 3 такта меняет уровень сигнала. Затем ещё 3 такта и снова меняет. То есть, полный цикл 6 тактов.