debian 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Всем привет, помогите разобраться с 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 бит я зню... но мне не одного не пришло :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба уже все перепробывал, не идет и все... скорее всего намудрил что-то вообше не то :) Мануал придется почитать еще - намудрили. Вот хотя бы: 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 при чтении? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
debian 0 4 марта, 2008 Опубликовано 4 марта, 2008 · Жалоба Подскажите, пожалуйста как правильно сие дело оформить? чтобы я хоть понял от чего отталкиваться...напимер как сделать так чтобы винт всетаки начал отправлять информацию о себе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться