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
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
@ 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
> also der >betreff< ist große scheiße
Wieso???
Der sagt doch sehr viel aus... ;-)
...
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
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
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...)
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).
@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
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
@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.
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.)
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
@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
>>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
> 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?
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.
Blindvisch bitte fuer Dich muss ein ganz neuer Prozessortyp entwickelt werden ! Du solltest mal DataSheets lesen anstatt komic-prozesse zu entwickeln.
>>Blindfische bitte << Ich sag doch, zu dumm zum zumm zummm
Was aber sind >>komic-prozesse<< :--)))))
wf
>>(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
"...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?
@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
@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
>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
@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.....
"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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.