prepojenie PIC a CDROM cez ATA

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#16 Příspěvek od mikollar »

precitat prave ze neviem, zadame sector count = 1 adresy a hlavy , LBA mod ale stale po precitani sektora to hodi inu hodnotu
Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 00:00
Bydliště: PB, SVK

#17 Příspěvek od Kado »

Takto: aky mas HDD?
ked chces precitat sektor musis postupovat takto:
najprv zistit precitanim z registra "status" bit "busy" a cakat az pokial ho HDD nastavi do log.0
potom zapises do prislusnych registrov hodnoty napr. citame sektor 0 LBA=0
register "head" #1110xxxxb =>LBA, HDD MASTER a kde xxxx su najvysie 4bity z 28bitovej LBA adresy
register "cylinder msb" bity 23 az 16 LBA adresy
register "cylinder lsb" bity 15 az 8 LBA adresy
register "sector" bity 7 az 0 Z LBA adr
register "sector counter" obsahuje pocet sektorov kt. chces precitat ak zadas #0 tak musis precitat 256 sektorov, ak zadas #1 tak sa precita jeden sektor
-ked mas toto zapisane zapise do registra "command" cislo prikazu read= #10h
-teraz musis cakat minimalne 400ns na spracovanie
potom citas z registra "status" bity DRQ a BSY, pricom DRQ musi byt log.1 a BSY musi byt log.0, a este bit ERROR musi byt v log.0, inak nemozes pristupit k citaniu dat
ak su spominane bity ok, tak pristupujes k citaniu dat pricom si treba uvedomiz, ze zbernica je 16bitiva, to znamena ze po kazdom "read pulze" precitas 2bajty a ty potrebujes precitat cely sektor tj 512byte, preto musis citane opakovat celkovo 256krat...
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#18 Příspěvek od mikollar »

jaaaj ja som ale vol ja som myslel že ked dam 1 tak staci precitat data register raz :oops: , nieje ta hodnota 20h na precitanie? http://elektronika.kvalitne.cz/ATMEL/necoteorie/IDEtesty/rizeni_CF_HDD.html
Teraz uz chapem tomu co je tam pisane

Idm to vyskusat, dakujem za vysvetlenie

EDIT: HDD mam 2,5GB western digital.

dakujem za uistenie na ten prikaz 20h
Naposledy upravil(a) mikollar dne 02 pro 2007, 21:37, celkem upraveno 1 x.
Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 00:00
Bydliště: PB, SVK

#19 Příspěvek od Kado »

Sorry prikaz "read sector" je hodnota #20h, "write sector" je #30h atd
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#20 Příspěvek od mikollar »

#1110xxxxb ak to zadam takto tak HDD sa zacne vypinat #0110xxxxb CRC musim nechat zapnute vtedy sa nevypina, ale data odtial nie a nie dostat, este idem sprtat dalej
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#21 Příspěvek od mikollar »

mam tento problem. zapisem udaje sector sector count ... atd.
Do comand registru zapisem 30H cakam 400ns
otestujem BUSSY a DRQ ak su 0 a 1 zvolim adresu DATA REGISTER, na datove vodice privediem data a signal RW stiahnem na LOG0 cakam 400ns RW signal spat do LOG1 a odteraz somnou prestane HDD komunikovat.

Prikladam asm kod pre zapis: WAIT je cakanie odpocitava sa register naplneny hdnotou 255 do 0.

Na PORTD su privedene vodice A0 A1 A2, A0 je PORTD,0 , A1 je PORTD,1 , A2 je PORTD,2

Hodnoty adries mam ulozené tu:

MOVLW B'00000000'
MOVWF DATA_R

MOVLW B'00000010'
MOVWF COUNT_R

MOVLW B'00000011'
MOVWF SECTOR_R

MOVLW B'00000100'
MOVWF LOW_R

MOVLW B'00000101'
MOVWF HI_R

MOVLW B'00000110'
MOVWF DHR_R

MOVLW B'00000111'
MOVWF STATUS_R

_WR EQU 0 ;port 0
_RD EQU 1 ; port 1

Prosim v com moze byt problem resp. kde robim chybu?

Dakujem

P.S. vodice CS0 a CS1 su trvalo pripojene na GND a +5V


Kód: Vybrat vše

WRITE


      BSF         STATUS,RP0
      MOVLW       .0
      MOVWF      TRISB
      BcF         STATUS,RP0

   ;--------30H DO COMMAND REG ----------------------------
   
       MOVFW      STATUS_R    ;do comand registru
      MOVWF      PORTD

      MOVLW      30H         ;zapis
      MOVWF      PORTB

      bcf         PORTE,_WR   ;POTVRD/ZAPIS

      CALL      WAIT
      CALL      WAIT

      BSF         PORTE,_WR   ;POTVRD/ZAPIS

ZAPIS   CALL      WAIT
      CALL      WAIT
      CALL      WAIT
      CALL      WAIT
      CALL      WAIT

        CALL      BUSSY         ;zisti bussy 0
        call      DRQ                  ;zisti DRQ 1
      
      MOVFW      DATA_R      ;zvolit DATA REGISTER
      MOVWF      PORTD

      MOVLW      .0               ;hodnota do DATA REGISTRU
      MOVWF      PORTB

      bcf         PORTE,_WR   ;POTVRD/ZAPIS

      CALL      WAIT
      CALL      WAIT
      CALL      WAIT
   
      
      BSF         PORTE,_WR   ;POTVRD/ZAPIS

      DECFSZ      TMP3,F            ;TMP3 hodnota 0 pre zopakovanie 256 krat
      GOTO      ZAPIS

      


      RETURN
Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 00:00
Bydliště: PB, SVK

#22 Příspěvek od Kado »

mikollar píše:Do comand registru zapisem 30H cakam 400ns

pri citani sektora z hdd zapisujes do command registru 20h anie 30h!
inak ak ides citat z data registra resp.ostatnych registrov, tak pouzijes riadiaci signal "IORD" tj. z log.1 do Log.0 a zas do log.1, ak ides zapisovat do registrov tak na zapis pouzijes signal "IOWR" z klud. stavu tj. log.1 do log.0 a znova do log.1 atd...
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#23 Příspěvek od mikollar »

citanie mi ide aspon dufam teda, tento program je na zapis a to mi nejde stlae sa to sekne

dakuje za vsetky rady
Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 00:00
Bydliště: PB, SVK

#24 Příspěvek od Kado »

najprv dobre sprav citanie z HDD, a potom sa pustaj do zapisu, ten je zrejme zlozitejsi, ja osobne nemam este vyskusany zapis sektora do hdd...myslim, ze chces z toho spravit mp3 prehravac, takze si myslim, ze na zaciatok citanie staci a este bude zaujmave rozlusknut suborovy sytem FAT16 resp FAT32...
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#25 Příspěvek od mikollar »

okis tak skusim naformatovat HDD v PC snad sa mi to podari na FAT16 na strnake co je tu v otkaze je to pisane tak to skuim cez to, a skusim precitat uvodne sektory.
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#26 Příspěvek od mikollar »

skusil som precitat LBA 0 , vsetkych 512B, stale mi to hadze hodnotu 58h, len na 2 miestach to vyhodi hodnotu 5Ah, HDD je naformatovany na 2 partition FAT16

Zbytok programu je v predchadzajucom prispevku

Mam chybu v zadavani dat do HDD v programe?

Dakujem

Kód: Vybrat vše

READ

BSF      STATUS,RP0
MOVLW .0
MOVWF   TRISB
BcF      STATUS,RP0

   ;--------20H DO COMMAND REG ----------------------------
   
       MOVFW      STATUS_R   
      MOVWF      PORTA

      MOVLW      20H         ;CITAJ
      MOVWF      PORTB

      bcf         PORTE,_WR   ;POTVRD/ZAPIS

      CALL      WAIT

      BSF         PORTE,_WR   ;POTVRD/ZAPIS

      CALL      WAIT
   

CITAJ   CALL      BUSSY
      call      DRQ
      
      BSF      STATUS,RP0
      MOVLW .255
      MOVWF   TRISB
      BcF      STATUS,RP0
   
      MOVFW      DATA_R   
      MOVWF      PORTA

      bcf         PORTE,_RD   ;POTVRD/ZAPIS

      CALL      WAIT
      CALL      WAIT
      CALL      WAIT
      MOVFW      PORTB     ;POSLI DOLNYCH 8 BITOV NA RS232
      CALL      SER_TX

      MOVFW      PORTD   ;POSLI HORNYCH 8 BITOV NA RS232
      CALL      SER_TX

      BSF         PORTE,_RD   ;POTVRD/ZAPIS

      CALL      WAIT
      
      DECFSZ      TMP3,F
      GOTO      CITAJ

      BSF      STATUS,RP0
      MOVLW .0
      MOVWF   TRISB
      BcF      STATUS,RP0

      RETURN
Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 00:00
Bydliště: PB, SVK

#27 Příspěvek od Kado »

No to neviem ci mas chybu v programe, ale ked precitas MBR (LBA=0) tak posledne dva bajty obsahuju signaturu 55h a AAh...
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#28 Příspěvek od Jirka »

Tak jak, už to hraje?
*****
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#29 Příspěvek od mikollar »

este nie :oops: ,mal som trocha viac povinnosti v skole (skusky), ale pracujem na tom, ak sa to podari hodim sem komplet dokumentaciu
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“