Moderne x86 CPUs arbeiten mit Taktfrequenzen im Bereich mehrerer 100 MHz. Verglichen mit einem 4 MHz Z80 sind das 2-3 Zehnerpotenzen mehr. Der Z80 schaffte dabei max. etwa 50000 Interrupts/s.
--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
HTML mails will be forwarded to /dev/null.
Fuer den AVR hab ich das schonmal gesehen. Ein mit 20Mhz laufender AVR schafft gerade mal einen 20khz Sinus per DDS zu erzeugen. Dabei bestand das Programm nur aus 5-6Zeilen Assembler.
Wenn man schnelle IRQs haben will dann wuerde ich die Finger von ARM lassen und Renesas SH2A nehmen. Die MCUs haben 16 Registerbaenke die die sie bei IRQs einfach umschalten. So wie der gute alte Z80, bloss halt nicht zwei sondern sechzehn. Der SH2A ist bereits aus dem IRQ wieder raus wenn ein ARM immer noch Register auf dem Stack sichert. :-)
Vergleiche mit normalen Standard CPUs kann man vermutlich garnicht so einfach anstellen. Die sind sicher fuer die meisten Sachen erheblich schneller wie ein Microcontroller, aber ich koennte mir vorstellen das man da teilweise auch sehr negativ ueberrascht wird weil die einfach fuer eine andere Aufgabe designt wurden.
Schwer zu sagen, AFAIK ist das beim PC alles nicht so einfach. Da gibt es zwar ein paar Hardware-Interrupts (z.B. PCI-Bus) aber die springen meines Wissens nicht direkt in die Routine, sondern unterliegen dem
nicht bearbeitet.
Mit "bare metal"-Programmierung von PC-Hardware kenne ich mich nicht so
hat ne PC-CPU i.A. nicht, bzw. nennt sich da dann auch Soundkarte, ist also auch wieder Spezialhardware ;-). Tricks mit Softwareloop (wie beschrieben mit Atmel) gehen i.a. ja nur, wenn das die einzige Task ist, durch nichts unterbrochen. Auf dem PC ist das nicht machbar. Einzige Chance ihmo: den Kerneltreiber des Timers modifizieren und und dessen INT-Routine das DDS-signal ausgeben; maximaler Takt ist da das, was der Timer so kann.
Vorsicht... IDE-Ports sind schon lange keine normalen Portbits mehr sondern da sitzt noch einiges an Hardware dazwischen. Das beinhaltet einen DMA-Controller. Damit kann man sicher Spass haben, aber es ist mehr als ein einfacher I/O-Befehl.
Aber die laeuft doch garnicht mal eben so von alleine. Vermutlich ist Aufwand der notwendig ist damit da erstmal ueberhaubt was von bootet groesser als einen fetten Microcontroller zu verwenden. Alleine nur die notwendige Multilayerplatine!
Darauf wuerde ich mich jetzt nicht versteifen. Das haben die schnelleren Microcontroller von Renesas auch damit man ab 100Mhz den Waitstate nicht so merkt und die ARM haben das doch IMHO schon ab 30 Mhz. Wenn man also in diese Geschwindigkeitsklasse will dann wird sich ein Cache wohl nicht vermeiden lassen. Auch wenn z.B ST das Wort "Cache" in ihren Datenblaettern zu vermeiden versucht. :-)
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.