M16C - Wie oft ist der Flash beschreibbar?

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Hallo,

ich möchte in meinem nächsten Projekt (auf Anraten dieser NG) gerne
einen M16C Mikrocontroller verwenden. Vorzugsweise den M 30624 FGAFP,
da es den bei Reichelt gibt und er im Grunde alle meine Anforderungen
erfüllt.
Nun habe ich mir mal ein Datenblatt runtergeladen und darin steht,
dass der Flashspeicher nur 100 mal beschreibbar wäre.
Das ist ja nicht besonders viel für eine Entwicklungsphase.
Und wenn ich den Controller auf meine Platine löte, ist es ja auch
nicht mehr so einfach ihn auszutauschen, wenn der Flash-Speicher im
Eimer ist. Mal ganz abgesehn von den Kosten eines neuen Controllers...

Also, stimmt es, dass der Speicher nur 100 mal beschreibbar ist?
Oder ist das vielleicht nur der Wert, den der Hersteller garantiert
und in Wirklichkeit ist er meistens viel öfters beschreibbar?
Oder kann man den Programmcode vielleicht zum Debuggen in den RAM
laden? Von der Speicherorganisation scheind es so, als lägen Flash und
RAM im gleichen Adressraum. (Habe das Datenblatt nur grob überflogen)

Gibt es vielleicht sonst noch Wege, dieses Problem zu umgehen?

Ach, und nochwas:
Ich habe grade bei Reichelt gesehn, dass der 5V Typ am Ende mit FGAFP
gekennzeichnet ist und der 3V Typ mit FGMFP.
Im datenblatt heisst der 5V Typ aber FGPS und der 3V Typ FGLPS.
Hat das einen Grund?

Vielen Dank schon mal für Eure Antworten.

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
Quoted text here. Click to load it

Da gibt's ne App Note dazu. Ist absolut kein Problem. Wenn ich's
richtig im Kopf habe kanst Du das Teil "in reality"  ein paar zig
tausend mal flashen.

Zum Thema Speicherorganisation - da liegst Du falsch. Das INTERNE Ram
beginnt üblicherweise um 0x400 (kann glaube ich je nach CPU Typ
varieren). Flash beginnt (abhängig von der Grösse) am "oberen" Ende
also z.B. 0xA0000.

Quoted text here. Click to load it

Die Typen sind etwas verwirrlich. Wenn Du auf die Renesas Seite gehst
solltest Du klar kommen (sprich schauen dass Du das richtige Datenblat
runterziehst). Ich verwende im Moment den M30626FHPGP. Das ist ein
3.3V Typ hat aber 384KB Flash und 32KB Ram. Der ist ziemlich neu -
also wenn's um ein neues Design geht macht der vielleicht für Dich
auch am Meisten Sinn. Der ist im TQFP Gehäuse. Gibt auch eine sonst
identische Variante in QFP (M30626FHPFP)

Ein Nachteil der M16C's ist vielleicht deren Herkunft aus dem
"Japanischen" Sprachraum. Will sagen die Dokus sind teilweise so
komisch geschrieben dass man nie so ganz sicher sein kann was jetzt
genau gemeint ist. Auch steht in den kleingedruckten "Notes" meist das
Wichtigste. Grundsätzlich sind das aber wirklich ganz heisse Dinger :)

Markus


Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

erstmal vielen Dank für deine ausführliche Antwort.

Quoted text here. Click to load it

na dann ist ja alles ok.

Quoted text here. Click to load it

Äh, also ich meinte, dass ROM und RAM sozusagen über den selben Bus
angesprochen werden können. Nicht wie beim AVR, wo Flash und RAM/IO
völlig getrennt sind - also beide bei 0x0000 anfangen. Aber das is ja
nun egal, wenn der Flash doch öfters beschrieben werden kann.

Quoted text here. Click to load it

Sorry, haste da ne Adresse? Ich hab das Datenblatt auf so ner
Uni-Seite gefunden, wo die mit dem Controller ein Projekt gemacht
haben.

Quoted text here. Click to load it

Gibts dazu auf der Renesas Seite auch Infos? Dann schau ich mir den
natürlich auch mal an... Allerdings denke ich, dass 256K schon ne
menge Holz sind... :)

Da du dich ja anscheinend ganz gut mit den Dingern auskennst würde ich
gerne noch ein paar Fragen stellen, die mir beim Durchlesen des
Datenblatts so gekommen sind. Wäre toll, wenn du oder auch jemand
anderes zu der ein oder anderen Frage was sagen könnte:

1. Mikroprozessormode/Extendet-RAM Mode:
Sehe ich das richtig, dass der Controller im µP-Mode den internen
Flash gar nicht ansprechen kann, oder heisst das nur, dass ich z.B.
keine Konstanten aus dem Flash laden kann, der Code im int. ROM aber
schon abgearbeitet wird? (Wäre super, weil ich dann praktisch 1 MB
ext. Bereich hätte, sonst fehlen ja 256K)
Ich vermute aber ehr nein, so dass ich für max. ext. Adressraum
allerdings mit "Code im Controller" den Extendet-RAM Mode brauche,
richtig?

2. BCLK:
Das ist wohl die Clock für die CPU und den ext. Bus. Sinnvollerweise
würde ich die gerne auf volle OSC Freq. stellen, also auf 16MHz, damit
ich auch die max. Performance erhalte. Das bedeutet ja dann, dass ein
kompletter ext. RAM Zugriff (ohne Waitstates) innerhalb von einem
Takt, also 62.5ns passiert. Reichen dafür die 55ns SRAM Typen oder
stehen die 55ns nur für einen Teil des Zugriffvorgangs? Das hatte
letztens schonmal jemand hier gefragt, aber zu einer richtigen klaren
Antwort kam es leider nicht, jedenfalls hab ich keine gelesen.

3. CS3:
Dann habe ich es so verstanden, dass das CS3 Signal nur für den
untersten ext. 8K Block aktiviert wird. Heisst dass, ich kann CS3 als
"Eingang" für die Adressdekodierung meiner Perepheriehardware nehmen,
so dass ich nur noch 13 Adressen zu dekodieren brauche?
Und ausserdem, dass ich für diesen 8K Block gesondert einen Waitstate
aktivieren kann?
Funktioniert das mit dem RDY Signal so, dass es einfach so lange auf
Low gehalten wird, bis die ext. Perepherie Hardware "fertig" ist, also
die Adresse/Daten lange genug anlag?

4. Programmierung:
Ist es richtig, dass ich zum Programmieren nur meinen PC an einen UART
des Controllers anschliessen muss, und ich so mit dem Boot-Code meinen
eigentlichen Code draufladen kann? Kann der Boot-Code auch
draufbleiben, wenn der Controller "Stand-Alone" laufen soll?
Erlaubt dieser Code vielleicht sogar Debugging?

Sorry für die vielen Fragen. Habe bis jetzt nur AVR gemacht und der
hatte doch einige dieser Features nicht. :)

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
Hallo Michael

Quoted text here. Click to load it

bitte - man muss ja dem M16C etwas helfen. Das Teil ist so gut dass es
wirklich schwer zu verstehen ist warum nicht mehr Leute damit was tun.
Ok, QFP ist halt etwas schwieriger als DIL... Die Teile sind
heutzutage auch gut verfügbar (z.B. von Glyn oder Rutronik). Reichelt
hat vielleicht nicht alle Typen aber sonst kanst Du dort ja anfragen.

[snip]

Quoted text here. Click to load it

ACK - nein, das Teil hat sogesehen nur einen Adressraum. Sonst
müsstest Du mit externer Logik ein Bankswitching realisieren (d.h.
kommt auf den Typ an. Der von mir verwendete hat sowas schon eingebaut
um total 4MB zu adressieren - brauche ich aber nicht).

Quoted text here. Click to load it

http://www.renesas.com/eng/products/mpumcu/16bit/m16c/index.html

Quoted text here. Click to load it

Siehe Link. Beachten musst Du auch dass wie erwähnt nur ein Adressraum
vorhanden ist. D.h. je mehr Flash desto weniger Adressraum für
Pheripherie (z.B. externes Ram etc.) Ok, das kommt nun auf den Modus
auch noch an. Mit dem 4MB Modus habe ich mich zuwenig auseinander
gesetzt.

Quoted text here. Click to load it

Es geht so :) Dieser Kontroller ist so vielseitig dass (zumindes ich)
den nicht komplett ausnützen kann mit ein paar mal Durchlesen des
Datenblattes. Das Konzept ist aber IMHO genial und die Dinge die ich
brauche klappen bestens. Auch die Softwareumgebung von Renesas ist
wirklich gut und hat einige positive Überraschungen zu bieten. Was ich
nicht tun würde ist mit den gepushten Produkten von IAR etc. zu
Arbeiten. Einfach NC30, TM und KD30 installieren - das reicht völlig.

Quoted text here. Click to load it

Naja, es gibt den Mikroprozessor Mode. In diesem Mode kennt die CPU
nichts internes mehr - also nur noch was am externen Adress/Datebus
hängt. Dann gibts den "Memory expansion Mode". In diesem Modus teilt
sich die CPU den Adressraum mit dem externen und internen Speicher
(egal ob internes Flash oder Ram). Dieser Modus ist wirklich "nett"
wenn man Pheripherie anschliessen will und z.B. noch etwas mehr
Speicher braucht etc. Ich habe in meinem Design z.B. 2 Pheripherien
und ein externes SRAM.

Quoted text here. Click to load it

BCLK ist einfach das CPU Clock Signal welches die CPU intern verwendet
welches nach aussen geführt ist und per Software ausgeschaltet werden
kann. Die CPU unterstützt für ihre eigene Funktion die main clock, sub
clock, ring oscillator clock oder PLL clock. Damit kannst Du die CPU
z.B. intern mit 16, extern mit 8 Mhz takten. Die von mir erwähnte CPU
läuft übrigens maximal mit 24Mhz (auch eine kleine neuerung). Das geht
aber nur mit extern 12Mhz und intern PLL Clock (ok, es läuft auch mit
einem externen 24Mhz Quarz ist aber out of spec).

Natürlich sollte das RAM schnell genug sein. Mit der 16Mhz Variante
müsste 55nS ok sein. Ich verwende aber ein 16 Bit organisiertes Ram
von Samsung (K6R4016V1D-TI10) das ist 10nS schnell - also wirklich
kein Probelm. Da dieses Ram 16x256KB organisiert ist hätte ich
theoretisch 512KB Ram. Da aber der Adressraum anderweitig benutzt ist
verbleiben effektiv nur noch 320KB - hat mir aber gereicht. Wenn das
bei Dir um ein Studium Projekt oder was privates geht kann ich Dir ein
paar davon organisieren. Sonst wird dir z.B. Rutronik solche Ram's
sicher gerne verkaufen.

Quoted text here. Click to load it

Die CS Signale und deren Mapping in den Adressraum varieren von Typ zu
Typ. Bei der von mir verwendeten CPU wurde CS3 z.b. dem grösseren
Flash Adressraum "geopfert" und es stehen also nur CS0 - CS2 zur
verfügung - ein Nachteil, hat mir aber (noch) gereicht. Ich bin mir
nicht sicher ob ich Deine Frage richtig verstehe, aber ich habe z.B.
eine CF - Karte an 0x10000 gemappt, führe aber nur 4 Adresslietungen
(A0-A2 und A10) zur Karte hin. Wenn ich dann was an Adresse 0x10000
schreibe, wird CS1 (low) aktiv und die Karte "sieht" dann
logischerweise nur maximal A0 - A10 (wobei A3 - A9 fix auf GND gelegt
sind). Das externe RAM hingegen hängt bei mir an CS0 und da sind alle
Adressleitungen verbunden.

Quoted text here. Click to load it

Bei der von mir verwendeten CPU geht das. Ich glaube aber (bin mir
hier nicht sicher) dass das ein neues (und wertvolles) Feature dieser
CPU ist. Will sagen wenn ich mich nicht irre kann das die von Dir z.Z.
Favorisierte CPU noch nicht. Das Datenblatt wird hier aber sicher
klärung bieten.

Quoted text here. Click to load it

Ja, mit RDY fügst Du Waitstates ein. HOLD könntest Du auch noch
verwenden. War mir aber etwas zu aufwendig (ich wollte möglichst keine
externe Glue Logik) Da die von mir verwendete CPU aber pro /CS
waistates erzeugen kann brauchte ich dieses Feature nicht.

Quoted text here. Click to load it

Ja, es gibt ein Tool (Flashstart) mit dem Du den Code in den
Kontroller überträgst. Dazu brauchst Du blos ein serielles Kabel an
dessen einem Ende ein MAX232 oder so die Pegel für den Kontroller
anpasst. Für die SW Entwicklung gibt's einen sogenannten "Rom
Monitor". Diese kleine Firmware programmierst Du in den Kontroller,
und die funktioniert dann zusammen mit dem KD30 Debugger. Damit ist
schon einiges an Debugging zum Nulltarif möglich. Die paar Bytes die
der Rom Monitor braucht fallen bei dem grosszügigen Flash nicht
wirklich ins Gewicht. Ist die Software fertig, flashst Du diese
einfach komplett in die CPU (überschreibst damit den RomMonitor) und
gut is. Von Glyn und Renesas selber gibt's Evaluation boards. Die sind
nicht so wahnsinnig teuer und ermöglichen einen sanften schnellen
Start. Natürlich geht's auch "the hard way" :)

Quoted text here. Click to load it

No problemo.

Markus

Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

Quoted text here. Click to load it

Bin jetzt schon mächtig gespannt. :)

Quoted text here. Click to load it

So, wie ich das verstanden habe, kann man dann verschiedene Blöcke des
ext. Bereichs umschalten, aber das hätte man ja auch ohne dieses
"vorgesehene Feature" mit 2, 3 IO-Pins machen können. Ich sehe
irgendwie nicht so ganz den Vorteil...
Da ich aber sowiso nicht vorhatte, die 1MB Grenze zu durchstossen, ist
das erstmal egal... :-)
Das mit dem Flash stimmt natürlich. Ich denke da werde ich erst mal
bei dem "Reichelt-Typ" bleiben. Sonst hab ich naher noch zuwenig RAM.
Und 256K sollte ja nun wirklich erst mal reichen, das grösste was ich
bis jetzt hatte waren 8K...

Quoted text here. Click to load it

Über die Entwicklungsumgebung habe ich mir bisher noch gar keine
Gedanken gemacht. Ich habe einfach mal gehofft, dass es da schon
irgendwas brauchbares geben wird.
Gibts diese drei Programme (NC30, TM und KD30) umsonst? Das wär
natürlich super. :-)

Quoted text here. Click to load it

Ok, das ist auch das was ich brauche. Also, alles klar...

Quoted text here. Click to load it

Ich glaube ring Osc. und PLL gibts bei meinem Model (M 30624) noch
nicht.

Quoted text here. Click to load it

Was meinst du mit int. 16 MHz und ext. 8 MHz? Nur dass der ext.
anliegende Takt 8 MHz ist und intern verdoppelt wird, oder dass der
ganze ext. Bus dann mit 8 MHz läuft?
Das scheind der M 30624 auch noch nicht zu können, ich bin mit 16 MHz
aber erstmal zufrieden.

Quoted text here. Click to load it

Hm, zu der Adressraumorganisation hätte ich da auch noch ne kleine
Frage (Ich denke jetzt an 16 Bit, seperaten ext. Bus):
Und zwar bin ich etwas durcheinander, da ja der ext. Datenbus 16-Bit
organisiert ist, aber der ext. Adressraum mit den 20 Adressleitungen
Byteweise angesprochen werden kann. Heisst das, dass bei einem 16-Bit
Zugriff die Adressleitung 0 irrelevant wird?
Also, ich hatte vor, zwei RAMs vom Typ 512Kx8 zu verwenden. Einen an
das High-Byte und einen an das Low-Byte des Datenbusses.
Für die Bus Signale wollte ich den Modus mit RD, WRL und WRH nehmen.
RD wollte ich an beide RAMs führen, WRL an den Low-Byte RAM, WRH an
den High-Byte RAM. Die Adressleitungen vom M16C würde ich dann ab A1
an beide RAMs legen. Chipselect beider RAMs würde enabled wenn ext.
Adresse anliegt, es aber keine Adresse für ext. Perepherie ist.
Ich würde zwar etwas RAM verschwenden, da ja die letzten 256K vom
Flash-ROM belegt sind, aber das wär mir mal egal.
Ext. Perepherie wäre dann z.B. ein IDE Interface. Dieses hat nun aber
einen 16 Bit Datenbuss. Da hatte ich dann vor, dessen WR nur auf low
zu setzten, wenn WRL und WRH vom M16C low sind. RD könnte ich ja
einfach verbinden. Die Adresse für die ca. 10 Register des IDE
Interfaces würde ich dann wieder aus A1-A4 des Datenbusses vom M16C
generieren.
Entsprechend für andere ext. Perepherie.

Würde das so funktionieren?

Quoted text here. Click to load it

Ist ein privates Projekt. Danke für das Angebot, aber nicht nötig.
Soviel kosten die Dinger ja auch nicht. Und bei Reichelt muss ich
sowiso bestellen.

Quoted text here. Click to load it

Hab's mir grade nochmal durchgelesen und denke, das müsste bei dem
M 30624 so funktionieren (mit dem CS3). Werds einfach ausprobieren.

Quoted text here. Click to load it

Hm, ich werde mir das einfach noch ein paar mal durchlesen... Das wird
schon. Ansonsten bau ich eben doch nen Adressdekoder ein. Ich möchte
halt ausser den paar ext. Perepheriegeräten möglichst alles voll RAM
machen.

Quoted text here. Click to load it

Hab's grade eben nochmal gelesen. Scheind auch bei dem M 30624 zu
funkionieren.

Quoted text here. Click to load it

Was ist denn der Unterschied zwischen RDY und HOLD?
Das habe ich irgendwie noch nicht so ganz raus.
Gibt des denn Hardware, die das RDY Signal direkt anspricht? Oder baut
man sich da einen Counter, der nachdem RD/WR auf Low ging die BCLK
zählt und erst nach ein paar Takten RDY wieder freigibt?

Quoted text here. Click to load it

(snip)

Ok, das ist ja wunderbar. Scheind ein richtig klasse Teil zu sein. *g*

Und vielen Dank nochmal für alle Eure guten Antworten hier.
Aber eine Frage hätte ich noch, was mir eben auffiel:
Der Controller hat ja zwei Stackpointer, einen für Interrupts und
einen für Normalbetrieb. Wo ist denn da der Sinn?

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
Hallo Michael

[snip]
Quoted text here. Click to load it

Klar, aber man spart dabei IO Pin's. Die nehmen dazu die /CS1 - /CS3
Leitungen. Hat dann ein ganz nettes Adresslayout. In der "Mitte" des
Adressraumes hat es dann 8 256KB fenster. Da das aber "Jenglisch" ist
sehe ich da auch noch nicht so ganz durch. Habe mir aber darüber nicht
den Kopf zerbrochen da ich's nicht brauche.

Quoted text here. Click to load it

Gehen würde das leicht. Allerdings macht dann der C-Compiler nicht
mehr mit und das ist für mich ein No-Go. Sollte ich sowas brauchen
kommt mir ein richtiger 32 Bitter in's Haus. Will damit sagen jeder
Kontroller hat seinen Einsatz und es käme ja auch niemandem in den
Sinn mit einer "Ente" 5 Tonnen Kies zu transportieren.

[snip]
Quoted text here. Click to load it

Naja, man kann die Umgebung von Renesas runterladen und dann - so
glaube ich - ein halbes Jahr lang "evaluieren"...

[snip]

Quoted text here. Click to load it

Wie gesagt ich habe mich nur kurz mit dem Vorgänger beschäftigt weil
mir diverse Dinge an der neueren CPU gut gefallen haben (24Mhz etc.)

Quoted text here. Click to load it

Letzteres


Das ist der Wahnsinn an dieser CPU. Ob Du's glaubst oder nicht.
Praktisch ALLES kann auf verschiedene Arten konfiguriert werden. Diese
CPU unterstützt 8 bit Datenbus oder 16 Bit Datenbus, gemultiplexten
Adress und Datenbus, getrenter Adress und Datenbus. 16 Bit Zugriffe
können auch auf zwei Arten realisiert werden.

Quoted text here. Click to load it

Das klapt so sicher auch. Ich habe einen "frühen" Prototypen so
aufgebaut.

Quoted text here. Click to load it

So sollte das klappen. IMHO müsstest Du hier nichts verschwenden.

Quoted text here. Click to load it

IMHO must Du hier nicht mal speziell was unternehmen. Wenn Du
sicherstellst dass alle Zugriffe mit 16 Bit ausgeführt werden setzt
die CPU automatisch die Leitungen richtig.

Quoted text here. Click to load it

Danke schon. Nachteil der /RD /WRK /WRH Methode ist dass physikalisch
auf dem Bus immer 16 Bit GELESEN werden. Das würde z.B. verunmöglichen
einen 8 Bit Registerzugriff auf einem CompactFlash zu machen was
problematisch sein KANN. Alternativ kanst Du aber eben auch /RD /WR
und /BHE und /A0 verdrahten. Die CPU macht dann automatisch die
richtige Art des Zugriffes (also 8 oder 16 Bit). Im ersten Anlauf
hatte ich's wie Du, im zweiten anders rum :) Geht beides.

[snip]
Quoted text here. Click to load it

Definitiv. /CS3 fehlt erst ab 320 KB Flash im erweiterten Modus. Alle
"kleineren" Versionen unterstützen /CS3 - auch meine CPU wenn ich den
internen Speicher nicht in der SFR PM13 gesetzt wird.

Quoted text here. Click to load it

Aber sicher


Nein, einen Dekoder brauchst Du definitiv nicht.

Quoted text here. Click to load it

Hmm, ich dachte nur ein zusätzlicher sei konfigurierbar gewesen? Hast
Du CSE auch?

Quoted text here. Click to load it

/RDY fügt waitzyklein ein, /HOLD trennt die CPU vom Bus und hält sie
an. Letzeres ist für DMA.

Quoted text here. Click to load it

Naja, wie einer diese Möglichkeiten nutzt ist offen.

Quoted text here. Click to load it

Yep, ich bin wirklich auch ziemlich fan. Ich freue mich schon darauf
die Teile mal zu probieren welche ich noch nicht gebraucht habe. Z.b.
die AD, PWM und was da sonst noch alles in dem Ding rumschwirrt :)

Quoted text here. Click to load it

Performance. Die CPU hat ein alternativen Registersatz benutzt man
diesen nur für Interupts muss man die "normalen" Register nicht
sichern. Für den M16C hat Mitsubishi ein Realtime OS geschrieben
dessen API über Softwareinternupts (gitbs auch) implemeintiert ist.
Dabei hat dann das OS auschliesslich den alternativen Registersatz
verwenden, und die "Applikation" die normalen Register.

Nochmals, diese CPU ist sehr vielseitig und Leistungsfähig. Es gibt
Leute die sagen "komplex" - sehe ich aber nicht so. Ist eigentlich
alles leicht verständlich - nur eben Features in grosser Anzahl.

Markus


Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

Quoted text here. Click to load it

Kann man, nachem das halbe Jahr rum ist, auch wieder die Zeit
zurückdrehn oder sonstige Massnahmen ergreifen? :-)))
Naja wenn's gut ist kann man ja auch mal n paar € für springen
lassen...

Quoted text here. Click to load it

Wie meinst du das? Indem ich andere RAMs und einen anderen Aufbau
verwende? Oder kann ich das sonstwie ändern?
Wenn ich bei den 8 Bit Typen bleibe bräuchte ich ja 2x 384KB, und ob's
die gibt...
Und 2x 256K + 128K gibt nen riesen Verdrahtungsaufwand..
Und wenn ich 16 Bit RAMs nehmen würde hätte ich da auch ne krumme
Zahl.

Quoted text here. Click to load it

Ja, klar, stimmt, einfach die WRL-Leitung an die 16 Bit Adressen. Dann
könnte man sogar die vereinzelten (eigentlich alle ausser dem
Datenregister) 8 Bit Register des IDE Interfaces 8-Bit mässig lesen.

Quoted text here. Click to load it


Sprich man müsste bei 8 Bit die Eingabe immer erst ver &0x00FF en?

Quoted text here. Click to load it

Ist natürlich ein Argument. Ich werde morgen mal versuchen meine
Speicherorganisation auf diese Signale auszulegen.

Quoted text here. Click to load it


Ok, mit dem CS3 bekomme ich meinen 8K Block, aber darin muss ich ja
noch bischen zwischen den verschiedenen Peripheriegeräten
unterscheiden... Aber die paar Gatter dürften nicht das Problem
werden...

Quoted text here. Click to load it

Hm, CSE find ich grade nicht, aber im CSR Register kann ich für jeden
CS einzeln nen Waitstate enablen.
Die Frage ist natürlich, ob ein Waitstate für das IDE Register
reicht... Sonst muss ich da wohl doch was mit RDY machen.

Quoted text here. Click to load it

Ahso... ja, DMA, das Kapitel werde ich mir morgen auch mal
durchlesen... Vielleicht lässt sich das ja auch nutzten... :-)

Quoted text here. Click to load it

Ok, dass der alternative Registersatz Sinn macht ist klar. Aber warum
brauch ich dann einen zweiten Stackpointer. Wenn ich nur einen hätte
würde der doch dann lediglich länger, oder?
Für zwei muss ich ja dann auch 2 Speicherbereiche freihalten (ok,
sollte bei den Unmengen an Speicher kein Problem sein *g*)
Übrigens, wenn ein Interrupt grade ausgeführt wird kann diesen doch
ein Interrupt mit höherer Priorität unterbrechen, richtig? Dann muss
ich also den einen Registersatz, den ich nur für die Int's benutze
trozdem bei jedem Interruptbeginn saven, oder?

Quoted text here. Click to load it

Och, ich Moment finde ich das schon alles recht komplex. :-)
Aber es scheind sich wirklich zu lohnen.

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
On Sun, 27 Jul 2003 00:28:10 GMT, snipped-for-privacy@gmx.de (Michael

Quoted text here. Click to load it


Es geht das Gerücht um, dass sich der Compiler nach einen halben Jahr
nochmals neu installieren läßt ...

Irgendwo hab ich auch schon mal eine SerienNr. für den Compiler
gesehen, aber bei dem schönen Wetter geh ich eh lieber nach drausen.


Tschö
   Dirk

Re: M16C - Wie oft ist der Flash beschreibbar?
Hallo Michael

[snip]
Quoted text here. Click to load it

Nein, Deine 2x256 KB sind ab 0x30000 gemappt. /CS0 ist nur active low
wenn Du einen Adresse zwischen 0x30000 - 0xcffff ansprichst (das ist
bei der 256 KB Flash 20KB Ram CPU so, also die welche Du nehmen
willst). Du verdrahtest also A1 - A18 an die chips. Wenn A19 high ist
(was deine Ram Bausteine dann ja nicht sehen), "passt" der rest des
Busses so dass deine Ram Bausteine den Bereich von 0 - 2ffff sehen.
D.h. Du kannst die vollen 512 KB nutzen.

[snip]

Quoted text here. Click to load it

Nein, das macht die CPU schon. Wenn aber die PHERIPHERIE macht ein
einem 16Bit Zugriff eventuell was anderes als bei einem 8 Bit Zugriff
und das KANN problematisch sein - KANN, hängt von der Pheripherie ab.
Beispiel, stell Dir vor Du hättest eine 8-Bit Pheripherie. Register 0
- wenn gelesen - setzt irgendeinen internen wichtigen Status zurück.
Du brauchst nun aber unbedingt den Wert in Register 1. Liest Du nun
Register 1, kriegst Du wohl dieses Byte in die CPU rein, die
pheripherie hat aber Register 0 auch gelesen und quasi ohne dass Du
Dir das unbedingt gewahr sein musst diesen einen wichtigen Status
zurückgesetzt.

Quoted text here. Click to load it

Für's RAM ist's kein Thema, bei Pheripherie kommts darauf an. Bei CF's
must Du entweder immer 16  Bit zugriffe ausführen und dann tatsächlich
Operationen durchführen (z.B. Statusregister und Komandoregister) oder
eben einen sauberen 8 Bit Zugriff implementieren. ACHTUNG, das ist
aber beim M16C so dass nur entweder der ganze Buss mit 16 Bit läuft
oder 8-Bit. Du kannst also nicht pro /CS Area wählen (wäre ganz nett
wenn das ginge).

Quoted text here. Click to load it

Uhmmm - Du hast doch /CS0 - /CS3 - warum nicht ein Chipselect pro
Pheripherie? Dazu sind die doch da!

Quoted text here. Click to load it

Ja, EINEN. Mit CSE kannst Du dann bis zu zwei weitere definieren. Es
gibt Pheripherie bei der EIN Waitstaite einfach nicht ausreicht.

Quoted text here. Click to load it

Für CompactFlash - soviel kann ich dir sagen - reicht EIN Waitstate.
Ich denke das sollte bei IDE Platten nicht schlechter sein.

Quoted text here. Click to load it

Ja. Ich denke mal die hatten einen Anwendung mit nur einem Interupt
und 50 Milionen benötigter Chips oder so....

Quoted text here. Click to load it

Naja, ich habe nichts gegen den Ausdruck "komplex" solange er nicht
abschreckt. Man kann beim M16C wirklich Zug um Zug vorgehen, also
Feature um Feature betrachten und zu nutzen beginnen und so gesehen
muss es nicht "komplex" im Sinne von "viel zu aufwendig" oder so
gesehen werden. In diesem Sinne finde ich den Ausdruck "flexibel" oder
"vielfältig" besser angebracht.

Markus

Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

Quoted text here. Click to load it

Jetzt weiss ich, was du meinst...
Ich musste mir das ein paar mal durchlesen... :-)
Du gehst davon aus, dass ich nur 512KB als ext. RAM nutzen möchte.
Der ext. verfügbare Adressraum geht ja aber von 0x6000 bis 0xBFFFF.
Das sind 744KB und die würde ich auch gerne bis auf die 8KB (welche ja
durch CS3 selektiert werden und für ext. Geräte sein sollen) nutzen.
Deshalb war mein Gedanke, einfach 2x 512x8 zu nehmen. auch wenn dann
1024KB - 744KB = 280KB ungenutzt blieben.


Quoted text here. Click to load it

(snnip)

Ok, alles klar. Danke für den Hinweis.

Quoted text here. Click to load it

Da muss ich mir die Pheripherie erst nochmal genauer anschauen, ob's
da Probleme gäbe.

Quoted text here. Click to load it

Wie oben erwähnt würde ich die Bereiche von CS0 bis CS2 gerne für RAM
nutzten. Deshalb muss ich da nocheinmal die Adresse anschauen.
Übrigens: CS0 hat ja laut Datenblatt einen internen Pull-Up. CS1-CS3
nicht. Könnte ich jetzt einfach CS0 bis CS2 zusammenschalteten und
somit meinen RAM aktivieren? Das wäre ja dann genau der komplette
externe Bereich ohne die 8KB am Anfang. Vorrausgesetzt, der Pull-Up
von CS0 reicht auch für CS1 und CS2.

Quoted text here. Click to load it

Ach so, ja, das stimmt. Geht nur einer. Für alles andere bräuchte ich
dann RDY.

Quoted text here. Click to load it

Hm, ich weiss nur, dass es bei dem Hmepg Projekt mit manchen Platten
Probleme gab. Und da wurde nur ein AVR bei 8 MHz eingesetzt.
Naja, ein Praxistest wird's zeigen...

Quoted text here. Click to load it

Also abschrecken tut mich das hier sicher nicht. Ich mach ja schon gar
nix anderes mehr... :)
Also, vielen Dank nochmal für deine Hilfe.

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
On Sun, 27 Jul 2003 14:21:27 GMT, snipped-for-privacy@gmx.de (Michael

Quoted text here. Click to load it

Ach so - ja, das habe ich tatsächlich falsch verstanden.

Hmmm - Müsste schon gehen, Du musst dann aber für die Pheripherie
vermutlich Glue - Logik verwenden. Das ist Dir aber sicher schon klar.

(snip)

Quoted text here. Click to load it

Naja, sonst kannst Du /CS1 und /CS2 einen eigenen Pullup spendieren.
Das macht sowieso Sinn, weil sonst "läuft" Dir die Pheripherie nach
dem Reset davon. /CS1 und grösser sind nach dem Reset tristate und das
bedeutet die Pheripherie läuft Amok, schliest den Buss kurz und
braucht eine riesen Menge Strom. Klar, ist normalerweise nur für ein
paar Mikrosekunden - normallerweise, aber NICHT beim Debuggen. ;) Wie
Du vielleicht gemerkt hast spreche ich aus Erfahrung :)) Wenn der
Debugger beim Programmstart steht, ist die CPU im Reset - und obiges
speilt eine grosse Rolle - kann Dir den Spannungsregler verbraten oder
so. Ganz so schlimm war's bei mir nicht, wurde aber ganz schön heiss
bis ich's gemerkt hatte :))

Zusammenschalten sollte IMHO gehen - wenn's nicht klappt kanst Du ja
immernoch ein Gatter nehmen.

(snip)

Quoted text here. Click to load it

Gern geschehen. Schick doch mal ein Link/Mail/Info wenn's was geworden
ist.

Markus

Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

Quoted text here. Click to load it

Ja, deswegen wollte ich ja /CS1 und /CS2 mit /CS0 verkoppeln. Dann
wären die mit /CS0 auch gleichzeitig hochgezogen. Oder meintest du,
dass /CS0 nach dem RESET nicht gleich nen Pull-Up hat, weils ja in dem
Moment ein normaler Portpin ist. Das ist natürlich ein Argument. Dann
führe ich die am besten extrern zusammen und spendieren denen noch nen
Pull-Up.

Quoted text here. Click to load it

Auf jeden Fall. Könnte aber nochwas dauern. :)

Zu dem Flashen nochmal grade:
Sehe ich das jetzt richtig, dass ich die 4 Leitungen des UART1 über
einen MAX232 mit der seriellen Schnittstelle des PC's verbinden muss,
und CNVss auf +5V,  /CE auf +5V und /EPM auf GND legen muss?
Für CNVss kann man ja nen Jumper zu +5V nehmen.
/CE ist ja /WR des ext. Busses und den könnte ich ja somit auch per
Pullup einfach auf +5V legen, sollte ja dann auch im Normalbetrieb
gehen.
Aber /EPM ist im Normalbetrieb ja /HOLD und sollte per Pull-Up auf +5V
gezogen werden. Mach ich da dann am Besten auch nen Jumper nach Masse
für den Programmiermodus dran? (Das steht nämlich in keinem Beispiel
in den Datenblättern so eingezeichnet)
Btw.: Brauchen /RD, /WR und /BHE nen Pull-Up im normalen Betrieb?

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
On Sun, 27 Jul 2003 17:30:12 GMT, snipped-for-privacy@gmx.de (Michael

Quoted text here. Click to load it

Yep, extern - so habe ich das gedacht.

Quoted text here. Click to load it

Ich habe Dir ein Schema meines Programmierkabels per e-mail geschickt.
Ich hätte auch noch ein Schema (und Board?) eines "mini Cores" für
erste Versuche etc.

Ich habe mir EINEN Chip auf so ein Kärtchen gelötet wobei mehr oder
weniger alle Pin's auf 1.27 Raster Buchsenleisten geführt sind. Auf
diese Weise kann ich den Chip "billig" in verschiedenen Designs für
Versuche nutzen ohne immer gliech einen zu verbraten.

Schick mir ne e-mail wenn Du interesse hast.

HTH

Markus

Re: M16C - Wie oft ist der Flash beschreibbar?
Hallo Michael Dreschmann !:
...

Quoted text here. Click to load it

Nein. Soweit ich weiss, in der Praxis mindestens 10 tausend. Unsere Versuche
koennen einige hunderte nachweisen.

Quoted text here. Click to load it

Genau.
...

HTH
--
Grzegorz Zalot

complex ltd.
We've slightly trimmed the long signature. Click to see the full one.
Re: M16C - Wie oft ist der Flash beschreibbar?


Michael Dreschmann schrieb:


Quoted text here. Click to load it

Irgendwo hatte ich gelesen dass das ein Druckfehler sein soll
und eigentlich 100 000 bedeuten sollte.

Wenn ich wiede darüber stolpere sag ich Dir wo es steht...

Gerald


Re: M16C - Wie oft ist der Flash beschreibbar?
Hi!

Quoted text here. Click to load it

Na das wäre natürlich genial... :)

Quoted text here. Click to load it

Nicht nötig, glaub ich dir schon. Werd jetzt einfach mal loslegen und
schaun was passiert...

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?
On Sat, 26 Jul 2003 00:50:09 GMT, snipped-for-privacy@gmx.de (Michael

Quoted text here. Click to load it

unter http://www.m16c.de/ dann EVB-Board-Club -> Important Tips unter
"Every DOWNLOAD the MCU is flashed !"

"Contrary to the Data in the USER MANUAL you could Flash the MCU more
than 100 times - you could flash the M16C minimum 100.000 times. "


Tschö
    Dirk


Re: M16C - Wie oft ist der Flash beschreibbar?

 >ich möchte in meinem nächsten Projekt (auf Anraten dieser NG) gerne
 >einen M16C Mikrocontroller verwenden. Vorzugsweise den M 30624 FGAFP,

Jau, der ist goil. :-)

 >Nun habe ich mir mal ein Datenblatt runtergeladen und darin steht,
 >dass der Flashspeicher nur 100 mal beschreibbar wäre.

Kommt mir auch relativ wenig vor. Aber du solltest noch etwas anderes
bedenken. Der Hersteller garantiert dir ja auch 10 oder mehr Jahre
Haltbarkeit. Selbst wenn er wirklich nur 100 mal beschreibbar ist, so
kannst du den ganz locker ein paar Tausendmal beschreiben. Bloss sind
die Daten dann halt keine 10 Jahre sondern nur noch 1 Jahr oder so
haltbar. Fuer einen Prototyp kein Problem die verkauft man ja nicht. :-)

Olaf


--
D.i.e.s.S. (K.)

Re: M16C - Wie oft ist der Flash beschreibbar?
Hi,

danke für deine Antwort.

Quoted text here. Click to load it

Das wusste ich noch gar nicht. D.h. desto öfter ich einen Flash
beschreibe (bzw. lösche) desto kürzer hält er die Daten...
Naja, dann werd ich einfach mal loslegen.. :-)

Cu, Michael

Re: M16C - Wie oft ist der Flash beschreibbar?


Olaf Kaluza schrieb:

Quoted text here. Click to load it

Bist Du sicher? ;-)

Gerald


Site Timeline