mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ersatzt für 90S2323 ReAVR .hex to source


Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Projekt im Internet gefunden das ich gerne nachbauen würde. 
Das Problem ist nur dass dort ein 90S2323 verbaut ist und der nicht mehr 
zu bekommen ist. Sourcecode gibt es nicht nur das Hexfile.

Jetzt habe ich nach ein bisschen googlen das hex durch den "ReAVR" 
gejagt und das Ergebnis im AVRStudio eingefügt.

Dort bekomme ich beim kompilieren folgendes angezeigt:
>
>Memory use summary [bytes]:
>Segment   Begin    End      Code   Data   Used    Size   Use%
>---------------------------------------------------------------
>[.cseg] 0x000000 0x0000c8    200      0    200 unknown      -
>[.dseg] 0x000060 0x000060      0      0      0 unknown      -
>[.eseg] 0x000000 0x000000      0      0      0 unknown      -
>
>Assembly complete, 0 errors. 0 warnings
>
Ich habe absolute keine Plan von Assembler aber das sieht für mich so 
aus als wenn alles ok ist, oder?

Das blöde ist das ich auch keine Fehler im Code sehen würde da ich ja 
kein Assembler kann.
Viel Code ist es ja nicht, vielleicht könnte mal jemand einen Blick 
drauf werfen ob da was völlig mistig ist. Aber für mich schaut es erst 
mal gut aus.
Dann könnte ich das ja im Grunde für jeden Prozessor anpassen, oder?

mfg
Florian
; reassembly of "xxx_h.HEX"
; created by ReAVR V3.2.0
; at 2009/09/28 - 11:23:18
; for Atmel AVR assembler
;---------------------------------------
; AVR_TYPE=<unknown>
; FLASH_SIZE=8KB
; SRAM_START=0x60
;---------------------------------------
  .cseg
  .org  0x0000
;---------------------------------------
; byte constants:
;
.equ  k00  = 0x00  ;
.equ  k01  = 0x01  ;
.equ  k02  = 0x02  ;
.equ  k0A  = 0x0A  ;
.equ  k0F  = 0x0F  ;
.equ  k17  = 0x17  ;
.equ  k1F  = 0x1F  ;
.equ  k36  = 0x36  ; '6'
.equ  k38  = 0x38  ; '8'
.equ  k60  = 0x60  ; '`'
.equ  k7E  = 0x7E  ; '~'
.equ  k9E  = 0x9E  ;
.equ  kC0  = 0xC0  ; 'À'
.equ  kDF  = 0xDF  ; 'ß'
;
; io register addresses:
;
.equ  p17  = 0x17
.equ  p18  = 0x18
.equ  p21  = 0x21
.equ  p3D  = 0x3D
;
; bit numbers:
;
.equ  b0  = 0x00
.equ  b1  = 0x01
.equ  b2  = 0x02
.equ  b3  = 0x03
.equ  b4  = 0x04
.equ  b5  = 0x05
.equ  b6  = 0x06
.equ  b7  = 0x07
;---------------------------------------
;
L0000:
  rjmp  _reset  ; L000B
;  -----------  jump on last line
  reti
;----------------------*
; pc=0x2(0x4)
;
  reti
;----------------------*
; pc=0x3(0x6)
;
  reti
;----------------------*
; pc=0x4(0x8)
;
  reti
;----------------------*
; pc=0x5(0xA)
;
  reti
;----------------------*
; pc=0x6(0xC)
;
  reti
;----------------------*
; pc=0x7(0xE)
;
  reti
;----------------------*
; pc=0x8(0x10)
;
  reti
;----------------------*
; pc=0x9(0x12)
;
  reti
;----------------------*
; pc=0xA(0x14)
;
  reti
;----------------------*
; pc=0xB(0x16)
;
_reset:
; L000B:
  ldi  r24,k1F
  out  p21,r24
  ldi  r24,k17
  out  p21,r24
  ldi  r24,kDF
  out  p3D,r24
  ldi  r28,kC0
  ldi  r30,k9E
  mov  r4,r30
  clr  r29
  mov  r5,r29
  ldi  r30,k7E
  ldi  r31,k00
  ldi  r26,k60
  ldi  r27,k00
  clr  r24
L001B:
  st  X+,r24
  sbiw  r30,k01
   brne  L001B
;  -----    branch on last line
  clr  r6
  cbi  p17,b2
  sbi  p17,b0
  sbi  p17,b1
L0022:
  ldi  r26,k36
  ld  r24,X
  bst  r24,b2
   brtc  L0022
;  -----    branch on last line
L0026:
  ldi  r26,k36
  ld  r24,X
  bst  r24,b2
   brts  L0026
;  -----    branch on last line
  ldi  r24,k02
  ldi  r30,k0F
  ldi  r31,k00
  ldi  r26,k38
   rcall  L005A
  ldi  r24,k01
  out  p18,r24
  ldi  r24,k02
  ldi  r30,k0A
  ldi  r31,k00
  ldi  r26,k38
   rcall  L005A
  ldi  r24,k00
  out  p18,r24
  ldi  r24,k02
  ldi  r30,k0A
  ldi  r31,k00
  ldi  r26,k38
   rcall  L005A
  ldi  r24,k02
  out  p18,r24
  ldi  r24,k02
  ldi  r30,k0A
  ldi  r31,k00
  ldi  r26,k38
   rcall  L005A
  ldi  r24,k00
  out  p18,r24
  rjmp  L0022
;  -----------  jump on last line
L0047:
  sbiw  r30,k01
   brne  L0047
;  -----    branch on last line
  ret
;----------------------*
; pc=0x4A(0x94)
;
  set
  bld  r6,b2
  ret
;----------------------*
; pc=0x4D(0x9A)
;
  clt
  bld  r6,b2
  ret
;----------------------*
; pc=0x50(0xA0)
;
L0050:
  ldi  r25,k01
  tst  r24
   breq  L0057
;  -----    branch on last line
  clc
L0054:
  rol  r25
  dec  r24
   brne  L0054
;  -----    branch on last line
L0057:
  mov  r24,r25
  com  r25
  ret
;----------------------*
; pc=0x5A(0xB4)
;
L005A:
  clr  r27
   rcall  L0050
  ld  r25,X
  eor  r25,r24
  st  X,r25
L005F:
  sbiw  r30,k01
   brne  L005F
;  -----    branch on last line
  eor  r25,r24
  st  X,r25
  ret
;----------------------*
; pc=0x64(0xC8)
;
; last flash byte address = 0x00C7
; last flash word address = 0x0063
;---------------------------------------
; Code not seems to use any RAM.
;---------------------------------------
;<eof>

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht gut aus. Was soll er (der Mc) denn machen?

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss ich erhlich gestehen, ich weiß es nicht genau.

gehört hier zu:
http://www.pulsdetektor.de/projekte/projektindex.html

Dann werde ich es einfach mal versuchen ob es läuft.

Danke schön.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt natürlich die ganzen Initialisierungen an Deinen Przessor 
anpassen!
Bsp. Stack, IO-Pins, Taktfrequenz, Timer...

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähh...ok,

und das steht alles da oben in dem code?
Mehr habe ich ja nicht und da steht doch gar nicht so viel drin, oder 
doch? Oder wird das im AVRStudio eingestellt bevor man Kompelliert?

Autor: Ralf2008 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der AT90S2313 ist der pinkompatible Vorläufer vom ATtiny 2313.
Für die Substitution durch den ATtiny 2313 gibt es extra eine
Application Note von Atmel: AVR091. Oft reicht es, wenn man
ganz einfach die entsprechenden Fuses (Tabelle 4) am ATtiny 2313
kompatibel zum AT90S2313 einstellt. Wenn ich das recht in Erinnerung
habe, sind das gerade mal 6 Fuses oder so gewesen ...

Ralf2008

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich weiß!
Es geht aber um den "AT 90 S 2323" und in andern Beiträgen zu dem Thema 
wurde immer geschrieben das es sehr unwarscheinlich ist das ein Hexfile 
der für den 2323 gemacht wurde auf dem AT Tyni25 (der Nachvolger vom 
2323) laufen wird.
Deshalb der Umweg über ReAVR was ich vorher noch nie versucht habe.

Autor: Ralf2008 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oops, sorry! Sehe gerade, dass ja der AT90S2323 gemeint war.
Der ist natürlich nicht pinkompatibel mit dem ATtiny2313 ...LOL!

Ralf 2008

Autor: Ralf2008 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mal nebenbei den geposteten Assembler code kurz durchgesehen.
Der code ist relativ einfach und benutzt auch keine Interrupts bzw.
Timer. Die IO-Adressen sind gleich zum ATtiny 25. Habe den code im
AVR-Studio simuliert und für den ATtiny25 kompiliert. Funktioniert!
Sollte einwandfrei mit einem ATtiny 25 in der Schaltung funktionieren.
Quarz bzw. Fuses etc. müssen natürlich für den ATtiny 25 angepasst
werden ...

Ralf2008

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, vielen dank für diene Mühe.
Das hatte ich ja auch schon vermutet aber war mir halt nicht sicher weil 
ich Assembler nicht kann und leider noch keinen Tyni25 hier habe. Sonst 
hätte ich es einfach ausprobiert.
Dann werde ich mal Teile bestellen...

mfg
Jabberwock

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.