Forum: Mikrocontroller und Digitale Elektronik Microcontrollerboard mit 16Bit-Controller


von Dieter (Gast)


Lesenswert?

Hi Leute,

ich will ein Microcontrollerboard mit den 16Bit-Controllern von Hitachi 
bauen.
Die Vorteile von den Controllern sind folgende:
- frei verfügbarer GNU-Compiler(C und C++)
- 16 MByte adressierbarer Bereich
- die neuesten Varianten mit 25 Mhz
- beim H8/3069 sind 512kByte Flash und 16kByte RAM auf     dem Chip
- eine gute Dokumentation der Controller


Das Board soll folgende Anschlußmöglichkeiten haben
- 3 serielle Schnittstellen
- LCD-Display
- Datenbus für IO-Erweiterungen
- Datenbus für externes RAM und Flash
- alle wichtigen Pins auf einen Stecker für eine "Bastelplatine"

Ziele:
- Das Board soll einen preiswerten Einstieg in die 16Bit-Controller 
ermöglichen
- nicht wie andere EVBs nach der ersten Testphase in der Ecke liegen, 
sondern
  durch die Datenbusse und die "Bastelplatine" auch als Vorserienmodell 
dienen können
- Programmierung von Microcontrollern in C++ ermöglichen
- Eine einfache Einfürung in den GNU-Compiler mit lauffähigen 
Beispielen,
  auch etwas umfangreicher als nur ein Blinklicht

Nun meine Fragen:
- Was darf so ein Board kosten?
- Was muß das Board sonst noch haben oder soll es erweiterbar sein?
- Wer hat überhaupt Interesse?
- Ist so etwas interessant für engagierte Hobbyelektroniker?
- Gibt es professionelle Entwickler mit Interesse?
- Sind noch andere der Ansicht, daß es Sinn macht, einen Microcontroller
  in C++ zu programmieren?(Man muß es ja nicht übertreiben, aber etwas 
objektorientiert
  ist doch ganz sinnvoll.)

Bisherige Erfahrungen:
- den legendären 6502 in Assembler programmiert.
  (Bei größeren Projekten sehr unübersichtlich und dann auch 
unzuverlässig.)
- den 6502 in C programmiert.
  (Mit einem nicht optimierenden Compiler keine große Freude,
  dann auch noch die 64k Grenze.)
- Einstieg in die Hitachi-Controller, schon mal keine Speicherprobleme 
mehr.
  (Die Hitachi-EVBs sind allerdings nur bis zur ersten eigenen Platine 
brauchbar und
  liegen dann in der Ecke.)
- Mein zurzeit aktuelles Projekt hat ca. 90 Dateien und eine 
Binärdateigröße
  von ca. 800kByte. Es ist etwas aufgebläht durch Übersetzung der 
Bedienungstexte
  in 9 Sprachen.
- Der Compiler macht einen sehr ordentlichen Code. Ob ein guter
  Assemblerprogrammierer noch etwas besser optimiert, wage ich zu 
bezweifeln,
  da die Optimierung über ein großes und weiterhin wachsendes Projekt
  fortgeführt werden muß.


Dieter

von edi (Gast)


Lesenswert?

hi,

wenn du projekte hast,die man mit 8-bittern nicht
verwirklichen kann,dann nur ran an den 16er.

was ich mit 8 bits nicht machen kann,das ueberlasse ich einem pc.der 
kostet nicht viel mehr als eine komplette
Hitachi ausruestung.

ciao

ps 90% aller hobbyanwendungen machen mehr warteschleifen
als nutzarbeit.

von Sascha Weitkunat (Gast)


Lesenswert?

Um welche 16bitter von Hitachi soll es sich denn konkret handeln?

Bzw. existieren die GNU C und C++ Compiler denn schon oder sind sie im 
laufe des Projektes zu entwickeln?

von Stefan Kaldewey (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

nur weil die Compiler frei erhältlich sind,
musst du dich ja nicht gleich
auf so eine "Krücke" von Hitachi stürzen.
Hast du dir mal die 16-Bit Microcontroller
von Infineon angeschaut. Ist nur ein Vorschlag.
MC's mit 8051-Gehirnen sind sehr beliebt und
daher ist die Unterstützung recht gross.
Ausserdem sind sie Industriestandard!

Standardanhang bei den Infineon-Datenblättern:
Supported by a Large Range of Development Tools like C-Compilers, 
Macro-Assembler
Packages, Emulators, Evaluation Boards, HLL-Debuggers, Simulators, Logic 
Analyzer
Disassemblers, Programming Boards

von Peter D. (peda)


Lesenswert?

Ich halte überhaupt nichts davon, das Haus vom Dach aus aufzubauen.

D.h. zuerst überlege ich mir, welche Anwendungen ich überhaupt vorhabe. 
Und erst dann suche ich den MC aus, der gut dazu passen könnte.

Gut passen heißt dann auch in Hinblick auf Preis, Verfügbarkeit, 
Zuverlässigkeit, Support (von Hersteller oder Foren), persönliche 
Erfahrungen und Fertigkeiten.

D.h. es muß nicht unbedingt ein Super-Super-MC sein, wo meine Anwendung 
nur 1% des Flash belegt und nur 1% der CPU-Leistung verbraucht.


Ich habe bisher leider noch nicht die Killerapplikation gefunden, die 
mich weg vom 8051 drängt, d.h. mehr Flash oder 16Bit benötigt.

Meine größtes Projekt ist nur 40kB groß und benötigt 8kB RAM, da habe 
ich einen P89C668 genommen.


Lange parallele CPU-Datenbusse sind auch heutzutage in Hinblick auf 
CE-Zertifizierung total Out.
Es gibt ja I2C, SPI und Konsorten, womit man bequem beliebige 
IO-Erweiterungen machen kann (PCF8574, 74HC595, 74HC165).
Auch geht der Trend weg von einem Zentral-MC hin zu mehreren kleinen.

Ein MC mit internem Flash ist bedeutend unempfindlicher bezüglich EMV 
und daher leichter zu zertifizieren (meine persönliche Erfahrung).


Peter

von Michael (Gast)


Lesenswert?

Hallo Dieter,

Deine Planung einen 16 Bitter von Hitachi in Zusammenhang mit GCC zu 
verwenden kann ich nur begrüßen. Allerdings würde ich Dir empfehlen, 
eine H8S-CPU (z.B. H8S/2394) einzusetzen, die deutlich schneller 
arbeitet. Als Anregung einen Link 
www.mino-elektronik.de/chip_2352/chip_2352.htm.

An den Reaktionen auf Dein Vorhaben kannst Du vielleicht absehen, daß Du 
hier keine Fans findest. Der eine weiß nicht, wozu 16 Bitter notwendig 
sind, der andere vermutet "Krücken", obwohl er noch im Kinderwagen 
sitzt, und wieder ein anderer hat keine Probleme, die ein 
leistungsfähiger Prozessor elegant, schnell und preisgünstig lösen 
könnte.

Der GNU-Compiler erzeugt recht guten Code; Probleme, wie sie hier oft 
unter AVR-GCC angesprochen werden, habe ich damit nie gehabt. Ich 
verwende die Ausgabe 98r2, die 'mal auf einer Hitachi-CD enthalten war.

Nur Mut  Michael

von Manfred Glahe (Gast)


Lesenswert?

Hallo,
wenn ich von einem 8 Bitter auf einen 16 Bitter umsteigen will, so muß 
der mir dann auch mein Problem lösen. Die Anwendung (wie schon bemerkt 
wurde) ist also maßgebend. Für rechenstarken Einsatz ist er sicher die 
richtige Wahl aber zum "Sammeln" von Daten nicht wirklich besser. Eine 
Anwendung als digitalen Recorder (für was auch immer) setzt eine sehr 
hohe Taktgeschwindigkeit vorraus, größerer Adressraum allein hilft 
nicht. Deshalb setze ich noch immer den 68HC811E2 (8MHZ) ein um z.B. 
Ultraschall zu digitaliesieren (12 Bit Auflösung mit 400KHZ Abtastrate 
und 8 Kanälen). Auch di 16 Bitter währen hier schon allein mit der 
Adressensteuerung der Ram's überfordert.
MfG  Manfred Glahe

von Stefan Kaldewey (Gast)


Lesenswert?

Ich wollte Dieter nicht den Wind aus den Segeln nehmen!
Hab das Hardware Manual vom H8S/2394 überflogen und
muss zugeben das ich wohl mit der "Krücke" etwas voreilig war.

Ich hatte vor gut zwei Jahren ein Board mit
dem 80C535 (8-Bit,A/D-Wandler,UART,Timer,PWM usw. )entwickelt,aufgebaut 
und auch erfolgreich in Betrieb genommen. Die erforderliche Software für 
die Entwicklungsumgebung hab ich in VB programmiert.

Von der Entwicklung bis zum ersten Ausprobieren verging
nicht viel Zeit.

Ich will damit sagen, das wenn man am Ball bleibt und
das Ziel nicht aus den Augen verliert, so ein Projekt
erfolgreich sein kann.

Und wenn du gut in C/C++ bist, dürfte der H8S/2394 auch
kein Problem für dich sein.
Michael wird dir bestimmt noch ein paar Tips geben können!

von Michael (Gast)


Lesenswert?

@Stefan: schön, daß Du meine Anmerkungen nicht persönlich genommen hast; 
ich hoffe, Du erfreust Dich bester Gesundheit.

Die C166er hatte ich mir Mitte der 90er angesehen, um vom 80C552 
wegzukommen. Bei den 8051-Derivaten bestand ein Hauptproblem aus 
Optimierungen, um die Teile ein bißchen auf Trap zu bringen. Soweit ich 
mich erinnere, haben mich die SAB80C166 mit ihrer Segementierung und 
ihrer etwas unübersichtlichen I/O-Funktionalität abgeschreckt. Der Preis 
war hoch und ist es im Vergleich mit den Hitachi-Teilen heute noch.

Wer mit 8 Bittern auskommt, soll es bitte machen. Ich habe jedoch 
gemerkt, daß der Umstieg auf 'dickere' CPUs viel mehr Luft beim 
Programmieren und der Funktionalität bringt. Möglichst unsigned char zu 
verwenden, wie es bei 8 Bit angesagt ist, haut doch vielfach nicht mehr 
hin. Wenn man eine Filterung (gleitender Mittelwert) von 16 Bit 
A/D-Werten braucht, muß man long-Variablen (32 Bit) verwenden - bei 
Skalierungen/Umrechnungen z.B. mm->inch oder kPa->psi oder 'printf' 
ebenso. Schnelle A/D-Samples kann ein DMA-Controller im Hintergrund 
machen, während ein Schrittmotor im kHz-Bereich per Interrupt 
angetrieben wird und ein Meßlineal (z.B. +/- 500,000mm) am 
Inkrementaldecoder die genaue Position aufnimmt und über eine 
Kalibrierungstabelle die Ungenauigkeiten des Meßtisches ausglichen 
werden. Und das Alles gleichzeitig im ms-Takt. Ein 8 Bitter geht hierbei 
voll in die Knie, ein Prozessor mit 32 Bit breiten Registern bringt hier 
eine deutliche Leistungssteigerung !

Früher hatte ich das Problem, wie passt meine Aufgabe in den Prozessor. 
Heute ist das kein Thema mehr. Dabei liegen die Kosten für 
CPU/RAM/Flash-EPROM nur unwesentlich höher als die z.B. eines ATmega128.

Michael

von Manfred Glahe (Gast)


Lesenswert?

Hallo Michael,
"Schnelle A/D-Samples kann ein
                  DMA-Controller im Hintergrund machen,"
Wie schnell ist eine Ramadresse beschrieben im DMA Modus? Und wie liest 
Du die ADW Daten zwischendurch ein (oder hat Dein Controller einen ADW 
mit 12Bit Auflösung). Welchen Controller (außer den Coldfire) kannst Du 
für eine solche Anwendung empfehlen?
MfG  Manfred Glahe

von Michael (Gast)


Lesenswert?

Hallo Manfred,

wenn Deine Frage auf 'Erbsenzählerei' hinausläuft: daran werde ich mich 
nicht beteiligen.

Ein 16 Bit Wert benötigt zur Speicherung im internen RAM 50ns, extern 
100ns bzw. 200ns (16 bzw 8 Bit Busbreite). Der DMA-Controller braucht 
noch eine gewisse Zeit für die Buszuteilung (siehe Datenblatt). Mit 
externem RAM 512kB kann man bei 400kHz und 16Bit etwa 0,5 Sek. 
abspeichern - wenn es Dich interessieren sollte.

Michael

von Manfred Glahe (Gast)


Lesenswert?

Hallo Michael,
natürlich interessiert es mich, sonst würde ich nicht fragen. Aber ich 
wollte nicht wissen wie die write/time ist, sondern wie hoch die 
Wiederholrate ist (darin sind alle Zeiten enthalten). Allein das 
Schreiben ins Ram dauert nach deinen Angaben 200nS mal 8 Kanäle sind 
1800nS + Totzeit zwischen Adressänderung?
D.h. ich möchte wissen wie schnell ich einen Wert (16 Bit) vom DAW 
abholen und im RAM speichern kann.
Bislang habe ich keinen Controller gefunden der mir die existierende 
HC11 Hardware ersetzen könnte und die Fragen nach technischen Daten sind 
nicht "Erbsebzählerei" sondern Fachfragen und die sollte man auch als 
solche beantworten (wenn man denn Antworten hat).

MfG  Manfred Glahe

von Dieter (Gast)


Lesenswert?

Hallo Manfred,

die mir bekannten Hitachi Controller haben eine
Auflösung von 10Bit. Schon mal schlecht.

Dann beträgt die max. Sampletime 2,8us pro Kanal.
(Beim H8/3069 mit 25MHz)
Allein damit sind keine 400kHz möglich.
Von 8 Kanaelen einmal ganz abgesehen.

Wie laeuft es denn bei deiner vorhandenen Hardware?

Bei 8 externen AD-Wandlern kaeme es auf einen Versuch an.
Das sind allerdings genau die Beispiele, fuer die ein
einfaches Entwicklungsboard Sinn macht.


MfG
Dieter

von Manfred Glahe (Gast)


Lesenswert?

Hallo Dieter,
an interne ADW Kanäle denke ich dabei nicht, die sind, soweit mir 
bekannt ist, alle zu langsam. Externe DAW's sind als serielle sehr gut 
für diese Anwendung einzusetzen. Ich verwende den MAX5712. Das 
eigentliche Problem ist die Steuerung der RAM- Bank. Mit dem HC11 geht 
das nicht direkt denn der ist viel zu langsam dafür. Selbst mit einem 
wesentlich schnelleren PIC16F84 wird das noch nichts. Die Frage ist 
also, gibt es einen Controller der Daten vom Port einliest und sie dann 
im Ram ablegt, mit einer ausreichenden Geschwindigkeit. (400KHZ/Byte).
Ein DSP währe hier wohl am Besten geeignet, aber den muß man auch 
erstmal beherrschen und billig ist so ein Einstieg auch nicht gerade.
MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

@Manfred,

wenns nur darum geht, Daten von einem Port zu lesen und im RAM 
abzulegen, dann sieht das z.B. beim DS89C420 mit 33MHz so aus:

loop:
jnb Strobe, $
jb Strobe, $ ;Daten gültig mit Strobe 1->0
mov a, P1 ;port einlesen
movx @dptr, a ;und ablegen mit auto increment
ajmp loop

Das ganze dauert 14 Takte, d.h. das sind dann also 2,3MByte/s.

Oder man machts in einem Interrupt und reserviert einen DPTR dafür, dann 
dauerts 16 Takte.

Noch 3* schneller gehts mit einem Cygnal C8051F120 (max 100 MIPS)


Beide sind allerdings nur popelige 8-Bitter und noch dazu von der 
8051-Familie.


Peter

von Michael (Gast)


Lesenswert?

@Manfred:
1. Deshalb setze ich noch immer den 68HC811E2 (8MHZ) ein um z.B. 
Ultraschall zu digitaliesieren (12 Bit Auflösung mit 400KHZ Abtastrate 
und 8 Kanälen).
2. Mit dem HC11 geht das nicht direkt denn der ist viel zu langsam 
dafür.

Was ist denn nun richtig ? Der MAX5712 ist ein DA-Wandler, wie soll ich 
das verstehen ?

Beim H8S gibt es verschiedene DMA-Möglichkeiten. Eine davon ist der 
'normal-mode' mit 'auto-request'. Hier werden max. 65636 Transfers (8 
oder 16 Bit) in einem Rutsch ausgeführt. Bei 16 Bit Busbreite benötigt 
man 200ns zur Übertragung eines Wortes. Das sind 10MB/s. Acht Kanäle mit 
16 Bit bräuchten dann 1,6us entsprechend 600kHz. Bei 8 Bit Busbreite 
verdoppelt sich die Zeit.
Bei 'kleineren' Samples unter 30KB (beim H8s/2394) kann man auch ins 
interne RAM schreiben: 250ns/Wort oder 2us für acht Kanäle oder 500kHz 
(8 Bit Datenbusbreite).

Wenn man 'nur' 400kHz Abtastrate hat (alle 2,5us ein Kanal) gibt es 
andere Möglichkeiten des DMA-Controllers, die die CPU kaum belasten und 
im Hintergrund laufen können, ohne den Prozessor zu blockieren. So hatte 
ich Dein Problem verstanden.

Michael

von Uwe (Gast)


Lesenswert?

Hi
Komisch bei mir steht der HC811E2 mit 8x8 ADW im Buch.
und für eine Singelumsetzung werden 32 Taktzyklen benötigt. Das sind bei 
12MHz Quarz = 3MHz Takt 93,75 KHZ Umsetzrate je Kanal. Bei 8 Kanälen 
also 11,72KHz.
Ultraschall auf 8 Kanälen????? Das ist zwar immernoch schneller als AVR, 
aber man sollte auf dem Boden der Realitäten bleiben. Ich mag den HC11 
auch, aber versuch mal einen HC12 oder HC16 da fängt der Spass erst 
richtig an.
Gruss Uwe

von Eckhard (Gast)


Lesenswert?

Hi,

also die HC16 sind ja nun eher auslaufmodelle. Das dumme an den HC12ern 
ist, das es nicht so einfacvh ist da ein BDM Tool zu bauen und das die 
Gekauft unangenehm teuer sind.

Eckhard

von Uwe (Gast)


Lesenswert?

@Eckhard
Stimmt aber den 12er bekommt man auch mit Loader und dann reicht RS232.
Gruss Uwe

von Manfred Glahe (Gast)


Lesenswert?

Hallo Michael,
zu Deier Frage:Was ist denn  nun richtig? Meine Angaben zu diesem 
Problem waren offensichtlich nicht präzise genug (den ADW hatte ich 
offensichtlich mit dem DAW namentlich verwechselt). Hier nochmal das 
Problem.
Es müssen 8 analoge Kanäle mit 400KHZ Abtastrate und 12 Bit Auflösung 
gewandelt und abgespeichert werden. Bei der geforderten Laufzeit fallen 
dann 16MB Daten an.
Der HC11 steuert eine HARDWARE mit dem ADW MAX1284 und speichert dessen 
Daten in einer Rambank. Natürlich wird da noch mehr getan (auch das 
anschließende DAW mit dem MAX5712) aber das kann alles wesentlich 
langsamer erfolgen und wird vom HC11 erledigt. Ich würde mir nun in 
Zukunft die aufwendige Hardware für die Rambanksteuerung sparen wollen 
und einen Controller einsetzen der diese EXTERNE Rambank dierekt 
ansteuert (zumindest den unteren Adressbereich). Zu Herrn Dannegger: ist 
das Abspeichern mit AUTOINC nur für das interne Ram zu verwenden?
MfG  Manfred Glahe

von Michael (Gast)


Lesenswert?

Hallo Manfred,

ich hoffe, auch Du siehst es so, daß die zögernde Offenlegung Deiner 
Anforderungen nicht ganz geschickt war. Auf die gleiche Weise könnte ein 
8051 auch eine Frequenz von 800-900MHz in 1Hz Schritten erzeugen: Befehl 
über RS232 an HP-Signalgenerator.

Der MAX1284 ist ein serieller Wandler und kein Flash-Wandler; folglich 
braucht er noch eine Ablaufsteuerung, bevor er sein Ergebnis abliefert. 
Deine Hardware ist daher sicherlich sehr umfangreich; die Leistung des 
HC811 eher zweitrangig.
 Ich will mich hier nicht auf dem H8S festbeißen, aber er würde es wohl 
auch noch schaffen, Deine 16MB Daten per DMA abzulegen, wenn diese 
parallel zum Zugriff zur Verfügung stehen: block transfer mode. Die 
Daten müssen dabei memory-mapped vorliegen. Unter Umständen kann der DTC 
(data transfer controller) den DMAC entsprechend konfigurieren und 
nachladen. Dies erfordert aber ein bißchen Planung und Verständnis der 
CPU. Der DMA-Controller kann dabei dann den gesamten Adressraum von 16MB 
linear adressieren !

Oder man macht es wie Caesar der Römer nach der Regel 'parte et divide': 
für jeden Kanal einen eigener Prozessor. Oder ein PLD, oder ...

Michael

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Michael,
ich habe kein Problem mit der Offenlegung der Schaltung (im Anhang die 
Hauptsteuerung und von mir aus auch den Rest wenns interressiert). Nur 
handelt es sich hier um einen koplexen Ablauf der Verarbeitung und ich 
wollte das Problem auf einfache Fragen reduzieren. Läßt sich aber so 
wohl doch nicht durchführen, sehe ich jetzt ein.
Natürlich hast Du Recht, wenn es nur um die Ausgabe ginge aber das währe 
eben nur der eine Aspekt. Im Prinzip handelt es sich um einen kompletten 
"Recorder" welcher analoge Signale digitalisieren soll und z.B. auch auf 
dem Oszi darstellen soll. Ebenfalls zur Ausgabe von synthetisierten 
Daten oder Konserven soll er geeignet sein. Auf die Schnelle habe ich 
das mit meinem derzeitigen Wissen gelöst.In Zukunft sollte es jedoch 
eleganter gelöst werden und danach suche ich jetzt.
Die Ablaufsteuerung mit seriellen Wandlern benötigt natürlich 
400KHZ*16/Kanal und deshalb habe ich diese Details bislang weggelassen 
(paralelle Wandler sind auch möglich, müssen aber byteweise gepuffert 
werden und selektiert werden und begrenzen ein für allemal die 
Auflösung, serielle kann ich später für andere Aufgaben beliebig wählen 
da die ADW/DAW Platine extern am Signal untergebracht ist). So 
umfangreich ist die Hardware eigentlich nicht da sie auch noch den 
programmierbaren Taktoszillator und die Paralellport anbindung zum 
Rechner enthält. Möglicherweise findet ja jemand einen geeigneten 
Controller für diese Anwendung (Datenblattangaben allein helfen nicht 
unbedingt weiter). Ich möchte mich aber ausdrücklich für einige gute 
Anregungen bei allen bedanken.
MfG  Manfred Glahe

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.