Forum: Mikrocontroller und Digitale Elektronik Taktfrequenz ändern durch den Einsatz von einem neuen Quartz!


von anis m. (Firma: student) (anismagic)


Lesenswert?

Hallo Leute,

ich habe mal wieder eine Anfängerfrage aber ich zähle trotzdem auf eure 
Unterstützung :)

Eine Software sollte unverändert auf einem neuen µC (Infineon C515C-8Bit 
Single Chip) mit einer externen operating Frequenz von 10 MHz an statt 
12 MHz bei dem alten Gerät, laufen.

Meine Frage ob diese Frequenzunterschiede kritisch für mein System sein 
könnten und warum??? Um dies festzustellen was sollte ich tun?
Noch ein paar Infos: die Software sollte Motoren steuern (ein/aus) und 
die Geschwindichkeit nach Useraufforderungen variieren. Fahrstrecken 
sind mit Endschaltern begrenzt.

Ich danke euch im voraus für eure Hilfe.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

anis magic schrieb:
> Meine Frage ob diese Frequenzunterschiede kritisch für mein System sein
> könnten und warum???
Es könnten Transistoren (PWM) mit falschen Timings angesteuert 
werden....

> Meine Frage ob diese Frequenzunterschiede kritisch für mein System sein
> könnten und warum??? Um dies festzustellen was sollte ich tun?
Weil man dein System nicht kennt, kann man keine tiefgehenden und 
sinnvollen Hinweise geben.

von Erich (Gast)


Lesenswert?

>kritisch für mein System sein könnten und warum???

Eindeutig JA.

Zum einen werden ggf. externe Schnittstellen (RS232, RS422 etc.) nicht 
mehr richtig arbeiten, da Baudrate evtl. von diesem Oszillator 
abgeleitet (es sei denn 2. Oszillator für Baudrate vorhanden).

Zum zweiten --gravierender-- wird die Ansteuerfrequenz des Motors nicht 
mehr stimmen, sowohl was ggf. PWM Duty betrifft  (Größenordnung 20 kHz) 
als auch Verfahr- bzw. Drehzahlen selbst.
Abgeleitete Zeiten (erreichen Endschalter) wird auch nimmer passen dann.

Insgesamt KEINE gute Idee.

Was soll den überhaupt der Sinn und Zweck der Änderung sein???

von xyz (Gast)


Lesenswert?

anis magic schrieb:
> die Geschwindichkeit nach Useraufforderungen variieren


Damit ist sicherlich eine Kommunikation mit einem Terminal oder PC 
möglich.
Wenn diese als UART ausgeführt ist derartiges ohne Anpassung des 
Quellcodes nicht mehr möglich.

von Robert (Gast)


Lesenswert?

Servus,
problematisch kann es werden, wenn von der Taktfreqeuenz abhängige 
Funktionen (Bsp. Timer) mit im Spiel sind. Eine Software entsteht in 
abhängigkeit von der Taktfrequenz da kann eine Abweichung zu anderen 
Frequenzen ganze Prozesse nachteilig beeinflussen.

von Uwe (Gast)


Lesenswert?

Die Zeitbasis mit der die Beschleunigung und Geschwindigkeit deiner 
Motore bstimmt wird ist dann halt eine andere. Ist halt von 16,67% 
langsamer. Wenns nicht weiter stört. Schneller wär kritischer denk ich. 
Aber ohne Schaltplan und Firmware des µC müßte man schon tief in die 
Glaskugel schaun.

von P. M. (o-o)


Lesenswert?

anis magic schrieb:
> Meine Frage ob diese Frequenzunterschiede kritisch für mein System sein
> könnten und warum???

In den allen meisten Fällen ist das kritisch, ja. Weil in fast allen 
Mikrocontroller-Systemen von der Taktfrequenz irgendwelche Timings 
abgeleitet werden, die für ein korrektes Zusammenspiel mit der externen 
Welt genau stimmen müssen. Ich würde das System mal dahingehend 
untersuchen: Die Signale von und zu deinem Mikrocontroller - spielt es 
eine Rolle, ob die genau genau dieses Timing aufweisen oder könnte man 
die auch schneller oder langsamer abspielen, ohne dass sich das System 
daran stört?

UART/RS232: Nein
SPI: Ja
I2C: Ja
PWM: Ja, in Grenzen
...

von Erich (Gast)


Lesenswert?

Ergänzend zu meinem Text  22.10.2012 15:36
füge ich noch an:

Es kann sein, daß das System grundsätzlich nicht mehr läuft.
Denn hochpriore, häufig aktive Interrupt-Routinen brauchen für ihre 
Abarbeitung jetzt mehr Zeit (weil gleichviele Takte der langsameren 
Frequenz).
Daher ist es möglich, daß solche schnelle Interrupts "verlorengehen" 
bzw. "überlaufen", falls das bisherige System die bisherigen Ressourcen 
"fast voll" ausgenutzt hat.

Denkbar ist dann sogar eine Watchdog-Auslösung oder sonstiger teilweiser 
oder vollständiger "Hänger".


Was soll den überhaupt der Sinn und Zweck der Änderung sein???


Gruss

von anis m. (Firma: student) (anismagic)


Lesenswert?

Erich schrieb:

>
> Was soll den überhaupt der Sinn und Zweck der Änderung sein???
>

Der alte µC wird nicht mehr produziert und sollte mit einem der ihm an 
nächsten liegt ersetzt werden.

von anis m. (Firma: student) (anismagic)


Lesenswert?

Uwe schrieb:
> Die Zeitbasis mit der die Beschleunigung und Geschwindigkeit deiner
> Motore bstimmt wird ist dann halt eine andere. Ist halt von 16,67%
> langsamer. Wenns nicht weiter stört. Schneller wär kritischer denk ich.
> Aber ohne Schaltplan und Firmware des µC müßte man schon tief in die
> Glaskugel schaun.

Wie hast du die 16,67% gerechnet???

von Erich (Gast)


Lesenswert?

>Wie hast du die 16,67% gerechnet???

Hmm, das hat Uwe gerechnet.
Aber ich denke:  Mit der Prozentrechnung. Oder mit dem Dreisatz.

von Georg G. (df2au)


Lesenswert?

80C515 ist eine ROM Variante. Meinst du vielleicht 80C535? Oder wird der 
Prozessor in deiner Schaltung nur mit externem Programmspeicher 
betrieben?

IIRC gab es nie 80C5?5, die nur mit 10MHz spezifiziert waren, 12MHz war 
immer die langsamste Version.

Wie viele Exemplare brauchst du, welches Gehäuse? Vielleicht hat noch 
jemand etwas in der Bastelkiste.

von Wilhelm F. (Gast)


Lesenswert?

anis magic schrieb:

> Infineon C515C-8Bit
> Single Chip

Aah, der Mann mit dem 515. ;-)

Ja, ich wechsele an meinen Boards mit 80C515A auch schon mal Quarze.

Ich habe die Software so gestaltet, daß ich die Quarzfrequenz dort 
angebe, und der Preprozessor die richtigen Werte z.B. für Timer und UART 
ausrechnet.

Es gehen aber immer nur relativ wenige Konstellationen auf einmal. 
Timerwerte widersprechen sich schon mal mit Baudraten, und umgekehrt. 
Dann noch CPU-Speed. Irgend einen Kompromiß macht man da immer.

Ein einfaches Beispiel:

Mein 80C517A (ein erweitertes Derivat zum 80C515A) hatte einen 
12MHz-Quarz. Damit geht exakt ein Timerraster von 1ms. Der UART macht 
9600BAUD mit 0,2% Toleranz, das geht eben auch noch.

Für meine Testcode-Downloads über RS232 wurden mir die 9600BAUD zu lahm, 
das dauert bei 64k RAM schon mal über eine Minute. Also änderte ich den 
Quarz auf Baudratenquarz 7,3728MHz, um 38400BAUD zu bekommen. Damit geht 
aber nur noch ein exaktes Timerraster von 5ms, die 1ms nicht mehr.

Wenn man damit klar kommt: OK.

von Wilhelm F. (Gast)


Lesenswert?

Georg G. schrieb:

> 80C515 ist eine ROM Variante. Meinst du vielleicht 80C535?

Das war aber kein Problem. Mit dem Pin /EA (External Access) auf low war 
der 8051 (auch Derivate) ein 8031. Bzw. 80C515 ein 80C535. So benutze 
ich auch die maskenprogrammierten 8051 als ROM-lose 8031, also man kann 
als Bastler die Maskenversionen weiter verwenden.

Das war schon gut so, daß man Maskenversionen nicht gleich in die Tonne 
stopfen mußte, sondern als ROM-lose Version weiter verwenden konnte.

von anis m. (Firma: student) (anismagic)


Lesenswert?

Wilhelm Ferkes schrieb:
> anis magic schrieb:
>
>> Infineon C515C-8Bit
>> Single Chip
>
> Aah, der Mann mit dem 515. ;-)
>
> Ja, ich wechsele an meinen Boards mit 80C515A auch schon mal Quarze.
>
> Ich habe die Software so gestaltet, daß ich die Quarzfrequenz dort
> angebe, und der Preprozessor die richtigen Werte z.B. für Timer und UART
> ausrechnet.
>
> Es gehen aber immer nur relativ wenige Konstellationen auf einmal.
> Timerwerte widersprechen sich schon mal mit Baudraten, und umgekehrt.
> Dann noch CPU-Speed. Irgend einen Kompromiß macht man da immer.
>
> Ein einfaches Beispiel:
>
> Mein 80C517A (ein erweitertes Derivat zum 80C515A) hatte einen
> 12MHz-Quarz. Damit geht exakt ein Timerraster von 1ms. Der UART macht
> 9600BAUD mit 0,2% Toleranz, das geht eben auch noch.
>
> Für meine Testcode-Downloads über RS232 wurden mir die 9600BAUD zu lahm,
> das dauert bei 64k RAM schon mal über eine Minute. Also änderte ich den
> Quarz auf Baudratenquarz 7,3728MHz, um 38400BAUD zu bekommen. Damit geht
> aber nur noch ein exaktes Timerraster von 5ms, die 1ms nicht mehr.
>
> Wenn man damit klar kommt: OK.

Hallo Wilhelm,

das ist toll was du da geschrieben hast :)
könntest du mir noch erklären wie du die Werte manipulierst und worauf 
du dich beziehst bei den Änderungen. z.B. der Zusammenhang zwischen 
Baudrate und Baudratenfrequenz


In meinem Fall möchte ich an der Software nichts ändern, Das Gerät 
sollte durch Tableaueingabe von Bediener gesteuert d.h. fahre rechts, 
fahre links, Stop, fahre mit Geschwindigkeit A oder B etc...

Ich danke dir nochmal im voraus für deine Hilfe :)

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.