Hallo, ich bin drauf und dran mir eine Mikrocontrollerschaltung mit Hilfe des Tutorials selber zusammen zu bauen. Allerdings möchte ich einen AtMega16 verwenden. Nun ist mir das mit dem Quarzoszi nicht ganz klar: Ist dieser überhaupt notwendig? Könnte ich auch die 16Mhz des AtMega16 voll ausreizen? Was sind Vor-und Nachteile von verschiedenen Taktungen? Danke Marco
Interner Oszillator: Geht nur bis 8MHz, nicht so übermäßig Temperaturstabil, die beiden Pins für den Taktanschluß können anderweitig verwendet werden. Externes Quarz: Braucht 3 Bauteile (Quarz+2 Kondensatoren), recht genau, billig. Quarzoszillator: relativ groß und teuer und strahlt im HF-Bereich. Markus
Kann ich nun einen 16Mhz verwenden? Warum wird im Tutorial ein 4Mhz verwendet? Grüße Marco
Hallo,
ja du kannst einen 16er Quarz verwenden, wenn du nicht die L-Version
des Controllers nimmst.
> Warum wird im Tutorial ein 4Mhz verwendet?
Weil man nicht immer den schnellsten Quarz nehmen muss?! Immer so
schnell wie nötig, nicht wie möglich...
Viele Grüße
Hi, die 4 MHz haben sich so langsam bei AVR Controlern eingelebt. Erstens weil die AVR Risc sowieso schnell sind, 1 Takt und meistens ein Befehl, und zweiten wo kämen wir hin mit 16 MHz und einen Software Timer. Ich hab mit 4 MHz schon zwei Register in benuzung für 150ms.
Hi @Jörg Das versteh ich jetzt nicht. Ich komme bei 4MHz, 1024er Vorteiler und einem 8-Bit Timer auf eine INT-Frequenz von 15,2Hz (65,536ms) Also sollte doch ein einziges Register + CTC-Mode des Timers locker für deine 150ms reichen. Matthias
nur so theoretisch, wärs möglich, nen frequenzgenerator mit ttl-pegel an den µC anzuschliessen?
"wärs möglich, nen frequenzgenerator mit ttl-pegel an den µC anzuschliessen?" Sollte gehen, besser ist aber CMOS-Pegel. Peter
Tag, @Matthias, ich meinte einenh Software Timer wo man mit hife von Registern und sprungbefehlen den controller neinige Zeit Beschäftigen läst. Und die Hardware Timer sind mir für solche aufgaben einfach zu schade. Und dann, rechne mal wie weit du kommst mit einem Register. Bsp. Wait1: ldi Tim1,255 Wait11: dec Tim1 ; ein Takt brne Wait11 ; zwei Takte 3 takte 4 MHz 255 = 0,00019125 s also 191,25 µs das sind noch keine 150 ms da muss ein zweiter Hilfszähler her.
Hi also ich hab immer einen frei laufenden Timer mit sowas um 1ms INT Zeit. Sozusagen als Systemtick. Damit kann man wunderbar alle möglich Zeiten im ms-Bereich abfangen ohne auf so einen Mist (ja Mist) wie hartkodierte Schleifen zurückgreifen zu müssen. Sowas kann man machen wenn man mal irgendwo ein paar µs braucht. Aber im ms-Bereich macht man das über den Timertick. Matthias
Frag an Matthias: Angenommen, ich möchte folgendes realisieren: funktion1(); delay(20ms); function2(); delay(30ms); Wie würdest du das machen, auch mit deinem Timertick ? Ich verstehe das nicht so ganz, wo der Vorteil ist. Ob ich jetzt im Timer warte oder in einer Schleife, ist doch eigentlich egal. Wäre nett, wenn du dazu mal was sagen könntest. Gruß Thorsten
Hi Du kannst während der warterei noch andere Dinge machen wie etwa Tasten pollen, den Watchdog bediehnen usw. Kommt eben auf die Anwendung an. Für den Timertick muß man ja nicht unbedingt einen extra Timer reservieren. Evtl. reicht da auch einer der PWM macht oder ähnliches. Obiges Beispiel würde so aussehen: funktion1(); tick=0; while(tick<20) { tuwas; } function2(); tick=0; while(tick<30) { tuwas; } Matthias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.