atmega32 i sle4428

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

atmega32 i sle4428

Post autor: DarkJarek » 02 maja 2008, 19:03

Witam, mam kolejny problem tym razem z sle4428. Już 3 dni się z tym męcze. Mam taki kod:

Kod: Zaznacz cały

#include "macros.h"
#include <avr/io.h>
#include "rs232.h"

#define SLE4428_PORT			PORTC
#define SLE4428_PIN			PINC
#define SLE4428_DDR			DDRC
#define SLE4428_CLK			7
#define SLE4428_IO			6
#define SLE4428_RST			5

#define SLE4428_WRITE()			{SLE4428_DDR |= (1<<SLE4428_IO);}
#define SLE4428_READ()			{SLE4428_DDR &= ~(1<<SLE4428_IO);}

#define SLE4428_CMD_WRITE_PB		0x31
#define SLE4428_CMD_WRITE_EC		0x32
#define SLE4428_CMD_WRITE		0x33
#define SLE4428_CMD_READ_PB		0x0C
#define SLE4428_CMD_READ		0x0E

void sle4428_init(void)
{
	SLE4428_DDR |= (1<<SLE4428_CLK) | (1<<SLE4428_RST) | (1<<SLE4428_IO); // ustaw CLK, RST, IO jako wyjścia

	//reset
	LOW(SLE4428_PORT,SLE4428_RST)
	LOW(SLE4428_PORT,SLE4428_CLK)
	_delay_us(6);
	HIGH(SLE4428_PORT,SLE4428_RST)
	_delay_us(8);
	HIGH(SLE4428_PORT,SLE4428_CLK)
	_delay_us(12);
	LOW(SLE4428_PORT,SLE4428_CLK)
	_delay_us(8);

	LOW(SLE4428_PORT,SLE4428_RST) // tryb danych
	SLE4428_READ() // odczyt - IO jako wejście
	_delay_us(10);

	//odczyt atr karty
	for(int i=0; i<32; i++)
	{
		HIGH(SLE4428_PORT,SLE4428_CLK) //zegar w górę
		_delay_us(4);
		
		if(SLE4428_PIN & (1<<SLE4428_IO)) // odczytaj bit
			rs232_putc('1');
		else
			rs232_putc('0');
			
		_delay_us(12);
		HIGH(SLE4428_PORT,SLE4428_CLK) // zegar w dół
		_delay_us(12);
	}
	rs232_puts("\n");
}
Jest to jak widać reset-answer-to-reset.
Linię I/O mam podciągniętą do +5 zewnętrzym rezystorem.
Podczas wywołanie tej procedury jako atr dostaję same jedynki.
Tak jak by karta nie odpowiadała.
Może ktoś mi coś poradzi.

ODPOWIEDZ