Elo Ping Pong Platine mit Arduino 0021 programmieren?

Hallo,

ich habe ja haufenweise ELO Ping Pong Platinen herumliegen, die ich gerne direkt aus Arduino 0021 heraus programmieren würde. Ich würde gerne mehrere Ping Pong Platten mit I2C verbinden und einen Scroller über mehrere Module laufen lassen - muss ich dann coden...

Ich kann ein .hex File, welches ich mit SHIFT+compile in %temp%..... erzeugt habe, mit

avrdude -c avr910 -P com3 -b 115200 -p m8 -U laufschrift.hex

in die Platine bringen.

Dazu meine Frage: wie stelle ich Arduino ein, damit Arduino direkt nach dem Compilieren das .hex File in den ATmega8 der Pong Platte überträgt?

Fehlermeldung ist:

Binary sketch size: 6014 bytes (of a 7168 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Hallo,

es scheint passiert. Ich wollte den ATmega8 mit dem Arduino Bootloader versehen. Nun kann ich nichts mehr mir avrdude aufbringen. Jetzt kann es sein, dass ich ihn verfused habe. Kann mit jemand eine schnelle Softwarelösung nennen wie ich mit dem Arduino Uno einen TTL Takt auf XTAL1 des ATmega8 legen kann? Ich möchte probieren ob ich den ATmega8 wiederbeleben kann indem ich einen externen Takt anlege. Lt. div. Foren soll das eine Lösung sein...

void setup(void){
  DDRD = 0xFF; 
}

void loop(void){
  while(1) {
    PIND ^= 0xFF;
  }
}

Das sollte so um die 2MHz liefern. Auf den "analogen" pins.

000000ac <loop>:
  ac:   89 b1           in      r24, 0x09       ; 9
  ae:   80 95           com     r24
  b0:   89 b9           out     0x09, r24       ; 9
  b2:   fc cf           rjmp    .-8             ; 0xac <loop>

Hi,

habe es mal compiliert. XTAL1 vom ATmega8 liegt nun an PIN7 des Ardo. GND des ATmega8 an GND des Ardo. Leider kappt's nicht:

avrdude -c avr910 -P com3 -b 115200 -p m8 -U lfuse:w:0xE4:m -U hfuse:w:0xC9:m -F

bringt

Found programmer: Id = "AVR ISP"; type = S
    Software Version = 3.9; Hardware Version = 1.2
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize = 64 bytes.

Programmer supports the following devices:
    Device code: 0x13 = AT90S1200
    Device code: 0x20 = ATtiny84
8x8x8x8x8x8x8x8x8x8x
    Device code: 0x76 = ATMEGA8
8x8x8x8x8x8x8x8x8x8x

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0xffffff
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA8 is 1E 93 07
avrdude: reading input file "0xE4"
avrdude: writing lfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.52s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE4:
avrdude: load data lfuse data from input file 0xE4:
avrdude: input file 0xE4 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.07s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xe4 != 0xff
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was e4, and is now ff
Would you like this fuse to be changed back? [y/n] y

Wenn ich y gebe passiert nichts weiter. ISP Brenner Lampen brennen als wenn etwas übertragen wird. Fuses werden aber nicht gesetzt....

PIN7, Ich hoffe nicht einer der "digitalen"...

Sollte es auch noch an anderweitig falschen fuses liegen, also nicht nur falsche clock source, dann gibt es noch das hier:

Schaltplan + code ist verfuegbar. Benoetigt noch 12V DC fuer den reset pin, um den chip in das HV parallel programming zu bringen. Damit sollte sich so ziemlich alles wiederbeleben lassen.

Und hier noch ein guter FUSE calculator.

Nichts zu machen. Egal ob ich XTAL1 an analogen oder digitalen PINS klemme: og. Meldung bleibt.

Ich weiss ist schon ein alter Thread aber ich habe die Platine schon seit einiger Zeit hier rumliegen. Nach dem erfolgreichen Nachbau einer Wordclock in groß wird mit dieser Palatine eine kleine Schwester das "Licht" der Welt erblicken.
Um die Pong Platine mit 1.0.3 zu Programieren (via ISP) nutzte ich einfach folgende Erweiterung in dem Pfad.
In
D:\arduino-1.0.3\hardware\arduino\boards.txt
folgendes "Board" ergänzen

***************************************************************
atmega8.name=Pong (int.OSC 8Mhz)

atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=8192
atmega8.upload.speed=19200

atmega8.bootloader.low_fuses=0xE4
atmega8.bootloader.high_fuses=0xD9
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0xFF

atmega8.build.mcu=atmega8
atmega8.build.f_cpu=8000000L
atmega8.build.core=arduino
atmega8.build.variant=standard

Und mit diesem Sketch kann man dann alle LED mal leuchten lassen:

#define R1 14
#define R2 15
#define R3 16
#define R4 17
#define R5 4
#define R6 5
#define R7 6
#define R8 7
#define R9 8
#define R10 9

byte R[11]={
  14,15,16,17,4,5,6,7,8,9};
int latchPin = 10;
int clockPin = 11;
int dataPin = 12;
int x=0;
byte b1=255;
byte b2=255;

void setup(){
  for(int i=0;i<11;i++){
    pinMode (R[i],OUTPUT);
  }
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}




void loop(){
  digitalWrite(R[x],HIGH); 
  digitalWrite(R[x-1],LOW);
  x=x+1;
  if (x>=11){
    x=0;
    if(b1>=1){
      b1=b1-1;
      b2=b1;
    }
    if (b1==0){
      b1=255;
      b2=255;
    }
  }
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST,b2);  
  shiftOut(dataPin, clockPin, LSBFIRST,b1);  
  digitalWrite(latchPin, HIGH);
  delay(7);
}

Falls es jemand gebrauchen kann.
Gruß
Der Dani

Hallo Der Dani,

ja, ich kann das noch gebrauchen. Ich habe die Platten weiterhin hier liegen. Habe eine Projekt Idee, die mit den Platten noch nicht gemacht wurde ;).