-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Schach auf ATmega32

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2004
    Beiträge
    7

    Schach auf ATmega32

    Ist es möglich ein Schachprogramm auf einen ATmega32 zu implementieren? An Hardware dürfte es nicht mangeln, da eine Geschwindigkeit von 16MHz ausreichen dürfte (schon auf einen Schneider CPC gab es ein Schachspiel mit Computergegner, obwohl der nur 4MHz hatte, und auch neuere Schachcomputer dürften, wenn man den Preis betrachtet, nicht viel bessere Prozessoren enthalten. Nur der Speicherplatz dürfte etwas dürftig sein und ein ATmega64 bzw. ATmega128 sind im Vergleich sehr teuer (ATmega32 7€, ATmega64 24€) und ab Atmega64 gibt es sie nicht mehr in praktischen DIL Gehäuse (ich habe zumindest keine gefunden). Außen Geschwindigkeit und Flash brauch ein Schachprogremm nur Arbeitsspeicher und der ist genug vorhanden (ak Byte). Das Anzeigen kann auch ein weiterer Microcontroller mit Lcd übernehmen oder es kann z.B. auf einfachen Grafiktaschenrechnern, die kein Assembler unterstützen aber eine serielle Schnittstelle haben, implementiert werden. Auch nur die Ausgabe des Zuges ist möglich. Hat jemand schan irgendwelche Erfahrung? Ich bin für jede Antwort dankbar.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also wenn ich das richtig sehe, kosten Atmega64 9,30€ bei reichelt, aber vermutlich wäre es eh sinnvoller einen externen speicher anzuschließen, vielleicht eine MMC-Card oder so, soll ja gehen. Ich weiß allerdings nicht wie aufwendig das ist. Allerdings hättest du dann speicher genug. Leider weiß ich auch garnicht genau, wie ein schachprogramm aufgebaut ist, hat es quasi jede Situation gespeichert und schaut nur nach, was als nächstes gemacht werden muss, oder ist es so intelligent zu reagieren. Vermutlich eine Mischung aus beidem.

    MFG Moritz

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    hat es quasi jede Situation gespeichert und schaut nur nach, was als nächstes gemacht werden muss, oder ist es so intelligent zu reagieren. Vermutlich eine Mischung aus beidem.
    Ja, beides hat daran Anteil. Bei den Eröffnungen(zumindest 10-30 Varianten a ca. 4 Züge) greifen die meisten Programme auf Bibliotheken zurück. Später werden dann alle möglichen Züge "durchprobiert" und auch alle Reaktionen darauf usw(Stichwort "Minimax-Algorithmus"). Dabei werden die Ergebnisse nach gewissen Kriterien gewichtet(so sind die Figuren unterschiedlich viel Wert(nicht nur nach ihrem Typ, sondern auch nach ihrer Position auf dem Spielfeld).).
    Der Rechenaufwand ist dabei in etwa eine Exponentialfunktion der Rechentiefe(der Anzahl an Zügen, die "vorrausgedacht" wird).
    Zur Ausgabe: Ich find' die Variante mit einem "echten" Schachbrett am schönsten, wo Züge des Menschen über Reedkontakte erkannt werden und der Computer mit LEDs signalisiert, was er machen will(ist natürlich eine Menge Arbeit zu bauen.).
    it works best if you plug it (aus leidvoller Erfahrung)

  4. #4
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Irgendwo hab ich mal gelesen das es für einen Atmel schon ein Mini-Schachprogramm gibt. Es war aber glaub für den Mega128, mit dem Mega32 wird das nicht klappen. Man braucht einfach mehr schnellen RAM Speicher.
    Leider hab ich die Seite mit dem Mini-Schachprogramm nicht mehr gefunden

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2004
    Beiträge
    7
    Wenn man eine MMC-Card benutz geht das aber doch dann sehr langsam, da das Programmteil erst in den RAM geladen werden muss, bevor es ausgefürht wird, oder gibt es eine Möglichkeit ein Programm direkt von einer MMC-Card laufen zu lassen? Gibt es eine Möglichkeit die I/O portrs als Adress- und Datenbus zu verwenden ohne das das die Geschwindigkeit reduzirt?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Mein Vorschlag resultierte ja auch nur aus dem nichtwissen, wie Schachprogramme aufgebaut sind, aber desto mehr langsamen Speicher man hat, desto mehr Züge könnte man vielleicht vorspeichern etc.

    @ dcv: Der Anschluss von MMC-Karten ist möglich, aber ich hab grad keine Seite, noch einfacher ist es glaube ich bei SD-Karten.

    Hier eine Seite, die zeigt, dass es möglich ist, wenn die hinkriegen, nen MP3-Player aus nem AVR zu bauen wo von ner KArte gelesen wird, sollte es wohl gehen

    http://mme-berlin.de/mmeavr/mmeavr.htm#mp3

    MFG Moritz

    MFG Moritz

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    OK, bisschen gegooglet, und schlauer, hier ein Thread aus dem Mokrokontroller-NET-Forum, über die Software für dem AVR zum Anschluss der MMC/SD KArte.

    http://www.mikrocontroller.net/forum/read-4-90147.html

    UNd hier noch eine Homepage mit downloads...

    http://www.mikrocontroller.net/forum/read-4-90147.html

    http://www.ulrichradig.de/

    MFG Moritz

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    08.05.2004
    Beiträge
    16
    Moin,

    Leuts, ihr seit einfach zu verwöhnt. Ist ja ganz klar, heutzutage werden einem die GHz und MB nur so um die Ohren gehauen.
    Es wurde vor Ewigkeiten mal ein Schach für den ZX-81 geschrieben. Dies ist einer der ersten Homecomputer überhaupt und er verfügt über den sagenhaften Speicher von einem ganzen Kilobyte.
    Ich rede hier vom Gesamtspeicher, wohlgemerkt.
    Inwiefern das damalige Programm auch das Basic-Rom angezapft hat, ist mir nicht bekannt - es dürfte sich bestenfalls um Berechnungsroutinen gehandelt haben.
    Von einer "Spielstärke" kann man hier aber nicht reden

    Schaut mal hier - gaaanz unten auf der Seite ist ein Link. Allerdings dürfte der Atmel den Z80-Code leider nicht schlucken.
    http://www.zx81.de/soft/_main_d.htm

  9. #9
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Also in 8 KB bekommt man sicher schon ein Schachprogramm rein (gab´s schon beim PET - falls den noch jemand von Euch kennt - quasi Vorgänger vom VC64/20 wenn man so will). Allerdings von der Spielstärke wäre das recht schwach. Mindestens 16 KB oder 32 kb wären schon vorteilhafter.

    Mit MMC/SD KArte und ähnlich langsamen Speichern kann man in der Schachprogrammierung so gut wie nix anfangen. Damit kann man bestenfalls eine Eröffnungsbibliothek verwalten, was aber nur wenige Züge beim Spielstart nutze (ca. 2 bis 4 Züge), danach muss das Programm richtig schnell rechnen und braucht einen schnellen RAM-Speicher. Je schneller, desto spielstärker wird das Programm sein. Dies liegt daran das diese Programme die sogenannte Brute Force Methode nutzen. Es werden also möglichst viele Züge vorausberechnet und ausprobiert.
    Ich kenn mich mit dem Thema recht gut aus, mich vor vielen Jahren mal ernsthafter mit der Schachprogrammierung beschäftigt.

    Gruß Frank

  10. #10
    Gast
    Hi

    ich hätte nicht gedacht, das noch einmal jemand etwas schreibt.
    Ich hab mich erst mal mit dem Aufbau eines Schachprogramms bis ins Detail eingearbeitet und in Delphi 6 ein Schachprogramm geschrieben (ist halt für den Anfang leichter) und schau, es läuft sogar schnell und spielstark (es gewinnt teilweise gegen mich) nur die Bedinung lässt noch zu wünschen übrig.
    Es ist eine klassische Brute-Force - Alpha-Beta Variante.
    Jetzt muss ich erst mal mit WinAVR klar kommen, da ich bisher nur in Assebler und Bascom programmiert habe, aber da stört mich die 2k Byte Begrenzung, außerdem kommt Basic meiner Meinug nicht an Pascal heran.

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •