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


von Jabber W. (jabber)


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
1
; reassembly of "xxx_h.HEX"
2
; created by ReAVR V3.2.0
3
; at 2009/09/28 - 11:23:18
4
; for Atmel AVR assembler
5
;---------------------------------------
6
; AVR_TYPE=<unknown>
7
; FLASH_SIZE=8KB
8
; SRAM_START=0x60
9
;---------------------------------------
10
  .cseg
11
  .org  0x0000
12
;---------------------------------------
13
; byte constants:
14
;
15
.equ  k00  = 0x00  ;
16
.equ  k01  = 0x01  ;
17
.equ  k02  = 0x02  ;
18
.equ  k0A  = 0x0A  ;
19
.equ  k0F  = 0x0F  ;
20
.equ  k17  = 0x17  ;
21
.equ  k1F  = 0x1F  ;
22
.equ  k36  = 0x36  ; '6'
23
.equ  k38  = 0x38  ; '8'
24
.equ  k60  = 0x60  ; '`'
25
.equ  k7E  = 0x7E  ; '~'
26
.equ  k9E  = 0x9E  ;
27
.equ  kC0  = 0xC0  ; 'À'
28
.equ  kDF  = 0xDF  ; 'ß'
29
;
30
; io register addresses:
31
;
32
.equ  p17  = 0x17
33
.equ  p18  = 0x18
34
.equ  p21  = 0x21
35
.equ  p3D  = 0x3D
36
;
37
; bit numbers:
38
;
39
.equ  b0  = 0x00
40
.equ  b1  = 0x01
41
.equ  b2  = 0x02
42
.equ  b3  = 0x03
43
.equ  b4  = 0x04
44
.equ  b5  = 0x05
45
.equ  b6  = 0x06
46
.equ  b7  = 0x07
47
;---------------------------------------
48
;
49
L0000:
50
  rjmp  _reset  ; L000B
51
;  -----------  jump on last line
52
  reti
53
;----------------------*
54
; pc=0x2(0x4)
55
;
56
  reti
57
;----------------------*
58
; pc=0x3(0x6)
59
;
60
  reti
61
;----------------------*
62
; pc=0x4(0x8)
63
;
64
  reti
65
;----------------------*
66
; pc=0x5(0xA)
67
;
68
  reti
69
;----------------------*
70
; pc=0x6(0xC)
71
;
72
  reti
73
;----------------------*
74
; pc=0x7(0xE)
75
;
76
  reti
77
;----------------------*
78
; pc=0x8(0x10)
79
;
80
  reti
81
;----------------------*
82
; pc=0x9(0x12)
83
;
84
  reti
85
;----------------------*
86
; pc=0xA(0x14)
87
;
88
  reti
89
;----------------------*
90
; pc=0xB(0x16)
91
;
92
_reset:
93
; L000B:
94
  ldi  r24,k1F
95
  out  p21,r24
96
  ldi  r24,k17
97
  out  p21,r24
98
  ldi  r24,kDF
99
  out  p3D,r24
100
  ldi  r28,kC0
101
  ldi  r30,k9E
102
  mov  r4,r30
103
  clr  r29
104
  mov  r5,r29
105
  ldi  r30,k7E
106
  ldi  r31,k00
107
  ldi  r26,k60
108
  ldi  r27,k00
109
  clr  r24
110
L001B:
111
  st  X+,r24
112
  sbiw  r30,k01
113
   brne  L001B
114
;  -----    branch on last line
115
  clr  r6
116
  cbi  p17,b2
117
  sbi  p17,b0
118
  sbi  p17,b1
119
L0022:
120
  ldi  r26,k36
121
  ld  r24,X
122
  bst  r24,b2
123
   brtc  L0022
124
;  -----    branch on last line
125
L0026:
126
  ldi  r26,k36
127
  ld  r24,X
128
  bst  r24,b2
129
   brts  L0026
130
;  -----    branch on last line
131
  ldi  r24,k02
132
  ldi  r30,k0F
133
  ldi  r31,k00
134
  ldi  r26,k38
135
   rcall  L005A
136
  ldi  r24,k01
137
  out  p18,r24
138
  ldi  r24,k02
139
  ldi  r30,k0A
140
  ldi  r31,k00
141
  ldi  r26,k38
142
   rcall  L005A
143
  ldi  r24,k00
144
  out  p18,r24
145
  ldi  r24,k02
146
  ldi  r30,k0A
147
  ldi  r31,k00
148
  ldi  r26,k38
149
   rcall  L005A
150
  ldi  r24,k02
151
  out  p18,r24
152
  ldi  r24,k02
153
  ldi  r30,k0A
154
  ldi  r31,k00
155
  ldi  r26,k38
156
   rcall  L005A
157
  ldi  r24,k00
158
  out  p18,r24
159
  rjmp  L0022
160
;  -----------  jump on last line
161
L0047:
162
  sbiw  r30,k01
163
   brne  L0047
164
;  -----    branch on last line
165
  ret
166
;----------------------*
167
; pc=0x4A(0x94)
168
;
169
  set
170
  bld  r6,b2
171
  ret
172
;----------------------*
173
; pc=0x4D(0x9A)
174
;
175
  clt
176
  bld  r6,b2
177
  ret
178
;----------------------*
179
; pc=0x50(0xA0)
180
;
181
L0050:
182
  ldi  r25,k01
183
  tst  r24
184
   breq  L0057
185
;  -----    branch on last line
186
  clc
187
L0054:
188
  rol  r25
189
  dec  r24
190
   brne  L0054
191
;  -----    branch on last line
192
L0057:
193
  mov  r24,r25
194
  com  r25
195
  ret
196
;----------------------*
197
; pc=0x5A(0xB4)
198
;
199
L005A:
200
  clr  r27
201
   rcall  L0050
202
  ld  r25,X
203
  eor  r25,r24
204
  st  X,r25
205
L005F:
206
  sbiw  r30,k01
207
   brne  L005F
208
;  -----    branch on last line
209
  eor  r25,r24
210
  st  X,r25
211
  ret
212
;----------------------*
213
; pc=0x64(0xC8)
214
;
215
; last flash byte address = 0x00C7
216
; last flash word address = 0x0063
217
;---------------------------------------
218
; Code not seems to use any RAM.
219
;---------------------------------------
220
;<eof>

von Route_66 (Gast)


Lesenswert?

Sieht gut aus. Was soll er (der Mc) denn machen?

von Jabber W. (jabber)


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.

von Route_66 (Gast)


Lesenswert?

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

von Jabber W. (jabber)


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?

von Ralf2008 (Gast)


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

von Jabber W. (jabber)


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.

von Ralf2008 (Gast)


Lesenswert?

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

Ralf 2008

von Ralf2008 (Gast)


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

von Jabber W. (jabber)


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

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.