Forum: Mikrocontroller und Digitale Elektronik AT90S2313 kann nicht programmiert werden


von dili (Gast)


Lesenswert?

Hallo

Ich habe ein STK500 seit kurzem gekauft und habe einen AT90S2313
eingesetzt. Irgendwie habe ich zuviel rumprobiert und kann jetzt im ISP
Modus nicht mehr programmieren. Ich habe die Fuses gesetzt und kann
nichts mehr proggen. Irgendwie habe ich das Gefühl, dass die Frequenz
nicht stimmt.
Kann mir jemand weiterhelfen?

von Εrnst B. (ernst)


Lesenswert?

Gibts hier ettliche Threads zu.

Dein STK500 kann im HV (HighVoltage) Programmier-Modus den AVR Retten
(Fuses zurückstellen)

Aber auf die richtige Progammierspannung achten, sonst isser ganz
hinüber.

/Ernst

von dili (Gast)


Lesenswert?

Ich weisse leider nicht, wie ich die zurücksetzten soll. Mit dem
Parallelmodus aber ich meine, wie muss ich die Häckchen setzen, damit
dieser wieder funktionier`?

von Εrnst B. (ernst)


Lesenswert?

Erstmal einfach alle wieder auf Auslieferungszustand zurückstellen.
Wie der war steht im Datenblatt.

/Ernst

von **** (Gast)


Lesenswert?

Hallo,

im ISP Modus kannst Du die Fuses bei einem 90S2313 ja garnicht setzen,
also auch nicht verkehrt. Hast Du einen Quarz dran?

HTH,
****

von dili (Gast)


Lesenswert?

Keine Ahnung, ich bin Anfänger!

Ich habe diesen MC in das STK500 Board eingesetzt und es funzt nicht.
Mit einem Atmega klappt alles gut, denn an diesem habe ich nichts
rumgemacht. Ich habe das Gefühl, dass ich den Oszillator faslcht gewäht
habe. Keine Ahnung!

von **** (Gast)


Lesenswert?

@dili,

Gefühle sind in der Digitaltechnik immer gut, sie ersparen einem oft
das Lesen der Anleitung und Datenblätter.

Leider nicht immer.

Ich hab leider auch keine Ahnung was Du machst.

Gute Nacht

von dili (Gast)


Lesenswert?

HAHAHAHA

Danke! Habe ich nicht gewusst!

Wenn ich ein Blinklichtprogramm in einen ATMEGA8 flasche funktioniert
alles einwandfrei!
Aber wenn ich das in den AT90S2313 flasche funzt nichts!
Versteht ihr das Problem?

von johnny.m (Gast)


Lesenswert?

Ein Programm für nen ATMega 8 läuft natürlich nicht auf nem 90S2313! Das
ist ein völlig anderer Controller! Das Programm muss umgeschrieben
werden , wenn es in den 2KB-Speicher vom 2313 überhaupt reinpasst. Dann
musst Du es für den 2313 neu compilieren. Sonst läuft gar nichts.

von Jens D. (Gast)


Lesenswert?

LOL
das Programmieren geht??
wenn icht kann die ISP Frequenz zu hoch sein
an sonsten kannst du kein Programm von einem 90S2313 in einen Mega8
Programmieren oder umgekehrt

Gruss

von dili (Gast)


Lesenswert?

Das Program ist sehr klein.
Ich habe es mit AVRStudio Umgebung programmiert. Ich habe einzeln die
beiden MC eingesetzt.
Den Code habe ich so programmiert, dass er für beider MC passt.
PORTB ist Ausgang, mit denen ich die LEDs ein und ausschalte.

von johnny.m (Gast)


Lesenswert?

>Ich habe es mit AVRStudio Umgebung programmiert

Also in Assembler?

von dili (Gast)


Lesenswert?

Nein in C, den ich habe die neue Version runtergeladen, wo man den
GCC-Compiler benutzen kann.

von johnny.m (Gast)


Lesenswert?

Dann gehts erst recht nicht. Der Compiler erzeugt doch nen völlig
anderen Hex-File! Das kriegste in den Mega8 nicht rein!!!!!! Der Mega
hat ne andere Speicheraufteilung. Du musst das Programm für den 2313
neu compilieren und vorher den richtigen Controller auswählen. Sonst
fügt der auch die falsche I/O-Lib ein!

von dili (Gast)


Lesenswert?

Ich habe den MC auf AT90S2313 gewechselt und dann compliliert. Ging
nicht!

von dili (Gast)


Lesenswert?

Ich hab gestern Abend einen neuen AT90S2313 eingesetzt, siehe da, der
funzt auch nicht, obwohl ich nichts an den Fusebits geändert habe.

Vorher habe ich mittels Ponyprog über das meistverwendete ISP-Interface
programiiert und es klappte immer.

Seit ich aber die MC auf dem STK500 Board programmiere funktionieren
diese mit Ponyprog auch nicht mehr,

Ausser der Atmega8 der geht bei beiden.

Komisch oder?

von Wolfram (Gast)


Lesenswert?

>Ich hab gestern Abend einen neuen AT90S2313 eingesetzt, siehe da, der
>funzt auch nicht, obwohl ich nichts an den Fusebits geändert habe.
Was heisst "funzt nicht"
Du kannst nicht auf den Controller zugreifen? Oder dein Programm
funktioniert nicht? <- Woran machst du das fest? Quelltext?

>Vorher habe ich mittels Ponyprog über das meistverwendete
ISP-Interface
>programiiert und es klappte immer.
Was ist das meistverwendete Interface???

>Seit ich aber die MC auf dem STK500 Board programmiere funktionieren
>diese mit Ponyprog auch nicht mehr,
Nochmal was heist funktionieren?

>Ausser der Atmega8 der geht bei beiden.
analog...

Hast du überhaupt schonmal in die Datenblätter und die Hilfe zum STK500
reingeschaut? Wenn nicht tu es.

Der Hauptunterschied zwischen atmega8 und at90s2313 ist das der atmega8
einen internen Oszillator hat. d.h. wenn der aktiv ist funktioniert er
auch ohne das ein Takt anliegt. der at90s2313 braucht einen externen
Takt. Kann es sein das du diesen abgeschaltet hast?

von dili (Gast)


Lesenswert?

Das Ist mein Code
#include <avr/io.h>                             //Zugriff auf IO's des
Controllers
#include <avr/simple_delayroutinen.c>

int main (void) {
  DDRB = 0xff;        //PB0...PB7 als Ausgänge definieren
  DDRD=0x00;
  for (;;)        //Endlosschleife
    unsigned short x=0;
    unsigned int keys;
    keys=~PIND;
    PORTB=0xff;
    if(keys & 0x01){
      for(x=0;x<4;x++){
        PORTB=0xfe;
        delay_ms (900);  //warte
      }
    }
    if(keys & 0x02){
      for(x=0;x<4;x++){
        PORTB = 0xfd;
        delay_ms (900);
      }
    }
  }
}

von dili (Gast)


Angehängte Dateien:

Lesenswert?

Angehängt findest du die Einstellungen die ich gemacht habe einmal im
ISP-Modus
2tes mal Parallal/High Voltage Serial

Wenn ich den oben angegebenen Code in ATMEGA8 hineinprogrammiere
(STK500), dann leuchteten die esrten 2 LED (PORTB) auf, wenn ich die
Tasten vom PORTD drücke. Also=> Das ist OK!!

Aber wenn ich das gleiche mit einem AT90S2313 oder AT90S8115 machen
will, geht nur die erste LED auf, obwohl ich nichts drücke.

Wenn ich anstatt STK500 das ISP-Interface nehme, dann funktioniert das
mit dem ATMEGA( immer noch.
Den AT90S2313  & AT90S8115 kann ich damit auch nicht proggen¨

Ist das Problem nun klar??

von johnny.m (Gast)


Lesenswert?

Wenn Du auf Deinem STK500 den On-Board-Oszillator deaktiviert hast
(Jumper) und auch keinen Quarz eingesetzt hast, dann kann der 90SXXXX
nicht funktionieren!

von dili (Gast)


Lesenswert?

DANKE!!!!


Ich werde heute Abend nochmals dies anschauen, und hoffe, dass das das
Problem ist! Ein Quarz ist drin.

Den Jumper habe ich zw. 2 und 3 gesetzt, half aber auch nicht.

von dili (Gast)


Lesenswert?

Übrigens wie kann man den den On-Board-Oszillator aktivieren resp.
deaktivieren. Das geht doch nur mit den Junper oder?
Softwaremässig kann das nicht gemacht werden oder?

Noch was: Wenn ich im ISP Modus unter Einstellungen des STK500 Fuses
oder Lockbits wähle kommt bei den ATS... immer diese Fehlmeldung.

Beim ATMEGA 8 jedoch nicht!

Könnte das auch ein Grund sein, wieso es nicht richtig funktioniert?

von dili (Gast)


Lesenswert?

Die Jumper habe ich kontrolliert, an liegts leider nicht. Kann es sein,
dass ich die Fusebits oder Lockbits im Parallemodus falsch gesetzt
habe? Weiter oben habe ich eine Word-Datei angehängt, wo die einzelnen
Einstellungen ersichtlich sind.
Kann mir jemand weiterhelfen?

von nemcron (Gast)


Lesenswert?

Welche Fehlermeldung ist denn "diese Fehlermeldung" ?
Lässt sich die Signatur auslesen ?

von dili (Gast)


Lesenswert?

Ja aber nur manchmal, kann ich die Signatur nicht auslesen.

von nemcron (Gast)


Lesenswert?

Und welche Fehlermeldung ist "diese Fehlermeldung" ?

von dili (Gast)


Lesenswert?

Er meckert immer mit einer Fehlermeldung bez. der Spannung. Ich bin
zurzeit nicht daheim, deswegen kann ich erst heute Abend den genauen
Fahler mit PrintScreen erfassen und dann ins Netz legen.

Danke!

von dili (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang ist die Fehlermeldung zu entnehmen!

Ich habe nun einen neuen AT90S2313 genommen und versucht diesen mit
diesem Code zu programmieren:

#include <avr/io.h>          //Zugriff auf IO's des Controllers

void delayxy(int c){
  int x;
  for(c=0;c<4000;c++)
  for(x=0;x<10;x++);
}


int main (void) {
  DDRB = 0xff    //PB0...PB7 als Ausgänge definieren
  DDRD=0x00;
  for (;;) {           //Endlosschleife
    unsigned short x=0;
    unsigned int keys;
    keys=~PIND;
    PORTB=0xff;
    if(keys & 0x01){
      for(x=0;x<4;x++){
        PORTB=0xfe;
        delayxy(10);
      }
    }
    if(keys & 0x02){
      for(x=0;x<4;x++){
        PORTB = 0xfd;
        delayxy(10);
      }
    }
    if(keys & 0x04){
      for(x=0;x<4;x++){
        PORTB = 0xfb;
        delayxy(100);
      }
    }
}

Beim ATMEGA8 funktioniert das, nämlich wenn ich am PORTD PIN0 od PIN1
oder PIN2 den Taser betätige, so leuchtet am PORTB die LED.

Wenn ich aber den gleic^hen Code in einen AT90S2313 hineinflashe so
leuchtet am PORTB die LED 1 auf und nichts passiert, obwohl ich die
Tasten drücke.

Ich habe am die Frequenz mit einem KO am EIngangspin der MC gemessen
und die stimmt.

Kann mir jemand weiterhelfen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.