Forum: Mikrocontroller und Digitale Elektronik Nur mal so einen Timertip


von crazy horse (Gast)


Lesenswert?

Aufgabe war, einen CAN-Knoten für Radsensoren zu bauen. Das 
ABS-Steuergerät erwartet die die Impulsabstände als Int-Zahl, 
1bit=3,2µs. Daraus resultiert ein erforderlicher Timertakt von 312,5kHz. 
Mit den AVR-üblichen Vorteilern wäre somit entweder ein 2,5MHz-Quarz 
(/8) oder aber 20MHz (/64) erforderlich. Ersteres ist für den CAN 
(90CAN128, 1MBit) zu langsam, zweiteres bedeutet übertakten, mach ich 
nicht.
Lösung: 10MHz Quarz, damit ist der CAN zufieden. Timer0 im CTC-Modus, 
OCR=0x0f, toggle output on compare.  OC0A liefert einen sauberen 
312,5kHz Takt für den eigentlichen Zähler, der ist dann auf ext. clock 
geschaltet.
Klar, man hätte auch umrechnen können, aber das hat auch seine 
Nachteile. Will nur sagen: man kann auch mit dem einen Timer den clock 
für einen anderen erzeugen und  hat damit wesentlich mehr Möglichkeiten. 
Kostet halt 2 Pins und einen Timer.

von Peter (Gast)


Lesenswert?

Alternative: nimm einen SJA1000 als CAN- Baustein mit eigenem Quarz. 
Dann kannst du z.B. einen ATmega16 mit beliebigem Quarz dranhängen. 
Falls du ne Platine brauchst, sag Bescheid, ich hab hier noch n paar. 
Bist du Diplomand/Praktikant bei BOSCH in Abstatt?

Peter

von crazy horse (Gast)


Lesenswert?

ne Danke, brauch ich nicht. Habe hier auch eine nette Platine mit Mega32 
und 2xMCP2515. Aber in dem Fall brauchte ich 4 Interrupteingänge, 
deshalb hab ich gleich den 90CAN128 genommen, klappt ja auch bestens.
Diplomand? Oh Mann, die Zeit ist längst vorbei. Manchmal hätte ich 
allerdings gerne mehr Interna von Bosch, als allgemein verfügbar :-).

von Peter D. (peda)


Lesenswert?

Verstehe ich nicht.

Warum mußt Du nur bestimmte Vorteiler nehmen ?

Nimm doch einfach Vorteiler 1, dann kannst Du Dir jedes beliebige 
Vielfache von 312,5kHz aussuchen, z.B. auch 15MHz.

Und bei den gebräuchlicheren 16MHz wäre die Abweichung nur 0,4% sollte 
also auch keinerlei Problem sein.


O.k. der 128-er hat ja tonnenweise Pins, da kann man ruhig 2 
verschwenden, aber nötig wärs nicht.


Peter

von crazy horse (Gast)


Lesenswert?

klar kann man das. Aber dann bin ich wieder dran, für jeden einzelnen 
Messkanal einen eigenen Überlaufzähler zu programmieren, Messergebnisse 
umrechnen und und und. Ist ja auch nur eine Teilaufgabe des ganzen, und 
wenn ich einen 312,5kHz-Zählertakt habe, sind die Ergebnisse mit einer 
einfachen Subtraktion direkt fertig. Warum also nicht? Pins sind mehr 
als genug frei, den Timer0 brauch ich auch nicht.
Ein Controller wie Mega8 mit CAN, das wünsche ich mir noch für einfache 
SLIOs.

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.