www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nur mal so einen Timertip


Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-).

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.