mikrocontroller.net

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


Autor: cyberlink (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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%2...

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: cyberlink (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Super!
Der Tipp mit den Interruptvektoren hat mir geholfen.
Sollte jemand noch den Teil mit der neuen Interupttabelle brauchen, hier 
ist er:
.org 0x000
       rjmp RESET
.org INT0addr                 ; External Interrupt0 Vector Address
       rjmp EXT_INT0                   
.org INT1addr                 ; External Interrupt1 Vector Address
       rjmp EXT_INT1                   
.org OC2addr                  ; Output Compare2 Interrupt Vector Address
       reti                   
.org OVF2addr                 ; Overflow2 Interrupt Vector Address
       reti                   
.org ICP1addr                 ; Input Capture1 Interrupt Vector Address
       rjmp TIM1_CAPT                   
.org OC1Aaddr                 ; Output Compare1A Interrupt Vector Address
       rjmp TIM1_COMPA                   
.org OC1Baddr                 ; Output Compare1B Interrupt Vector Address
       rjmp TIM1_COMPB                   
.org OVF1addr                 ; Overflow1 Interrupt Vector Address
       rjmp  TIM1_OVF                   
.org OVF0addr                 ; Overflow0 Interrupt Vector Address
       rjmp  TIM0_OVF                   
.org SPIaddr                  ; SPI Interrupt Vector Address
       reti                   
.org URXCaddr                 ; USART Receive Complete Interrupt Vector Address
       reti                   
.org UDREaddr                 ; USART Data Register Empty Interrupt Vector Address
       reti                   
.org UTXCaddr                 ; USART Transmit Complete Interrupt Vector Address
       reti                   
.org ADCCaddr                 ; ADC Interrupt Vector Address
       reti                   
.org ERDYaddr                 ; EEPROM Interrupt Vector Address
       reti                   
.org ACIaddr                  ; Analog Comparator Interrupt Vector Address
       reti                   
.org TWIaddr                  ; Irq. vector address for Two-Wire Interface
       reti                                    
.org SPMRaddr                 ; SPM complete Interrupt Vector Address
       reti                   
 
.org INT_VECTORS_SIZE

mfg
Cyberlink

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.