PICcolino


Questa pagina ha una gerarchia - Pagina madre:Programmazione

Home Forum Programmazione PICcolino

Questo argomento contiene 4 risposte, ha 3 partecipanti, ed è stato aggiornato da stegemma stegemma 1 anno, 8 mesi fa.

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)
  • Autore
    Articoli
  • #10806

    lucaNaddei
    Membro

    Come già anticipato in chat PICcolino ha cominciato a macinare qualche partita.
    Avevo cominciato a scrivere sul PC un motore che potesse girare anche nelle ristrettezze di ram e rom di un microcontrollore, adesso piano piano l’ho portato sul micro ed ora si può ritenere “abbastanza stabile”.
    L’idea finale è quella di costruire una scacchiera elettronica, divisa in due unità logiche, quindi un micro che faccia da “motore” (anche intercambiabile) ed uno che gestisca l’interfaccia con i dispositivi di input (scacchiera, pulsanti) e di output (display, led di stato, buzzer).
    Per quanto riguarda il motore ho scelto di utilizzare un PIC24, un micro a 16 bit che può lavorare a 70Mhz ed ha un interessante codice macchina che gli fa eseguire qualunque istruzione in un ciclo di clock (moltiplicazioni comprese! Esclusi i salti che “sprecano” 4 cicli e le divisioni che usano un ciclo per bit del divisore+1, una divisione per 3 ad esempio usa solo 3 cicli).

    La versione più “grande” di questo micro dispone di 512K di flash Rom (dove posso archiviare il codice e le costanti) e 48k di ram e ha un costo irrisorio di circa 5 euro. Posso inoltre affermare con assoluta certezza che è anche molto robusta in quanto per errore l’ho già messa in corto un po’ di volte, gli ho sparato voltaggi fuori specifica, l’ho programmata e riprogrammata almeno 1000 volte ed è ancora viva.

    Passando al “software” PICcolino è stabile ma molto da sgrezzare.
    Per ora è scritto in C, ma ne sto riscrivendo alcune parti in assembler, che è molto “maneggevole”.
    Gli creato un semplice protocollo che lavora su seriale, in modo da comandarlo con un eseguibile da PC. Ho aggiunto a questo controller un’interfaccia winboard, così ora posso anche automatizzare un po’ di test come se fosse un normalissimo motore.
    Dopo un po’ di tentativi falliti dovuti ad un misterioso problema sul book (momentaneamente un estratto del book di uragano fino alla 6 mossa) finalmente ha cominciato a giocare. In coda a questo lungo post ci sono le prime due partite.

    La TODO list (solo del motore) è comunque ancora lunga, ci sono molti margini di miglioramento e nei 48k di ram del PIC più carrozzato dovrei riuscire ad inserire una hashina di almeno 16k.

    Un saluto a tutti gli amici
    LucaN

    [pgn]
    [Event "Computer Chess Game"]
    [Site "DIGILUNAPB"]
    [Date "2017.01.19"]
    [Round "1"]
    [White "gedeone1620"]
    [Black "PICcolinoHW"]
    [Result "1/2-1/2"]
    [TimeControl "60+2"]

    1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Ba6 5. b3 Bb4+ 6. Bd2 Be7 7. Nc3 d5 8.
    Bh3 Ne4 9. Qc2 Nxd2 10. Nxd2 c5 11. dxc5 d4 12. Nd1 Bb7 13. O-O bxc5 14. e4
    Nc6 15. Nf3 Nb4 16. Qb1 d3 17. a3 Nc2 18. Ra2 Bxe4 19. Nd2 Bg6 20. Bg2 Rc8
    21. Nc3 Qd4 22. Bb7 Qxc3 23. Bxc8 Qxd2 24. Bb7 O-O 25. h4 Qc3 26. h5 Bxh5
    27. Be4 Be2 28. Rc1 Rb8 29. Raxc2 dxc2 30. Rxc2 Qxb3 31. Qxb3 Rxb3 32. Rxe2
    Rxa3 33. Kh2 Ra4 34. Bd3 g6 35. f4 Bf6 36. Kg2 Bd4 37. Kh2 Ra3 38. Rd2 f5
    39. Be2 h5 40. Kg2 Kf7 41. Kh2 e5 42. Kg2 e4 43. Rc2 a5 44. Bd1 a4 45. Rd2
    e3 46. Rc2 Ra1 47. Bf3 a3 48. Kh3 a2 49. Bd1 Bf6 50. Rh2 Rxd1 51. Rxa2 Rd2
    52. Ra7+ Be7 53. Ra1 e2 54. Re1 g5 55. fxg5 Bxg5 56. Kg2 h4 57. Kh3 Be3 58.
    Kg2 Bg5 59. Kh3 Be3 60. Kg2 Bg5
    {XBoard adjudication: repetition draw} 1/2-1/2

    [Event "Computer Chess Game"]
    [Site "DIGILUNAPB"]
    [Date "2017.01.19"]
    [Round "2"]
    [White "PICcolinoHW"]
    [Black "gedeone1620"]
    [Result "1-0"]
    [TimeControl "60+2"]

    1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8.
    d3 Na5 9. Bd2 Nxb3 10. axb3 O-O 11. Nc3 Bb7 12. Ng5 b4 13. Ne2 c5 14. Ng3
    h6 15. Nf3 Qb6 16. Nf5 Bd8 17. c3 a5 18. Qe2 bxc3 19. bxc3 Re8 20. c4 Bc7
    21. Ra3 Ra7 22. Rea1 Rea8 23. Ne7+ Kf8 24. Nf5 Kg8 25. Ne7+ Kf8 26. Nf5 a4
    27. Rxa4 Bb8 28. Rxa7 Bxa7 29. Be3 Ng4 30. Bd2 Qxb3 31. h3 Nf6 32. Qf1 Qb6
    33. Rb1 Qc6 34. Nxd6 Qxd6 35. Rxb7 Qa6 36. Qb1 Bb6 37. Rxb6 Qxb6 38. Qxb6
    Nd7 39. Qd6+ Ke8 40. Nxe5 Nxe5 41. Qxe5+ Kf8 42. Bc3 Rd8 43. Qxg7+ Ke8 44.
    Qe5+ Kd7 45. Qxc5 Re8 46. f4 Rd8 47. Bf6 Rb8 48. Qd5+ Ke8 49. Qe5+ Kd7 50.
    Qxb8 Kc6 51. d4 h5 52. Qb5+ Kc7 53. Qxh5 Kb6 54. Qxf7 Ka6 55. e5 Ka5 56. e6
    Kb4 57. e7 Kc3 58. e8=Q Kd2 59. d5 Kd3 60. d6 Kc2 61. d7 Kb3 62. d8=Q Kc2
    63. Qb7 Kc1 64. Qb2#
    {Xboard adjudication: Checkmate} 1-0
    [/pgn]

    #10807
    stegemma
    stegemma
    Moderatore

    Partita divertente, peccato per la triplice (mi è piaciuto l’arrocco di Gedeone!).

    Credo che su questi sistemi usare l’assembly sia essenziale, sennò non puoi sfruttare al meglio la ridotta RAM disponibile ed il clock relativamente basso. Mi sembra comunque che Piccolino giochi già bene, complimenti!

    Io sono ancora nel dubbio se buttare il mio tempo con le FPGA o con una logica cablata “a mano”. Per fortuna, non avendo tempo per farlo, ho tempo per pensarci! 😉

    #10808

    Grandissimo Luca! Mi ricordo che ci avevi cominciato a parlare del PIC un sacco di tempo fa, cos’era? 2010 o 2011 al torneo torinese dei computer? Adesso sei praticamente costretto a partecipare al prossimo IGT…
    🙂 🙂 🙂

    #10809

    lucaNaddei
    Membro

    A volte ritorniamo…

    #10818
    stegemma
    stegemma
    Moderatore

    Dai… quest’anno facciamo l’HIGT!

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)

Devi essere loggato per rispondere a questa discussione.

© 2018 G 6 Tutti i diritti riservati - Buon divertimento!

By continuing to use the site, you agree to the use of cookies. more information

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi