Forum: Mikrocontroller und Digitale Elektronik AVR Sound-Player Code portieren


von cyberlink (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Für mein aktuelles Projekt will ich mithilfe eines AVRs kurze Sounds 
abspielen. Eine passende Lösung dazu habe ich auf AVR-Freak gesehen:
http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=402

Leider ist der verwendete AVR ein Mega8515 bzw. ein 90S8515.
In den passen allerdings höchstens ca. 3 Sekunden Sound, ich brauche 
aber etwa 10 Sekunden.

Jetzt habe ich vor, den Code auf den Mega32 zu portieren, aber leider 
ist der Quelltext in ASM (worin ich leider nicht gerade viel Erfahrung 
habe...).
Ein einfaches Austauschen der include Anweisung hat nix gebracht. Die 
Timer sind beim Mega32 und beim 8515 auch ziemlich gleich aufgebaut. 
Aber trotz allem bleibt der AVR stumm. Wo müsste man den Code anpassen?

mfg,
cyberlink

von Peter D. (peda)


Lesenswert?

cyberlink schrieb:
> Aber trotz allem bleibt der AVR stumm. Wo müsste man den Code anpassen?


Dürfte die Interruptvektortabelle sein, so macht man die nämlich nicht.

Vor jedes RJMP gehört ein .ORG mit der Vektordefinition aus dem Include.


Peter

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

AUf jedenfall SRAMStart (versuch mal auszukommentieren eigentlich ist 
das ein Standarddefine).
Ansosnten einfach mal die TimerRegister vergleichen ob es da noch 
Anpassungsbedarf gibt. Einmal im Init und einmal in "Play sample"

von Gast (Gast)


Lesenswert?


von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

(Mod: im Anschluss eine Anwort aus doppeltem Thread, anderen Thread 
gelöscht)

Autor: Sebastian (Gast)
Datum: 28.06.2009 17:47

könnte sein, dass manches, was bei 8515 nur über sts und lds beim Mega32
noch über in und out erreichbar ist. Ich würde mal über "Find and
Replace" alle sts durch out und alle lds durch in ersetzen. Dann
versuchen zu assemblieren und alls in und out die einen Fehler erzeugen
wieder zurücktauschen auf lds/sts.

Ansonsten natürlich die ganze Hardware-konfig durchschaun. Also bei
allem was verwendet wird schauen, ob 8515 und 32 da die gleichen
Register haben.

Sebastian

von cyberlink (Gast)


Lesenswert?

Hey Super!
Der Tipp mit den Interruptvektoren hat mir geholfen.
Sollte jemand noch den Teil mit der neuen Interupttabelle brauchen, hier 
ist er:
1
.org 0x000
2
       rjmp RESET
3
.org INT0addr                 ; External Interrupt0 Vector Address
4
       rjmp EXT_INT0                   
5
.org INT1addr                 ; External Interrupt1 Vector Address
6
       rjmp EXT_INT1                   
7
.org OC2addr                  ; Output Compare2 Interrupt Vector Address
8
       reti                   
9
.org OVF2addr                 ; Overflow2 Interrupt Vector Address
10
       reti                   
11
.org ICP1addr                 ; Input Capture1 Interrupt Vector Address
12
       rjmp TIM1_CAPT                   
13
.org OC1Aaddr                 ; Output Compare1A Interrupt Vector Address
14
       rjmp TIM1_COMPA                   
15
.org OC1Baddr                 ; Output Compare1B Interrupt Vector Address
16
       rjmp TIM1_COMPB                   
17
.org OVF1addr                 ; Overflow1 Interrupt Vector Address
18
       rjmp  TIM1_OVF                   
19
.org OVF0addr                 ; Overflow0 Interrupt Vector Address
20
       rjmp  TIM0_OVF                   
21
.org SPIaddr                  ; SPI Interrupt Vector Address
22
       reti                   
23
.org URXCaddr                 ; USART Receive Complete Interrupt Vector Address
24
       reti                   
25
.org UDREaddr                 ; USART Data Register Empty Interrupt Vector Address
26
       reti                   
27
.org UTXCaddr                 ; USART Transmit Complete Interrupt Vector Address
28
       reti                   
29
.org ADCCaddr                 ; ADC Interrupt Vector Address
30
       reti                   
31
.org ERDYaddr                 ; EEPROM Interrupt Vector Address
32
       reti                   
33
.org ACIaddr                  ; Analog Comparator Interrupt Vector Address
34
       reti                   
35
.org TWIaddr                  ; Irq. vector address for Two-Wire Interface
36
       reti                                    
37
.org SPMRaddr                 ; SPM complete Interrupt Vector Address
38
       reti                   
39
 
40
.org INT_VECTORS_SIZE

mfg
Cyberlink

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.