- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: Wie verhält sich ein leerer (neuer) AVR?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802

    Wie verhält sich ein leerer (neuer) AVR?

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    gibt es eigentlich Angaben darüber, wie sich ein leerer (neuer) AVR in einer Schaltung verhält? Wenn man also einen neuen AVR in die (ISP-fähige) Schaltung einsetzt um ihn zu programmieren.

    Bevor der Progger loslegt, läuft der AVR ja los. Das Flash ist leer, also mit FF besetzt, was keine gültige Instruktion zu sein scheint. Spätestens wenn der Code am Flash-Ende ankommt passieren doch unvorhersehbare Dinge (Ports als OUT schalten, etc?)

    Im Handbuch ist da nix zu gesagt.

    Das Problem hat man auch, wenn man einen AVR in eine andere Schaltung "umziehen" will und in der alten Schaltung löscht (erase). Oder muss man da extra eine zwischenschaltung bereithalten zum Code-Wechsel?
    Disclaimer: none. Sue me.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Wenn er brandneu ist dann macht er überhaupt nix.

    Nach einem Reset sind alle Ports als Eingang geschaltet,hier kann also auch nix passieren was den Controller betrifft (Pegelkollisionen und damit Schaden).
    Was die Angeschlossene Schaltung betrifft ist das was anderes.
    Da kann es ohne Führung natürlich probleme geben wenn man das nicht berücksichtigt.


    Unvorhergesehene Dinge passieren nur wenn hinter einem Programende noch Daten stehen (zb. Datazeilen) die ohne definiertem Programende irrtümlich als Code ausgeführt werden können.
    Da der Controller nicht progrsmiert ist pasiert das auch nicht.


    Was den umzug in eine andere Schaltung betrifft so ist natürlich klar das er mit der alten Programierung dort einen Schaden verursachen könnte.

    Da ist es angebracht ihn vorher extern zu Programieren.
    Besser ist es aber ihn noch in der alten Schaltung zu löschen bevor man ihn verpflanzt.
    so vermeidet man ärger.

    Ich mache dabei auch gleich einen Check ob alle Speicherzellen noch in ordnung sind.
    Gruß
    Ratber

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Ein unprogrammierter AVR stellt alle Register auf ihre Default-Werte ein.
    Diese sind im Datenblatt angegeben. Alle I/Os werden als Eingänge konfiguriert.

    Wenn der Programmcounter am Flash-Ende ankommt, springt er automatisch wieder an den Anfang des Flashs. Der AVR führt also bis in alle Ewigkeit NOP aus. Es passieren keine unvorhergesehenen Dinge. Man muss auch zum Code-Wechsel keine Zwischenschaltung einbauen.

    askazo

    [edit]Da war Ratber schneller [/edit]

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Die Register (GPR) werden nicht initialisiert, nur die SFRs.

    Ein nop ist doch 00 00, und nicht FF FF. Ein Erase setzt den Flash doch auf FF, oder nicht *grübel*?
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Die GPRs haben ja auch keinen direkten Einfluss auf die Pins des AVRs. Wichtig sind eben die SFRs, und die werden initialisiert.

    Mit dem NOP hast Du recht, das wäre 0x0000.
    Ich habe bisher aber noch nirgendwo eine Assembler-Tabelle vom AVR gefunden, in der die passenden Hex-Werte zu den Mnemonics stehen.
    Aber 0xFFFF darf dann auch keine Auswirkungen auf die Pins haben.

    askazo

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    In avr-instruction-set von Atmel stehen keine Opcodes, da sind nur die Mnemonics aufgeführt. FF FF ist jedenfalls keine gültige Instruktion. Keine Ahnung was sie macht oder und woher Chertykov seine Info hat...

    Zitat Zitat von Denis Chertykov (in <binutils>/include/opcode/avr.h)
    Code:
    /* Opcode table for the Atmel AVR micro controllers.
    
       Remaining undefined opcodes (1699 total - some of them might work
       as normal instructions if not all of the bits are decoded):
    
        0x0001...0x00ff    (255) (known to be decoded as `nop' by the old core)
       "100100xxxxxxx011"  (128) 0x9[0-3][0-9a-f][3b]
       "100100xxxxxx1000"   (64) 0x9[0-3][0-9a-f]8
       "1001001xxxxx01xx"  (128) 0x9[23][0-9a-f][4-7]
       "1001010xxxxx0100"   (32) 0x9[45][0-9a-f]4
       "1001010x001x1001"    (4) 0x9[45][23]9
       "1001010x01xx1001"    (8) 0x9[45][4-7]9
       "1001010x1xxx1001"   (16) 0x9[45][8-9a-f]9
       "1001010xxxxx1011"   (32) 0x9[45][0-9a-f]b
       "10010101001x1000"    (2) 0x95[23]8
       "1001010101xx1000"    (4) 0x95[4-7]8
       "1001010110111000"    (1) 0x95b8
       "1001010111111000"    (1) 0x95f8 (`espm' removed in databook update)
       "11111xxxxxxx1xxx" (1024) 0xf[8-9a-f][0-9a-f][8-9a-f]
     */
    Disclaimer: none. Sue me.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Na wie auch immer.
    Bei FF passiert nix.
    Gruß
    Ratber

Berechtigungen

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

12V Akku bauen