Wie kann man den YM7128B richtig ansteuern

Gast #4220437
Lesenswert?
• ▲
▼
Hallo!

Ich hab ein kleines Problem mit einer Ansteuerung bei einem YM7128B in 
Assembler. Der AVR ist ein ATMEGA168. Der YM7128B hat eine ziemlich 
bescheidene Ansteuerung und komme nicht drauf wie ich das am einfachsten 
anstelle. Das untere Beispiel funktioniert nicht, obwohl es bei vielen 
ähnlichen Bausteinen anwendbar ist.

Ich hoffe man kann hier einen Anhaltspunkt geben. Der YM7128B ist doch 
ein nettes Bauteil für Audioanwendungen.

Bis dann!

1
;-----------------------------------------------------------------------------
2
;
3
; Die Ausgabe im Schieberegister in das Ausgaberegister übernehmen
4
;
5
; Dazu am RCK Eingang am Schieberegister einen 0-1-0 Puls erzeugen
6
;
7
SchiebeOut:
8
    sbi   SCHIEBE_PORT, RCK
9
  rcall YMWARTE
10
    cbi   SCHIEBE_PORT, RCK
11
    ret
12

13

14

15
;-----------------------------------------------------------------------------
16
;
17
; Die Ausgabe im Delay übernehmen
18
;
19
; Dazu am DELD Eingang auf H legen, später wieder auf L.
20
;
21
DelayIn:
22
    sbi   SCHIEBE_PORT, DELD
23
  rcall YMWARTE
24
    ret 
25

26

27

28
DelayOut:
29

30
    cbi   SCHIEBE_PORT, DELD
31
  rcall YMWARTE
32
    ret 
33

34

35

36
;-----------------------------------------------------------------------------
37
;
38
; 8 Bits aus temp1 an das Schieberegister ausgeben
39
Schiebe:
40
    push  temp2
41
    ldi   temp2, 8             ; 8 Bits müssen ausgegeben werden
42
 
43

44

45
Schiebe_1:
46
     ;
47
     ; jeweils das höchstwertige Bit aus temp1 ins Carry-Flag schieben
48
     ; Je nach Zustand des Carry-Flags wird die Datenleitung entsprechend
49
     ; gesetzt oder gelöscht
50
     ;
51
    rol  temp1                 ; MSB -> Carry
52
    brcs Schiebe_One           ; Carry gesetzt? -> weiter bei Schiebe_One
53
    cbi  SCHIEBE_PORT, SIN     ; Eine 0 ausgeben
54
    rjmp Schiebe_Clock         ; und Sprung zur Clock Puls Generierung
55

56

57

58
Schiebe_One:
59
    sbi  SCHIEBE_PORT, SIN     ; Eine 1 ausgeben
60
 
61
     ;
62
     ; einen Impuls an SCK zur Übernahme des Bits nachschieben
63
     ;
64

65

66

67
Schiebe_Clock:
68
    sbi   SCHIEBE_PORT, SCK    ; Clock-Ausgang auf 1 ...
69
  rcall YMWARTE
70
    cbi   SCHIEBE_PORT, SCK    ; und wieder zurück auf 0
71
  rcall YMWARTE
72
 
73
    dec   temp2                ; Anzahl der ausgegebenen Bits runterzählen
74
    brne  Schiebe_1            ; Wenn noch keine 8 Bits ausgegeben -> Schleife bilden
75
 
76
    pop   temp2
77
    ret
78

79

80
YMWARTE:
81
;Delay-Steuerfrequenz
82
          ldi  temp1, $9D
83
YM00:     dec  temp1
84
          brne YM00
85
          nop
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.