// *************************************************************************************************
//
//  Пример работы с микромодулем TAM1, установленным на модуле C167M-3U
//  
//	Микромодуль TAM1 настраивается как ОУ с адресом 10
//	В буфер передачи по подадресу 1 записываются 32 фиксированных слова 0001 0102 0304 и т.д.
//
//  Примечание:
//	Микромодуль TAM1 устанавливается не на все исполнения модуля C167M-3U!
//	Описание исполнений модуля C167M-3U приведено в РЭ или ТУ на этот модуль.
//
//	Среда разработки: Keil uVision5
//
// *************************************************************************************************


#include "c167m-3u.h"
#include "\DAvE_files\main.h"
#include <absacc.h> 

#define TAM1_Memory_Base_Adr 		0x10000		//  Базовый адрес микромодуля TAM1

void user_main(void)
{
	unsigned int i;
	
	TOGGLE_WDT;
	
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_REJ1]= 0x43C0; _nop_(); 		// режим работы - ОУ, разблокировали приемники/передатчики обоих каналов
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_REJ2]= 0x5000; _nop_(); 		// адрес ОУ - 10
					
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_ADR_MESS]	= 0x3FF; _nop_(); // регистр адреса сообщений -> адрес последнего блока (3FFh)
					
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_ADR_RAM]= 0xFFE1;	 _nop_(); // 3FFh<<6 + T/R бит<<5 + SA(подадрес) -> первый подадрес, от ОУ -> КК = FFE1h 
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_DATA_RAM]= 0x0000; _nop_(); // формируем начальный адрес перехода в таблице адресов блоков
					
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_ADR_RAM]= 0x0;	 _nop_(); 	// формируем слова данных			
	for(i=0;i<32;i++)		{ HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_DATA_RAM]= (i<<8)+(i+1);  _nop_(); }	
					
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_ADR_RAM]= 63;	 _nop_(); 		// формируем адрес перехода в блоке данных
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_DATA_RAM]= 0x0; _nop_(); 					
	
	HARRAY(int,TAM1_Memory_Base_Adr)[TAM1_REG_REJ1]= 0x43C8; _nop_();  		// запуск ОУ, режим работы - ОУ, разблокировали приемники/передатчики обоих каналов
					
	while(1!=0) TOGGLE_WDT;
	
}  
			

