Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



USB

Сообщений 1 страница 3 из 3

1

http://www.rlocman.ru/shem/schematics.html?di=51883

ребята посмотрите ссылочку, ничего не пойму. там тини подключается к юсб без кварца. как это возможно. программа на С. я в ней ничего не заметил про юсб. может чтото пропустил?

Код:
//-------------------------------------------------------------
// Module     : MAX7219.C
// Author     : Bob Carret 
// Copyright  www.bobhobby.com
// Description: MAX7219 LED Display Driver Routines for AVR
//-------------------------------------------------------------


#include <avr/io.h>
#include "max7219.h"                                  // MAX7219 header file

//------------------------
// Constants
//------------------------
#define REG_DECODE        0x09                        // "decode mode" register
#define REG_INTENSITY     0x0a                        // "intensity" register
#define REG_SCAN_LIMIT    0x0b                        // "scan limit" register
#define REG_SHUTDOWN      0x0c                        // "shutdown" register
#define REG_DISPLAY_TEST  0x0f                        // "display test" register

#define INTENSITY_MIN     0x00                        // minimum display intensity
#define INTENSITY_MAX     0x0f                        // maximum display intensity

#define DIN PB1
#define CLK PB3
#define LOAD	 PB4

#define DIN_1    PORTB |= (1<<PB1)
#define DIN_0    PORTB &= ~(1<<PB1)                          
#define CLK_1    PORTB |= (1<<PB3)
#define CLK_0    PORTB &= ~(1<<PB3)                          
#define LOAD_1   PORTB |= (1<<PB4)
#define LOAD_0   PORTB &= ~(1<<PB4)                          

static void MAX7219_Write (unsigned char reg_number, unsigned char data);
static void MAX7219_SendByte (unsigned char data);

//-------------------------
// MAX7219_Init()
//-------------------------

void MAX7219_Init (void)
{
  
  DDRB |= (1<<DDB1) | (1<<DDB3) | (1<<DDB4);

  MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits
  MAX7219_Write(REG_DECODE, 0xFF);  // set to "decode" for all digits
  MAX7219_Shutdown(1);              // select normal operation
  MAX7219_DisplayTest(0);           // select normal operation
  MAX7219_Brightness(INTENSITY_MAX);// set to maximum intensity
  MAX7219_Clear();
}



//-----------------------------------------------------
// MAX7219_Shutdown()
// Description: Start / Stop Shutdown mode.
// 0 = start
// 1 = stop
//-----------------------------------------------------
void MAX7219_Shutdown(char OnOff)
{
  MAX7219_Write(REG_SHUTDOWN,OnOff);  
}


//--------------------------------------
// MAX7219_DisplayTest()
// Description: Start / Stop a display test.
// 0 = stop
// 1 = start
//--------------------------------------
void MAX7219_DisplayTest(char OnOff)
{
  MAX7219_Write(REG_DISPLAY_TEST,OnOff);       
}


//--------------------------------------------
//MAX7219_SetBrightness()
// Description: Set the LED display brightness
// Arguments  : brightness (0-15)
// Returns    : none
//--------------------------------------------

void MAX7219_Brightness(char brightness)
{
  brightness &= 0x0f;                                 // mask off extra bits
  MAX7219_Write(REG_INTENSITY, brightness);           // set brightness
}


//-----------------------------------------------------------
// MAX7219_DisplayChar()
// Description: Display a character on the specified digit.
// Arguments  : digit = digit number (1-8)
//              character = character to display (0-9, A-Z)
// Returns    : none
//-----------------------------------------------------------
void MAX7219_DisplayChar(unsigned char digit, unsigned char character)
{
  MAX7219_Write(digit, character);
}

//-----------------------
// Clear Display
//-----------------------
void MAX7219_Clear(void)
{
  char i;
  for (i=1; i < 9; i++)
    MAX7219_Write(i, 0x0F);                           // turn all segments off
}

//------------------------------------------------
// MAX7219_Write()
//
// Description: Write to MAX7219
// Arguments  : reg_number = register to write to
//              dataout = data to write to MAX7219
// Returns    : none
//------------------------------------------------
static void MAX7219_Write(unsigned char reg_number, unsigned char dataout)
{
  LOAD_1;                                           // take LOAD high to begin
  MAX7219_SendByte(reg_number);                     // write register number to MAX7219
  MAX7219_SendByte(dataout);                        // write data to MAX7219
  LOAD_0;                                           // take LOAD low to latch in data
  asm("nop");
  LOAD_1;                                           // take LOAD high to end
}


//--------------------------------------------
// MAX7219_SendByte()
// Description: Send one byte to the MAX7219
// Arguments  : dataout = data to send
// Returns    : none
//--------------------------------------------
static void MAX7219_SendByte (unsigned char dataout)
{
  char i;

  asm("nop");
  for (i=0; i<8; i++) 
  {    
    CLK_0;   	// bring CLK low
	asm("nop");                                       
	if (dataout & 0x80){
	 	PORTB |= (1<<PB1); 
	}
	else{
	  	PORTB &= ~(1<<PB1);
	}
    dataout=dataout<<1;
    CLK_1;                      // bring CLK high
  }
}

0

2

Так и есть, без кварца. Но скорость обмена очень маленькая.

0

3

А кто реально использует камни с ЮСБ на борту? Поделитесь впечатлением.

0