Forum: Mikrocontroller und Digitale Elektronik SID am AT91SAM7P256


von Peter P. (uncle-sam7)


Lesenswert?

Hallo NG,

nachdem ich jetzt doch noch nen alten C128D gefunden habe, würde ich den 
SID doch mal gerne am Controller anschließen, zumal die Emulation ja 
jetzt schon passt...

Habe ich das richtig verstanden, dass der SID mit 5V TTL arbeitet? Der 
AT91SAM7 hat ja nur 3.3V Ausgang, oder habe ich da was falsch 
verstanden? Was muss ich denn dann beachten, wenn ich den anschließen 
möchte? Die Pegel muss man wahrscheinlich wandeln, oder? Wie?

Wie sieht das dann eigenlich aus mit dem Verwenden? Den Takt 1MHz kann 
ich doch mit dem MC erzeugen? Da muss ich doch nur eine Leitung ohne was 
dazwischen anschließen? Ich habe gesehen, dass es wohl einen Pin gibt, 
an dem man festlegen kann lesen oder schreiben. Und wenn ich dann ein 
Register beschreiben möchte, reicht es dann, zu sagen "schreiben"-ja / 
Adressleitungen und Datenleitungen setzten? Fehlt da dann nicht noch 
eine Information "Jetzt bitte Daten übernehmen?".

Sorry für die leihenhaftige Fragestellung, aber wie gesagt, alles was 
über die Software hinaus geht ist für mich nicht so einfach...

Vielen Dank für alle Hinweise,
Peter

von Peter P. (uncle-sam7)


Lesenswert?

Über den AT91SAM7 habe ich folgendes gefunden:
...I/Os are supplied at 1.8V or 3.3V and are 5V tolerant. An integrated 
Voltage Regulator permits single supply at 3.3V.

und das Datenblatt vom SID wäre hier:
http://archive.6502.org/datasheets/mos_6582_sid.pdf

Bedeutet das dann, dass ich den SID ohne Pegelwandler ansteuren kann?

von gerhard (Gast)


Lesenswert?

hallo,
im prinzip ist der at91sam7s 5v-tolerant.
es müssen dazu nur die ausgänge auf open-collector, ohne internen 
pull-up geschalten sein und mit ext. pull-ups die ports auf 5v 
"aufgehäängt" werden.

problem dabei: die rise-time ist sehr bescheiden da die pull-ups nicht 
unendlich klein sein können und das umladen der div. kapazitäten seine 
zeit braucht. ob der sid damit ein problem hat weiss ich nicht, da im 
datenblatt keine angaben zu min. rise-time stehen.

problem könnte auch der takteingang werden (pin 6 des sid).
den takt am at91sam7s zu erteugen ist kein problem, allerdings müssen 
die read/write zugriffe synchron zu dem takt sein. keine ahnung wie mann 
das am besten löst.

gruss
gerhard

btw: der prozessor hat die type at91sam7s256!

von Peter P. (uncle-sam7)


Lesenswert?

Hallo Gerhard,

habs heute auch auf dem Chip gelesen: AT91SAM7S256 :-) In älteren 
Beiträgen habe ich den auch schon so genannt. Ich weiß auch nicht, wie 
ich auf "P" komme...

So, jetzt zu Deiner Antwort. Leider muss ich sagen, dass ich fast nur 
Bahnhof verstehe. Ich habe mal mit dem Controller ein HD44780 Display 
angesteuert. Vom Prinzip her ist es doch ähnlich, einen SID anzusteuern. 
Ich kann mir fast nicht vorstellen, dass das Timig so "wahnsinnig" genau 
sein muss (in Richtung + natürlch.)

Ich bin einfach auf der Suche, dass ich mal jemanden finde, der mir das 
Zeug so erklären kann, dass bei mir der Groschen fällt. Hab mich schon 
mir vielen Elektrikern und Elektronikern unterhalten, aber irgendwie 
peil ich es nicht :-(

Was würde denn passieren, wenn ich die Datenleitungen mal 1:1 an die I/O 
Pins des MC anschließe? Kann da was kaputt gehen?

Das sind halt meine größten Befürchtungen, dass ich entweder den PC, den 
MC oder den SID schrotte...

Viele Grüße,
Peter

von Peter P. (uncle-sam7)


Lesenswert?

Hallo NG,

habe jetzt mal den "Poormans DAC" (R2R mit LM358) gebaut und 
angeschlossen. Allerdings hört der sich extrem ätzend an! Bin mir 
sicher, das zuviel Spannung am Ausgang ankommt (max. 2,5V). Und dass die 
44KHz vom Programm her nicht schaffbar sind. Und darunter brauche ich 
erst gar nicht anfangen...

Naja, wie dem auch sei: von der Geschwindigkeit bekomme ich auch schon 
mächtig Probleme im AT91SAM7S256 (Wo jetzt momentan die gesammte 
Emulation abläuft...). Naja, die Daten 1:1 über RS232 haben sich super 
angehört, leider habe ich da noch nicht erkannt, dass der ARM nicht ganz 
hinteher kommt...

Deswegen mal wieder ein kleiner Schwank zurück zur Version mit original 
SID. Kann mir bitte jemand antworten, was denn passieren würde, wenn ich 
den SID 1:1 ohne Pegelwandler an den AT91SAM7S256 anschließe? Ich würde 
halt gerne alles so anschließen, dass ich mit den I/O-Leitungen testen 
kann, den SID anzusprechen... Den ganzen anderen Kram bis zum Line-Out 
müsste ich hinbekommen, da ich den Schaltplan von 128D gefunden habe. 
Und so viel Zeug kommt da nicht mehr...

Vielen Dank für jede Hilfe!
Peter

von Peter P. (uncle-sam7)


Lesenswert?

Hallo, Freunde der Elektronik :-)

jetzt wirds dann ernst. Habe eben die Hauptplatine aus meinem C128D 
"extrahiert". Musste feststellen, dass da ja ein 8580 SID verbaut ist. 
Den MUSS ich UNBEDINGT zum Leben erwecken!

Hab schon einen tollen Anschlussplan gefunden:
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c128/manual/46.gif

Auf der Seite geistern auch noch die Pinbeschreibungen rum:
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c128/manual/42.gif
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c128/manual/43.gif
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c128/manual/44.gif
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c128/manual/45.gif

Es wäre soooooooo toll, wenn sich irgend jemand erbarmen könnte, mir nur 
den Anschluss der Adress- und Datenleitungen an den AT91SAM7 ausführlich 
zu erklären. Speziell, TTL <=> 3,3V was ich zu beachten habe (evtl. 
irgend welche aktiven Bauteile oder/und Widerstände dazwischen etc...)

Was ich für meinen Teil schon mal gesehen habe: VCC = 9V und nicht 12V 
wie bei den anderen SID-Modellen.

Ich bin mir ganz ganz sicher, dass ich die Ansteuerung softwaremäßig 
schaffen würde. Nur mit der Harware habe ich Angst, dass was passiert...

Was bringt´s mir?
Mir bringts wahnsinnig viel. Ich finde die SID-Musik einfach toll!

Was bringt´s euch?
Ich werde - falls das mal funktioniert - ein ausführliches Tutorial 
schreiben, so dass auch andere in den Genuss kommen können.

Also bitte gebt euch einen kleinen Ruck und bringt zu diesem letzten 
wichtigen Teil des Projekts Licht ins Dunkle.

Vielen vielen Dank für jeden konstruktiven Beitrag!

Peter

von Peter P. (uncle-sam7)


Lesenswert?

Hallöle!

Wenn ich mir
http://www.oxyron.de/html/registers_sid.html
so ansehe, dann sehe ich, dass eigentlich alle Soundrelevanten Register 
bis auf $D41C Read-Only sind. Ich würde mal aus dem Bauch raus 
behaupten, dass 90% aller SID-Files dieses Register gar nicht lesen. 
Deshalb würde ich hergehen und die Leitung R/W einfach grundsätzlich auf 
R legen...
90% von 40.000 SID-Files gibt ja immer noch ne lange Playlist, hehe.

Was haltet ihr davon?

PS: wegen der Pegel-Thematik würde ich jetzt am Wochenende dazu 
übergehen, den ganzen Kram direkt am AT91SAM7 anzuschließen. Gerade vor 
diesem Hintergrund hier:

http://www.mikekohn.net/micro/schematics/sid_player.png

Sollte das dem AT91SAM7S oder dem 8580 schaden, dann wirds wohl sehr 
ruhig hier im Forum (zumindest von meiner Seite aus :-)

Also, wenn es noch jemanden geben sollte, der meine Monologe um ein paar 
konstruktive Beträge erweitert, dann bitte immer her damit...

Grüße aus dem Süden!
Peter

von Frank K. (fchk)


Lesenswert?

Peter Pippinger schrieb:

> Es wäre soooooooo toll, wenn sich irgend jemand erbarmen könnte, mir nur
> den Anschluss der Adress- und Datenleitungen an den AT91SAM7 ausführlich
> zu erklären. Speziell, TTL <=> 3,3V was ich zu beachten habe (evtl.
> irgend welche aktiven Bauteile oder/und Widerstände dazwischen etc...)

Die einfachste Möglichkeit ist die Verwendung von Level-Shifter-ICs.

74*245 kennst Du?

Gut. Dann nimm den 74LVCC3245. Funktioniert ähnlich. Das Ding hast zwei 
8 Bit Ports, A und B. Jede Seite hat ihre eigene Spannungsversorgung 
VccA und VccB, wobei VccB immer die höhere ist. VccA geht nur bis 3.3V.
Zu Port A gibts noch zwei Pins Dir und OE, auch diese Signale sind auf 
VccA bezogen!
DIR=1 heißt von A nach B, DIR=0 von B nach A.
OE=0 heißt Ausgänge aktiv, OE=1 heißt Ausgänge abgeschaltet.

Falls Du den 74LVCC4245 findest: ist wie der 3245, nur ist hier Port A 
die 5V Seite und Port B die 3V Seite, und damit sind DIR und OE auch 
5V-Signale und keine 3.3V Signale wie beim 3245. Den 4245 nimmst Du, 
wenn Du mit einem 5V-Controller 3V-Peripherie steuern willst, den 3245 
wenn Du mit einem 3V Controller 5V-Peripherie steuern willst.

So. Von den Dingern nimmst Du drei Stück: einen für die Daten, einen für 
die Adressen und einen für die Steuerleitungen (RW,CS,02,RESET). Wenn Du 
Reset immer auf 5v legst, brauchst Du nur zwei.

Bei dem/denen für Adressen und Steuerleitungen setzt Du OE=0 und Dir=1 
fest. Die müssen ja immer aktiv sein. Unbenutzte Eingänge auf 0 setzen!

Bei dem für die Daten hängst Du auf der 3.3V Seite DIR an RW und OE an 
CS, dann passt das mit der Richtungsumschaltung und der Freigabe der 
Ausgänge.

Solltest Du diesen Chip nicht beschaffen können, kannst Du für 3.3->5V 
z.B. einen 74HCT541 nehmen (mit 5V betreiben!) und für die Gegenrichtung 
einen 74LVC541 (mit 3.3V betreiben). Das heißt dann aber, dass Du für 
die Datenleitungen zwei Chips brauchst (für hin HCT, für zurück LVC) 
(plus einen Inverter).

Das kannst Du Dir merken: Die 74HCT sind 5V Chips mit 3.3V kompatiblen 
Eingängen, die 74LVC sind 3.3V Chips mit 5V-kompatiblem Eingängen, und 
zwar die ganze Serie. Ansonsten immer HC nehmen, LS ist out.
Vorteil: man bekommt diese Dinger auch bei Reichelt.

Damit hast Du eine saubere Wandlung der Logikpegel. Nimmst Du auch, wenn 
Du mit Deinem 3.3V ARM ein LCD ansteuern willst, denn die üblichen 
Textmodusdisplays gehen alle nur mit 5V.

fchk

von skoe (Gast)


Lesenswert?

Für die digitalen Leitungen brauchst Du keine Pegelwandler. Du kannst 
die Leitungen direkt ranknüppern. Der SAM7 ist 5V-tolerant, damit ist 
die eine Richtung schonmal sicher. Die High-Pegel aus dem SAM7 dürften 
nah an 3,3 V liegen. Damit werden sie vom SID dicke als high erkannt. 
Dessen Schwellwert dürfte unter 2 V liegen.

Viel Glück!

von skoe (Gast)


Lesenswert?

Nachtrag: Hab sicherheitshalber nochmal nachgesehen:

NMOS-ICs haben ein V_IH min bei 2,0 V. Ab der Spannung erkennen sie also 
High. Der Atmel hat bei 3,3 V I/O-Spannung eine V_OH min von 2,9 V bei 8 
mA (so viel fließt da gar nicht) bzw. 3,2 V bei 0,2 mA. Das ist die 
Spannung, die er bei einem logischen High mindestens "ausgibt".

Passt also alles von den Pegeln.

von Peter P. (uncle-sam7)


Lesenswert?

Hallo skoe,

weißt Du zufällig (oder auch jemand anders), ob denn alle I/O Pins vom 
Atmel 5V tollerant sind? Ich meine etwas gelesen zu haben, dass es nicht 
alle sind. Bin mir aber nicht sicher, da es immer recht spät war :-)

mfg
Peter

von Thomas T. (knibbel)


Lesenswert?

Peter Pippinger schrieb:
> Wenn ich mir
> http://www.oxyron.de/html/registers_sid.html
> so ansehe, dann sehe ich, dass eigentlich alle Soundrelevanten Register
> bis auf $D41C Read-Only sind. Ich würde mal aus dem Bauch raus
> behaupten, dass 90% aller SID-Files dieses Register gar nicht lesen.
> Deshalb würde ich hergehen und die Leitung R/W einfach grundsätzlich auf
> R legen...
> 90% von 40.000 SID-Files gibt ja immer noch ne lange Playlist, hehe.
>
> Was haltet ihr davon?

Gar nichts!

Erstmal sind die meisten Register des SID Write-Only und nur die letzten 
vier sind lesbar. Schau dir die Registerbelegung nochmal genau und 
gründlich an!

Die R/W-Leitung könnte auf GND gelegt werden, wenn man den SID nur 
beschreiben will, also nur Register $00 bis Register $18. Dies wäre aber 
absolut schlechter Stil! Denn sobald ein Programm was aus dem Chip lesen 
will, wäre nur Müll auf dem Datenbus...

Um eine ordentliche Pegelanpassung zwischen SID und CPU kommst du nicht 
rum: Schau dir mal den MAX3378 und seine Kollegen an.

Gruß,
Thomas

von Michael H. (michael_h45)


Lesenswert?

gerhard schrieb:
> im prinzip ist der at91sam7s 5v-tolerant.
nein, denn...
> es müssen dazu nur die ausgänge auf open-collector, ohne internen
> pull-up geschalten sein und mit ext. pull-ups die ports auf 5v
> "aufgehäängt" werden.
...das funktioniert nicht.
Die internen Schutzdioden ziehen auf Vcc des SAM oder gehen kaputt.

von Peter P. (uncle-sam7)


Lesenswert?

Hallo Thomas,

>> so ansehe, dann sehe ich, dass eigentlich alle Soundrelevanten Register
>> bis auf $D41C Read-Only sind. Ich würde mal aus dem Bauch raus
>> behaupten, dass 90% aller SID-Files dieses Register gar nicht lesen.
>> Deshalb würde ich hergehen und die Leitung R/W einfach grundsätzlich auf
>> R legen...
>> 90% von 40.000 SID-Files gibt ja immer noch ne lange Playlist, hehe.
>>
>> Was haltet ihr davon?

>Gar nichts!

Du hast natürlich recht. Es handelt sich um einen Schreibfehler 
meinerseits (wie bereits geschrieben war es immer recht spät die letzten 
Tage). Ich meinte natürlich write only. Die die beiden anderen Register 
neben $D41C kann ich mir nicht vorstellen, dass die jemals in einem 
Soundfile verwendet werden, da die eigentlich für die Paddles vorgesehen 
waren. Also würde ich meine Aussage durchaus nochmal unterstreichen. 
Kann man im Übrigen auch hier sehen (R/W auf GND):

www.­mikekohn.­net/­micro/­sid_player.­php

BTW: Wie ich das sehe, hat er den SID auch direkt an einen AVR 
angeschlossen...

>Um eine ordentliche Pegelanpassung zwischen SID und CPU kommst du nicht
>rum: Schau dir mal den MAX3378 und seine Kollegen an.

Sauberen Stil mal bei Seite: passt dann die Aussage von skoe nicht? Geht 
der AT91SAM7 nur dann kaputt, wenn ich die internen Pullups deaktiviere 
oder grundsätzlich, wenn ich den direkt anschließe?

Also ich weiß nicht. Ich hab ja wie gesagt nicht sehr viel Ahnung von 
der ganzen Thematiik, aber ich denke alleine in diesem Thread sind schon 
so viele verschiedene Ansichten, dass ich nicht recht weiß, was ich 
machen soll...

Mag sich vielleicht nochmal jemand dazu äußern. Momentaner Stand bei 
mir: ich werde morgen - falls ich keine verständlichen Meinungen hier 
höre - den SID direkt an den AT91SAM7 anschließen. Wenn dann beide im 
A**** sind, dann habe ich immer noch die Möglichkeit einen Player über 
eine Emulation zu erzeugen. Das funktionierte bereits mit dem AT91SAM7S. 
Leider zu langsam. Aber dann hätte ich ja wieder die Möglichkeit, mich 
für ein anderes Board mit anderem MC zu entscheiden.

Also nochmal zusammengefasst:
a) kann ich den SID direkt anschließen?
b) geht was kaputt dabei?
c) was muss ich beachten?
d) warum sollte ggf. die Aussage von skoe falsch sein (die Antwort
   gefiel mir eigentlich bis jetzt am Besten...)

MfG
Peter

von min (Gast)


Lesenswert?

Schonmal hier vorbeigeschaut?

http://www.ucapps.de/

Beim AT91SAM sind doch die Pegeleingänge 5V resistent oder irre ich 
mich?
Dann braucht man also auch keinen Pegelwandler.

gruss min

von Peter P. (uncle-sam7)


Lesenswert?

>Schonmal hier vorbeigeschaut?

ja, ich denke ich hab schon nahezu alle Seiten gefunden, wo ansatzweise 
was mit dem SID gemacht wird.

>Beim AT91SAM sind doch die Pegeleingänge 5V resistent oder irre ich
>mich?
>Dann braucht man also auch keinen Pegelwandler.

Mein Reden. Schau Dir den Verlauf des Threads hier an. Die einen sagen 
ja, die anderen sagen nein. Und ich weiß es nicht. Hab zwar im 
Datenblatt gelesen, dass die Pins 5V tollerant sind, aber irgendwie 
verunsichern mich dann manche andere Aussagen wieder. Wie gesagt, ich 
glaube ich schließe den ganzen Kram morgen direkt an und schau mal was 
passiert...

BTW: weißt Du, wie ich mit einem PIN des AT91SAM7S 1MHz Takt für den SID 
erzeugen kann?

MfG
Peter

von gerhard (Gast)


Lesenswert?

@michael,
>erhard schrieb:
> im prinzip ist der at91sam7s 5v-tolerant.
>nein, denn...
>> es müssen dazu nur die ausgänge auf open-collector, ohne internen
>> pull-up geschalten sein und mit ext. pull-ups die ports auf 5v
>> "aufgehäängt" werden.
>...das funktioniert nicht.
>Die internen Schutzdioden ziehen auf Vcc des SAM oder gehen kaputt.
woher hast du diese "tolle" info? das wusste nämlich nicht einmal der 
atmel support!
bitte keinen quatsch verbreiten!

mfg
gerhard

von gerhard (Gast)


Lesenswert?

@peter,
skoe hat recht, der high-pegel des at91sam7 reicht aus damit der sid das 
high erkennt.
umgekehrt schaden die 5v high-pegel des sid dem at91 nicht (daher 
5v-tolerant).


mfg
gerhard

von (prx) A. K. (prx)


Lesenswert?

Peter Pippinger schrieb:

> Mein Reden. Schau Dir den Verlauf des Threads hier an. Die einen sagen
> ja, die anderen sagen nein. Und ich weiß es nicht. Hab zwar im
> Datenblatt gelesen, dass die Pins 5V tollerant sind, aber irgendwie
> verunsichern mich dann manche andere Aussagen wieder.

Wenn ich mal davon ausgehen darf, dass es um die SAM7S Reihe geht und 
nicht um SAM7P, dann ist das Datasheet in der Hinsicht eindeutig. 
Abgesehen von den 16KB Typen sind sämtliche Port-I/O-Leitungen 
5V-tolerant.

Aber zugegeben, Atmel stiftet etwas Verwirrung. Einerseits steht zu den 
Portpins ausdrücklich drin, dass sie 5V tolerant sind. Ebenso steht in 
den DC Characteristics drin, dass alle Inputs bis 5,5V verkraften. 
Andererseits steht auch irgendwo im Text, dass der TDI-Pin nicht 
5V-tolerant ist (1), ohne dass Ausnahmen wie diese und die der 16KB 
Typen in den DC Char. aufgeführt werden. Das ist unsauber.

1: Und das auch noch mit Schreibfehler, damit man es nicht so leicht 
findet.

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.