реклама на сайте
подробности

 
 
> USB-blaster на ATmega8, Вопрос по назначению битов
BSACPLD
сообщение Oct 22 2006, 17:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Нашел в Интернете следующую ссылку.
http://njnmnp.narod.ru/usbblaster/usbblaster.html
Решил повторить, но заменить EPM3064 микроконтроллером ATmega8.
После подключения устройство определяется как Altera USB-blaster,
но при попытке прошить EPM7064 выдает ошибку.
В связи этим решил спросить у Вас о назначении битов и начальном состоянии выводов.

Выход.
D0 - TCK
D1 - TMS
D2 - не используется в режиме JTAG
D3 - не используется в режиме JTAG
D4 - TDI
D5 - ?
D6 - ?
D7 - ?

Вход.
D0 - TDO
D1 - не используется в режиме JTAG
D2-D7 - отправляем то же, что и было

Начальное состояние выводов Z или
D0 - 0
D1 - 1
D2 - 1
D3 - 1
D4 - 1
D5 - ?


.include "m8def.inc"

.def temp =r16
.def in_reg =r17
.def out_reg =r18

.equ RXF =PC2
.equ TXE =PC3
.equ WR =PC4
.equ RD =PC5

.equ LED =PB5


.cseg

.org 0
rjmp begin


.org 0x100
begin:
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp ; Установка адреса стека.

wdr
ldi temp,(1<<WDCE)|(1<<WDE)
out WDTCR,temp
ldi temp,(0<<WDE)
out WDTCR,temp ; Выключение WDT.

ldi temp,0b00011110
out PORTB,temp
ldi temp,0b00101111
out PORTC,temp
clr temp
out PORTD,temp

ldi temp,0b00111111
out DDRB,temp ; Инициализация порта B
ldi temp,0b00110000
out DDRC,temp ; Инициализация порта C
clr temp
out DDRD,temp ; Инициализация порта D

clr in_reg
clr out_reg

start:
loop_RXF:
sbic PINC,RXF
rjmp loop_RXF

cbi PORTC,RD
nop
nop
nop
nop
in in_reg,PIND
sbi PORTC,RD

mov temp,in_reg
in out_reg,PINC
andi out_reg,0b00000011
andi temp, 0b11111100
or out_reg,temp
out PORTD,out_reg

loop_TXE:
sbic PINC,TXE
rjmp loop_TXE

ser temp
out DDRD,temp
sbi PORTC,WR
nop
nop
nop
nop
cbi PORTC,WR
clr temp
out DDRD,temp

mov temp,in_reg
com temp
andi temp,0b11000000
brne led_on
led_off:
mov temp,in_reg
ori temp,(1<<PB5)
andi temp,0b00111111
out PORTB,temp
rjmp start
led_on:
mov temp,in_reg
andi temp,0b00011111
out PORTB,temp
rjmp start

.exit

С уважением, Сергей.

Сообщение отредактировал BSACPLD - Oct 22 2006, 17:51
Прикрепленные файлы
Прикрепленный файл  sxema.pdf ( 56.93 килобайт ) Кол-во скачиваний: 697
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BSACPLD
сообщение Nov 2 2006, 20:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Тему "USB byte blaster, нужна схема" читал.
Перепробовал разные варианты - пока не работает.
У меня возникли следующие вопросы:
1) опрос вывода TDO необходимо производить до записи в выходную
защелку или после?
2) если бит 6 = '0', то ничего не нужно отправлять или же просто не
обращать внимание на значение вывода TDO?

Кстати эта EPM7064S нормально работала с ByteBlasterMV на 74AC244 и
почему-то наотрез отказывалась работать с ByteBlasterMV на 74ABT244.


Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.
.include "m8def.inc"

.def temp =r16
.def in_reg =r17
.def out_reg=r18

.equ RXF =PC2
.equ TXE =PC3
.equ WR =PC4
.equ RD =PC5

.equ LED =PB5


.cseg

.org 0
rjmp begin


.org 0x100
begin:
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp ; Установка адреса стека.

wdr
ldi temp,(1<<WDCE)|(1<<WDE)
out WDTCR,temp
ldi temp,(0<<WDE)
out WDTCR,temp ; Выключение WDT.

ldi temp,0b00011110
out PORTB,temp
ldi temp,0b00101111
out PORTC,temp
clr temp
out PORTD,temp

ldi temp,0b00100000
out DDRB,temp ; Инициализация порта B
ldi temp,0b00110000
out DDRC,temp ; Инициализация порта C
clr temp
out DDRD,temp ; Инициализация порта D

clr in_reg
clr out_reg

start:
loop_RXF:
sbic PINC,RXF
rjmp loop_RXF

cbi PORTC,RD
nop
nop
nop
nop
in in_reg,PIND
sbi PORTC,RD

sbrs in_reg,5
rjmp tri
mov temp,in_reg
andi temp,0b00111111
out PORTB,temp
ldi temp, 0b00111111
out DDRB,temp
metka:
nop
nop
nop
mov out_reg,in_reg

sbrs in_reg,6
rjmp no_echo

mov temp,in_reg
in out_reg,PINC
andi out_reg,0b00000011
andi temp, 0b11111100
or out_reg,temp

no_echo:
loop_TXE:
sbic PINC,TXE
rjmp loop_TXE

ser temp
out DDRD,temp
sbi PORTC,WR
out PORTD,out_reg
nop
nop
nop
nop
cbi PORTC,WR
clr temp
out DDRD,temp

rjmp start

tri:
ldi temp,0b00100000
out DDRB,temp
mov temp,in_reg
andi temp,0b00111111
out PORTB,temp
rjmp metka

.exit
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Nov 4 2006, 11:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(BSACPLD @ Nov 3 2006, 00:25) *
1) опрос вывода TDO необходимо производить до записи в выходную
защелку или после?

До формирования отрицательного фронта TCK

Цитата(BSACPLD @ Nov 3 2006, 00:25) *
2) если бит 6 = '0', то ничего не нужно отправлять или же просто не
обращать внимание на значение вывода TDO?

Если бит 6 = '0', то не нужно опрашивать бит TDO и отправлять байт хост-контроллеру (в ПЭВМ)


Цитата(BSACPLD @ Nov 3 2006, 00:25) *
Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.

До сегодняшнего дня мне не приходилось работать с ATmega8. В ответ могу предложить разобраться с работающим кодом для C8051F320 (см. procedure USB2JTAG.txt).
Для выдачи и приема байтов используется SPI. Вместо SPI для приема и выдачи байтов по JTAG можно использовать MACRO (см. Read bit from TDO.txt)
Прикрепленные файлы
Прикрепленный файл  procedure_USB2JTAG.txt ( 3.82 килобайт ) Кол-во скачиваний: 395
Прикрепленный файл  Read_bit_from_TDO.txt ( 692 байт ) Кол-во скачиваний: 272
 
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Nov 5 2006, 20:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



[attachment=8085:attachment][attachment=8085:attachment]
Цитата(Konst_777 @ Nov 4 2006, 14:21) *
Цитата(BSACPLD @ Nov 3 2006, 00:25) *

Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.

До сегодняшнего дня мне не приходилось работать с ATmega8. В ответ могу предложить разобраться с работающим кодом для C8051F320 (см. procedure USB2JTAG.txt).
Для выдачи и приема байтов используется SPI. Вместо SPI для приема и выдачи байтов по JTAG можно использовать MACRO (см. Read bit from TDO.txt)


Уважаемый Konst_777!
Если вам нетрудно взгляните, пожалуста, на временные диаграммы того, что у меня получилось.
Правильно ли я разобрался в Вашем исходнике?
Возник еще один вопрос:
Когда на 5 бите '0' выходы обязательно переводить в 3-е состояние или их можно оставлять как есть?

Написал небольшую тестовую программу.
По идее она должна возвращать то же, что и в файле mylog.txt с сайта
http://njnmnp.narod.ru/usbblaster/usbblaster.html, но почему-то в место 0x7C возвращает 0x7D.
Может быть кто-нибудь у кого есть живой USB-blaster опробует ее и пришлет мне скриншот.
Тогда по крайней мере можно будет выяснить в каком направлении дальше искать ошибки.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Nov 6 2006, 20:45
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(BSACPLD @ Nov 6 2006, 00:37) *
Уважаемый Konst_777!
Если вам нетрудно взгляните, пожалуста, на временные диаграммы того, что у меня получилось.
Правильно ли я разобрался в Вашем исходнике?

Во-первых, на временной диаграмме отсутствует TMS. Во-вторых, хотелось бы видеть сигналы RXF# и TXE# FT245BM.
Теперь анализ диаграммы:
Если 0xC4 - это первый байт, который ATmega8 читает из FT245BM, то запись байта 0xC4 в FT245BM является ошибочной . Ее быть не должно. Байт 0xC4 означает, что ATmega8 нужно выдать через TDI следующие 4 байта, которые она считает из FIFO FT245BM. Так как бит 6 = "1", то нужно записывать в FT245BM значения битов, считанных с TDO. До завершения обработки данного формуляра TMS должен быть равен "0". ATmega8 правильно формирует все сигналы (отсутствует TMS) для данного формуляра.
Следующий формуляр начинается с байта 0x2C. Опять ATmega8 формирует ошибочную запись байта 0x2C в FT245BM. Байт 0x2C означает, что ATmega8 нужно установить сигналы TCK="0", TMS="0", TDI=0. Если не учитывать ошибочную запись и отсутствие на диаграмме TMS smile.gif , то ATmega8 правильно формирует все сигналы.
Следующий формуляр начинается с байта 0x7E. Поскольку бит 7 равен нулю и для этого формуляра, то это тоже формуляр прямого управления сигналами TCK, TMS, TDI. Однако, в отличие от предыдущего формуляра, у данного бит 6 равен "1". Это означает, что ATmega8 должна записать в FT245BM байт, младший бит которого равен состоянию TDO, а все остальные биты - равны нулю. TMS отсутствует на на диаграмме biggrin.gif. Сигналы TCK и TDI установлены правильно. Но вместо записи байта 0x01 записан байт 0x7D.
Ну и так далее.



Цитата(BSACPLD @ Nov 6 2006, 00:37) *
Возник еще один вопрос:
Когда на 5 бите '0' выходы обязательно переводить в 3-е состояние или их можно оставлять как есть?

Похоже это вопрос из темы USB byte blaster, нужна схема. Не знаю. Может быть Мисячный или khach знают ответ. Я не перевожу TCK, TMS, TDI в 3-е состояние.



Цитата(BSACPLD @ Nov 6 2006, 00:37) *
Может быть кто-нибудь у кого есть живой USB-blaster опробует ее и пришлет мне скриншот.
Тогда по крайней мере можно будет выяснить в каком направлении дальше искать ошибки.

Архив Blaster.rar содержит два файла.
Файл Logger_Real_Blaster.qar - архив проекта, созданный Quartus II ver.5.0. Проект содержит временную диаграмму работы USB Blaster-а, снятую с помощью SignalTap II Logic Analyzer. USB Blaster - из NIOS II Evaluation Kit - содержит только сигналы JTAG (не поддерживает AS Mode и PS Mode).
Файл Tester.JPG показывает, какие байты были выданы в USB Blaster и, какие байты были получены от него. Поскольку SignalTap II Logic Analyzer запускается по спаду (заднему фронту) сигнала TCK, на временной диаграмме отсутствуют первые два байта (2C2D). Выданные байты не являются реальным формуляром Quartus-а, их назначение - показать реакцию USB Blaster-а на возможные формуляры Quartus-а.

Сообщение отредактировал Konst_777 - Nov 7 2006, 18:09
Прикрепленные файлы
Прикрепленный файл  Blaster.rar ( 344.72 килобайт ) Кол-во скачиваний: 5582
 
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Nov 6 2006, 21:17
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Цитата(Konst_777 @ Nov 6 2006, 23:45) *
Во-первых, на временной диаграмме отсутствует TMS. Во-вторых, хотелось бы видеть сигналы RXF# и TXE# FT245BM.

Эти сигналы отсутствуют потому, что диаграмма снята не с реального устройства, а смоделирована в Proteus'е.

За объяснение работы диаграммы Вам большое спасибо.
Буду исправлять ошибки, но наверное уже утром, а то наверняка попалю чего-нибудь ненароком smile.gif.

Сообщение отредактировал BSACPLD - Nov 6 2006, 21:25
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BSACPLD   USB-blaster на ATmega8   Oct 22 2006, 17:50
- - vetal   Скачанный вами вариант usb-blaster не поддерживает...   Oct 22 2006, 18:19
|- - BSACPLD   Цитата(vetal @ Oct 22 2006, 22:19) Скачан...   Oct 22 2006, 18:30
- - vetal   1. Если вы посмотрите на 2 ваиант бластера, то вы ...   Oct 22 2006, 18:37
|- - BSACPLD   Цитата(vetal @ Oct 22 2006, 22:37) 1. Есл...   Oct 22 2006, 18:41
|- - Konst_777   Цитата(BSACPLD @ Oct 22 2006, 21:41) [Пон...   Oct 24 2006, 20:54
|- - Konst_777   Цитата(Konst_777 @ Nov 7 2006, 00:45) ......   Nov 7 2006, 18:26
- - BSACPLD   Ура! Заработало! Вот рабочий вариант Alte...   Nov 13 2006, 20:44
- - Tran   BSACPLD, спасибо за выложеный проект , я его пов...   Nov 27 2006, 12:03
|- - BSACPLD   Цитата(Tran @ Nov 27 2006, 12:03) BSACPLD...   Nov 28 2006, 11:27
- - WEST128   А будет ли данный программатор работать без логики...   Dec 5 2007, 14:14
|- - BSACPLD   Цитата(WEST128 @ Dec 5 2007, 17:14) А буд...   Dec 5 2007, 19:41
|- - des00   Цитата(BSACPLD @ Dec 5 2007, 14:41) По ид...   Dec 6 2007, 12:50
|- - BSACPLD   Цитата(des00 @ Dec 6 2007, 15:50) Добрый ...   Dec 6 2007, 15:53
- - WEST128   Цитата(BSACPLD @ Dec 6 2007, 01:41) По ид...   Dec 7 2007, 03:54
|- - BSACPLD   Цитата(WEST128 @ Dec 7 2007, 06:54) Спаси...   Dec 7 2007, 19:33
- - des00   Добрый день! Выкладываю верилог код для EPM3...   Dec 7 2007, 06:51
|- - alexf   Цитата(des00 @ Dec 6 2007, 22:51) Добрый ...   Dec 16 2007, 08:23
|- - des00   Цитата(alexf @ Dec 16 2007, 03:23) я синт...   Dec 17 2007, 03:55
|- - alexf   Цитата(des00 @ Dec 16 2007, 19:55) шарилс...   Dec 17 2007, 08:24
|- - des00   за VHDL спасибо, посмотрю на досуге. по асм коду...   Dec 17 2007, 10:28
||- - RYury   попробовал вериложный код для cpld от месячного и...   Dec 17 2007, 16:08
||- - des00   Цитата(RYury @ Dec 17 2007, 11:08) попроб...   Dec 18 2007, 03:59
|- - Konst_777   Цитата(alexf @ Dec 17 2007, 12:24) А вот ...   Jan 21 2008, 18:49
|- - alexander55   Тема очень интересная. С Altera вопросы решены, те...   Jan 22 2008, 07:32
|- - misyachniy   Решил и я попробовать NIOS Cyclone2. В моем вариан...   Jun 12 2008, 15:12
|- - Konst_777   Может быть, все это из за слишком длинного шлейфа ...   Jun 14 2008, 07:47
|- - misyachniy   Чудеса какие-то :-) Я делал еще вариант USB Blaste...   Jun 17 2008, 07:07
|- - BSACPLD   Цитата(misyachniy @ Jun 17 2008, 11:07) Ч...   Jun 17 2008, 16:18
|- - alexander55   Цитата(misyachniy @ Jun 17 2008, 11:07) ...   Jun 18 2008, 07:58
|- - misyachniy   Цитата(alexander55 @ Jun 18 2008, 10:58) ...   Jun 20 2008, 14:51
- - WEST128   Всем нравится, но ради интереса попробую сделать н...   Dec 8 2007, 18:12
- - des00   Занятно, но тоже самое (изменил поведение только о...   Dec 18 2007, 06:13
- - wired   Хочу повторить девайсину http://njnmnp.narod.ru/us...   Dec 30 2009, 09:22


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01497 секунд с 7
ELECTRONIX ©2004-2016