Forum: Mikrocontroller und Digitale Elektronik ProzessorGeflüster


von walifogel (Gast)


Lesenswert?

ProzessorGeflüster

So ein Prozessor hat einige Interessante Fähigkeiten.
Z.B. der ’’ATmega8515’’ Mir steht nur das Datenblatt aus dem Internet
zur Verfügung.
Da steht das man extern noch einen Speicher anschließen kann. Die
Signale, ALE, /WR, /RD und Adressen sind vorhanden.

Nun das große ABER.
Ich will auch einen speicher anschließen aber anders als vorgesehen
weil ich die Ports brauche und der RAM als ein Ringbuffer organisiert
ist.

Kann ich trotzdem mit den Leitungen ALE, /RD, /WR im richtigen Timing
klappern oder ist das ein feststehender Befehl der nicht teilweise
ausführen werden kann. Also keinen Adressleitungen, weil dort ein ander
Port benötigt wird.

Erst mal danke für eure Antworten

Wf

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Bei Nutzung des XMEM Interface musst Du deinen externen Speicher auch
entsprechend der Signal und Port Belegung anschliessen.
Der Controller Kern erzeugt dann bei Zugriff auf die entsprechenden
XMEM Adressen die Signalpegel und das Timing.

Wenn Du den Speicher anderst anschliessen willst, must das XMEM
Interface deaktiviert sein. Du musst dann aber die richtigen Pegel und
das Timing über Software abhandeln.

/Michael

von walifogel (Gast)


Lesenswert?

@ Michael
Wenn ich dich richtig verstanden habe, dann ist das ein feststehendes
Protokoll, das komplett deaktiviert werden muss.

Ist dir bekannt ob man dann noch mit den Beinchen Klappern kann.
Dann bräuchte ich keine Ausgänge zu Opfern!

Ich muss das über Software abhandeln, da der Speicher als RingBuffer
betrachtet wird und ich die Zeiger verwalten mus. Extern kommt noch ein
Adresszähler hinzu.

Wf

von noname (Gast)


Lesenswert?

also der >betreff< ist große scheiße

von Hannes L. (hannes)


Lesenswert?

> also der >betreff< ist große scheiße

Wieso???
Der sagt doch sehr viel aus... ;-)

...

von Kai R. (kairiek)


Lesenswert?

Prozessorgeflüster: Schade und ich dachte hier wirds intim... ;-)

Nix für ungut, lasst euch ned ärgern.

Aber kurz zum Thema: Mit den Zeigern solltest du keine Probleme haben.
Der µC stellt dir nämlich schon drei Stück zur Verfügung, über die du
auf deinen Speicher zugreifen kannst. Schau mal im Datenblatt noch den
Registern X, Y und Z...
Was soll der externe Adresszähler? Bitte näher erklären...

MFG

Kai

von walifogel (Gast)


Lesenswert?

Das Datenblatt, des ATmega8535/ATmega8515, das ich hier habe, ist nicht
besonders Informativ.
Das DatenBuch währe sehr hilfreich, weis jemand wo ich das für kleines
Geld bekommen kann, am besten in German.

wf

von Kai R. (kairiek)


Lesenswert?

Des hier ist sehr informativ:
http://atmel.com/dyn/resources/prod_documents/doc2512.pdf

MFG

Kai

von Rahul (Gast)


Lesenswert?

Wenn man den "Complete-Datasheet" hat, dann sind da alle notwendigen
Informationen drin (ausser vielleicht dem Instruction Set, für den es
ein eigenes PDF gibt...)

von Christoph W. (christoph)


Lesenswert?

Du kannst zumindest PortC bei eingeschaltetem XMEM Interface komplett
abschalten. Mit PortA geht das allerdings nicht. Da dieser Port
gemultiplext wird, wirst du den auch nicht frei kriegen. Minimalbedarf
für XMEM ist PortA + ALE + RD + WR (11 Signale).

von walifogel (Gast)


Lesenswert?

@Christoph Wagner (Christoph)

’’Michael Wolf (Mictronics)’’’ hat weiter oben geschrieben das man XMEM
Interface komplett deaktivieren kann, und somit der Port A frei wird.
Ich möchte aber die Pins ALE, /WR, /RD weiterverwenden, weil ich eine
Externe Hardware Speicherlösung bevorzuge.
Dadurch wird es möglich das der Prozessor in den RAM schreibt und ein
externer USB, on Block, aus dem RAM liest.

wf

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Die Pinfunktionen ALE /WR und /RD sind entweder auf Port-Pins mit
Mehrfachbelegung oder als einzelne Pins nur mit dieser Funktion
ausgeführt.

Bei Pins mit Mehrfachbelegung sind diese speziellen Funktionen nur dann
aktiv, wenn auch das XMEM aktiviert ist, ansonsten verhalten die sich
wie normale Port-Pins.

Mit anderen Worten: Nur wenn XMEM aktiviert ist, werden die Signale an
ALE, /WR und /RD automatisch erzeugt.

Wenn XMEM deaktiviert ist kannst Du mit den Ports und Pins machen was
Du willst. Ausser bei Controllern mit separatem ALE Pin. Dieser läst
sich nicht direkt ansprechen.

Alles das kann man auch in den Datenblättern der entsprechenden
Controller mit XMEM Interface nachlesen.

---
>>Ich möchte aber die Pins ALE, /WR, /RD weiterverwenden, weil ich
eine
>>Externe Hardware Speicherlösung bevorzuge.
>>Dadurch wird es möglich das der Prozessor in den RAM schreibt und
ein
>>externer USB, on Block, aus dem RAM liest.

Aha, und wie willst Du den RAM nur mit Hilfe von ALE, /WR und /RD
adressieren?
Um Adressleitungen kommst Du nicht drum herum.

/Michael

von walifogel (Gast)


Lesenswert?

@Michael Wolf (Mictronics)
Das ist ganz einfach, ich habe doch geschrieben das das RAM ein
Ringbuffer werden soll.
Auf so was gibt es keinen wahlfreiem Zugriff, sondern einen
SchreibZeiger und einen LeseZeiger.
Holt der Schreib- den Lese- Zeiger ein ist der Buffer voll.
Eine Startadresse wie im Hauptspeicher brauche ich nicht das ist der
Physikalische beginn des RAMs.
Nun ja ALE sollte halt den Zähler Takten der die Adressen für das RAM
erzeugt.

von Profi (Gast)


Lesenswert?

Wie bringe ich Dir das am besten bei ... ?
Wenn Du die Adressen mit einem externen Zähler erzeugen willst, musst
Du ihn mit normalen Port-Pins ansteuern, und Deine Software muss die
Pins entsprechend bedienen (Zähler clearen und hochzählen).

Oder Du machst es mit dem XMEM-Interface, dann hast Du die Adressen vom
µC erzeugt (man braucht einen Adress-Zwischenspeicher, der mit ALE
(Adress Latch Enable) gelatcht wird) und kannst z.B. mit den
x,y,z-Registern darauf zugreifen.

Eine Mischung aus diesen beiden Möglichkeiten geht nicht!

Die 2. Lösung erscheint mir wesentlich einfacher, da wenn Du 2 Pointer
(read und write) brauchst, Du den Zähler viel zählen lassen musst
(außer Du verwendest 2 Zähler, einen zum Lesen und einen zum Schreiben.
So würde die Software einfacher, aber die HW komplizierter.)

von Kai R. (kairiek)


Lesenswert?

Hallo walifogel,

ich würde mir an deiner Stelle auch überlegen, ob ich das USB Interface
nicht mit an den µC anschließe. Wenn dieses Daten anfordert kannst du
diese, ggf. auch mit Interrupt, ruck zuck aus dem RAM lesen. Zusammen
mit den X, Y, Z Regs und dem XMEM Interface ist das eine sehr gute
Alternative zu deiner Hardware-Variante und ist auch nicht unbedingt
langsamer.
Außerdem macht es kaum einen Unterschied zwischen beiden Varianten, da
du dir die Zeigen so oder so merken mußt.

MGF

Kai

von walifogel (Gast)


Lesenswert?

@Profi
@Kai Riek (kairiek)

Ohne Schaltung ist das schwierig zu erklähren.
Im prinzip ist das so, das sowohl der Prozessor als auch zusätzliche
Hardware, auf das RAM zugreifen können.
Nur der USB macht mir noch sorgen. Zu erst dachte ich,
mit einem externen USB könnte ich die Daten aus dem RAM in den PC
schaufeln.
USB <->Harware<->RAM | AVR hat Pause
Dann an USB<->USART<->AVR<->Software<->Hardware<->RAM
Oder an USB<-> in Software <->AVR<->Software<->Hardware<->RAM

wf

von Michael W. (mictronics) Benutzerseite


Lesenswert?

>>Ohne Schaltung ist das schwierig zu erklähren.

Na vielleicht gibst Du uns dann ein paar mehr Details, damit die Leute
auch verstehen was Du überhaupt machen willst.

Vielleicht zum Anfang ein paar einfache Fragen:
Welcher AVR Controller wird verwendet?
Welcher USB Interface Controller wird verwendet?
Was macht die "Hardware"?
Was soll die ganze Schaltung darstellen?

/Michael

von Rolf Magnus (Gast)


Lesenswert?

> Ist dir bekannt ob man dann noch mit den Beinchen Klappern kann.
> Dann bräuchte ich keine Ausgänge zu Opfern!

Kannst du mal erläutern, was du unter "mit den Beinchen Klappern"
verstehst, und wie das Ausgänge sparen soll?

von walifogel (Gast)


Lesenswert?

Das frage ich mich allmählich auch. Ich war bisher der Meinung das man
ein Register, (z.B. PB0…7) mit einem Befehl komplett in die Ausgänge
schreiben kann, und/oder von da lesen kann.
Es geht um diese Geschwindigkeit, um die Timer und Interrupt. Sonst
hätte ich ja auch eine Hand voll ICs nehmen können.

(Es geht immer noch um einen Low- Kost Logik Analysator)

Ich weis jetzt nich-, bin ich ein Blindfisch oder bin ich nich-.
Jedenfalls finde ich in den ganzen Datasheet, der Prozessoren, keine
angaben über die Setup time, wie lange dauert es z.B, bis ein Eingang
vom Prozessor erkannt wird, und er darauf reagiert ????
Klar einige Timing Diagramme habe ich gesehen aber keine Zeiten, Daten,
Fackten.

Weis jemand etwas näheres über die versteckten ’’ns’’.

von Schau Mal (Gast)


Lesenswert?

Blindvisch bitte

fuer Dich muss ein ganz neuer Prozessortyp entwickelt werden !

Du solltest mal DataSheets lesen anstatt komic-prozesse zu entwickeln.

von walifogel (Gast)


Lesenswert?

>>Blindfische bitte << Ich sag doch, zu dumm zum zumm zummm …

Was aber sind  >>komic-prozesse<< :--)))))

wf

von Michael W. (mictronics) Benutzerseite


Lesenswert?

>>(Es geht immer noch um einen Low- Kost Logik Analysator)

Na vielleicht fängst Du erst mal klein an. zB. Damit:

Hier ganz unten:
http://www.mikrocontroller.net/articles/Logic_Analyzer_Project

Oder direkt:
Projekt LoLA
http://avrfreaks.net/index.php?module=FreaksAcademy&func=viewItem&item_type=project&item_id=47

von Mnaos (Gast)


Lesenswert?

"...wie lange dauert es z.B, bis ein Eingang vom Prozessor erkannt
wird, und er darauf reagiert ????"
Nun, ich gehe mal davon aus, dass der Prozessor spätestens einen Takt
nach dem anlegen des Signals den Wert auslesen kann... Soll das ganze
Interrupt gesteuert laufen kommt dann noch die Verzögerung durch den
Einsprung in die Interrupt-Routine dazu.

Wieviel Kanäle willst Du machen dass Du Dich so am PortA festklammerst?
Der 8515 hat ja immerhin 35 I/O's - ist da der PortA so wichtig, dass
Du auf den nicht verzichten kannst?

von walifogel (Gast)


Lesenswert?

@Michael Wolf (Mictronics)

>>(Es geht immer noch um einen Low- Kost Logik Analysator)
>>Na vielleicht fängst Du erst mal klein an. zB. Damit:

Würde wir alles unterlassen was andere schon gemacht haben, währe die
Menschheit längst ausgestorben.

Ein gutes Projekt, es ist aber zu Teuer und für den Einfachen Bastler
nur schwerlich nachzubauen.

Nicht jeder kann die FPGAs oder Prozessoren in der dort geforderten
form, beschaffen und Programmieren.

Aber danke für den Hinweis.

Wf

von walifogel (Gast)


Lesenswert?

@Mnaos
Der Portname ist eigentlich egal, wichtig ist nur das der möglichst
nicht x-fach belegt ist, ich den als eine Einheit behandeln kann und
nicht auf einige Funktonen des uC verzichten muss.

>>Wieviel Kanäle willst Du machen dass Du Dich so am PortA
festklammerst?
Na ja pro Prozessor, 8 Eingänge, 1 RAM, 1 USB einmal anschaffen.
Low- Cost eben.

Leider gibt es anscheinend keinen Prozessor der Schnell >16MHz ist,
Preiswert ist, leicht zu beschaffen ist und keine Zerrupfte Ports
hat!!

Wf

von Kai R. (kairiek)


Lesenswert?

>Ohne Schaltung ist das schwierig zu erklähren.
>Im prinzip ist das so, das sowohl der Prozessor als auch zusätzliche
>Hardware, auf das RAM zugreifen können.
>Nur der USB macht mir noch sorgen. Zu erst dachte ich,
>mit einem externen USB könnte ich die Daten aus dem RAM in den PC
>schaufeln.
>USB <->Harware<->RAM | AVR hat Pause
>Dann an USB<->USART<->AVR<->Software<->Hardware<->RAM
>Oder an USB<-> in Software <->AVR<->Software<->Hardware<->RAM

Kannst du dann nicht wenigstens versuchen ein Blockschaltbild zu
entwerfen, wie das ganze etwa aussehen soll? Hier kann sich nämlich
wirklich niemand ein richtiges Bild von deinem Vorhaben machen.

MFG

Kai

von Sven (Gast)


Lesenswert?

@komischer Vogel

>Würde wir alles unterlassen was andere schon gemacht haben, währe die
>Menschheit längst ausgestorben.

>Ein gutes Projekt, es ist aber zu Teuer und für den Einfachen Bastler
>nur schwerlich nachzubauen.

>Nicht jeder kann die FPGAs oder Prozessoren in der dort geforderten
>form, beschaffen und Programmieren.

>Aber danke für den Hinweis.

DU erwartest hier Hilfe; leider sehe ich aber das Du gewisse Dinge und
Links ignorierst. DU scheinst eine Vorstellung zu haben, was Du
vorhast; leider sieht das aber immer mehr so aus: sagt ihr mal was
gutes, ich suche mir schon das Beste raus.

Wie wäre es ein Blockschaltbild zu zeigen und dann könnte man auch auf
Zeitkritische Fragen eingehen.
Ehrlich gesagt, es vergeht einem die Lust - jemandem so zu helfen.....

von Manos (Gast)


Lesenswert?

"Na ja pro Prozessor, 8 Eingänge, 1 RAM, 1 USB einmal anschaffen. Low-
Cost eben."
naja, der 8515 hat wie gesagt 35 Eingänge, 512 Byte RAM (wieviel auch
immer 1 RAM ist^^)... Es gibt auch Bastelanleitungen, mit denen man aus
einem mit 12 MHz betiebenen Atmel einen USB-Client macht (war glaube ich
mit einem Tiny2313) - ob dann aber noch genug CPU-Zeit bleibt um andere
(High-Speed) Aufgaben zu erledigen weiß ich nicht.

"Leider gibt es anscheinend keinen Prozessor der Schnell >16MHz ist,
Preiswert ist, leicht zu beschaffen ist und keine Zerrupfte Ports
hat!!"
Tiny2313, Mega48/88/168, Mega644 haben alle 20MHz, und 18, 23 bzw. 32
Eingänge, wo bestimmt auch zusammenhängende frei sind :)
http://atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC

von Hannes L. (hannes)


Lesenswert?

Ich glaube, hier gibt es noch einen Irrtum.

Es wird wohl vorausgesetzt, dass eine USB-Verbindung zwischen PC und
AVR-MikroCONTROLLER (nicht -PROZESSOR) schnell ist. Das ist sie aber
nur dann, wenn große Datenpakete übertragen werden. Dazu haben die AVRs
aber zu wenig RAM. Eine echte UART-Direktverbindung ohne USB könnte
durchaus schneller sein.

...

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.