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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren