BRNE.narod.ru

 
Главная | Проекты | Download | ГостеваяE-mail    
PDI XMEGA
2-проводной интерфейс для программирования и отладки PDI разработан компанией Atmel. Программирует Flash-память, EEPOM, Fuse-биты, Lock-биты и сигнатурный код пользователя. Частота синхронизации программирования 10 МГц при напряжении питания 1,8 В.

Схема макетной платы для программирования ATXMEGA (SCH)

Схема макетной платы для программирования ATXMEGA

Макетная плата XMEGA (PCB)

Макетная плата XMEGA

 

Рекомендуемая распиновка разъема PDI:

распиновка разъема PDI XMEGA

JTAGICE mkII поддерживает PDI если его серийник начинается с "B0..."

JTAGICE mkII probe Target pins Squid Cable Colours STK600 PDI pinout Пример: ATxmega_A4
Pin 1 (TCK)   Black    
Pin 2 (GND) GND White 6 GND (8)
Pin 3 (TDO)   Grey    
Pin 4 (VTref) VTref Purple 2 Vcc (9)
Pin 5 (TMS)   Blue    
Pin 6 (nSRST) CLK Green 5 PDI_CLK (35)
Pin 7 (Not connected)   Yellow    
Pin 8 (nTRST)   Orange    
Pin 9 (TDI) DATA Red 1 PDI_DATA (34)
Pin 10 (GND)   Brown    

Для разрешения работы PDI необходимо перевести линию PDI_DATA в высокое состояние на время больше минимальной длительности внешнего импульса сброса и далее удерживать в высоком состоянии 16 тактов PDI_CLK:

PDI_CLK > 10 кГц

Формат данных:

Старт, данные, контроль четности, стоп

Выборка данных происходит по нарастающему фронту PDI_CLK:

Драйвер выхода PDI_DATA активизируется только тогда, когда необходимо изменить состояние выхода из 0 в 1 или из 1 в 0. Остальное время выход драйвера находится в высокоимпедансном состоянии:

Минимальная задержка перехода из режима RX в режим TX равна двум циклам IDLE:

Контроллер PDI
Контроллер PDI ждет инструкции от программатора.

Для разрешения программирования энергонезависимой памяти необходимо передать инструкцию KEY и ключ 0x1289AB45CDD888FF.

Набор инструкций:

 

Программа моргания светодиодом (ассемблер, xmega32A4, светодиод на ножке PORTB)
.include "ATxmega32A4def.inc"

.def temp = R16

rjmp start

.org 0x0100
start:
cli
ldi temp,LOW(RAMEND) ;Init Stack Pointer
out CPU_SPL,temp
ldi temp,HIGH(RAMEND)
out CPU_SPH,temp

ldi temp, 0xFF
sts PORTB_DIR, temp

loop:
ldi temp, 0xFF
sts PORTB_OUT, temp
rcall delay
ldi temp, 0x00
sts PORTB_OUT, temp
rcall delay

rjmp loop

delay: push temp
ldi temp, 0xFF
delay2: rcall delay1
dec temp
brne delay2
pop temp
ret

delay1: push temp
ldi temp, 0xFF
delay0: dec temp
nop
nop
nop
brne delay0
pop temp
ret

 

Hosted by uCoz