Перейти к содержанию
    

PIC18F452 + IDE HDD

Всем привет, помогите разобраться с IDE интерфейсом

Читал мануал то стандарту АТА написал программу которая должна читать информацио о винте IDENTIFY DEVICE...

вот что получилось:

 

#include <pic18.h>
#include "delay.h"

#define hdd_data_port_low (PORTC)
#define hdd_data_port_hi (PORTD)
#define hdd_da0 (RB0)
#define hdd_da1 (RB1)
#define hdd_da2 (RB2)
#define hdd_cs1 (RB3)
#define hdd_cs3 (RB4)
#define hdd_diow (RB5)
#define hdd_dior (RB6)
#define hdd_iordy (RB7)

void init(void);
void main(void){
    init();
    hdd_cs1 = 1; // Data register...
    hdd_cs3 = 0;
    hdd_da2 = 0;
    hdd_da1 = 0;
    hdd_da0 = 0;
    hdd_data_port_low = 0xEC; // IDENTIFY DEVICE command...
    DelayMs(10);
    hdd_diow = 0x00;
    DelayMs(10);
    hdd_diow = 0x01;
    TRISC = 0xFF;
    TRISD = 0xFF;
            if (hdd_iordy) { //читаем результат...
    hdd_diow = 0x00;
    DelayMs(10);
    hdd_diow = 0x01;
    DelayMs(10);
    }    
            while(1);
    }
void init(void){
    TRISB = 0b10000000;
    TRISC = 0x00;
    TRISD = 0x00;
    PORTC = 0;
    PORTD = 0;
    hdd_dior = 0x01;
    hdd_diow = 0x01;
    }

 

уже все перепробывал, не идет и все...

скорее всего намудрил что-то вообше не то :)

поясните как делать это по человечески

 

ЗЫ листинг просто показывает что за чем я делал...то, что результат порядка 250 бит я зню...

но мне не одного не пришло :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

уже все перепробывал, не идет и все...

скорее всего намудрил что-то вообше не то :)

Мануал придется почитать еще - намудрили. Вот хотя бы:

    hdd_cs1 = 1; // Data register...
    hdd_cs3 = 0;
    hdd_da2 = 0;
    hdd_da1 = 0;
    hdd_da0 = 0;
    hdd_data_port_low = 0xEC; // IDENTIFY DEVICE command...

Зачем писать команду в регистр данных?

 

            if (hdd_iordy) { //читаем результат...
    hdd_diow = 0x00;
    DelayMs(10);
    hdd_diow = 0x01;
    DelayMs(10);
    }

И дергать IOWR при чтении?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, пожалуйста как правильно сие дело оформить?

чтобы я хоть понял от чего отталкиваться...напимер как сделать так чтобы винт всетаки начал отправлять информацию о себе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...