www.mikrocontroller.net

Forum: GCC timer beeinflussen sich bei atmega 128

Autor: oni (Gast)
Datum:
Angehängte Dateien:

moin,
wenn ich bei meinem atmega128 timer0, 1, 2 gleichzeitig nutzen will wird
timer0 ganz deaktivert und die anderen sind sehr langsam.

kann mir jemand sagen woran das liegt oder mir sogar eine lösung für
mein problem sagen?

danke

der code ist im anhang
Autor: Matthias Lipinsky (lippy)
Datum:

>preload the timer with 96 to get 10us interrupts

SIGNAL(TIMER0_OVF_vect)
{  //timer0 interrupt
  ...
  set(0);
  ..
}

void set(color_num)
{
  ...
  color[color_num]=color[color_num] % 0x46;
}

Ich könnte mir gut vorstellen, trotz des Quartzes von >10MHz die
Modulo-Rechnung durchaus länger als 10µs dauern kann...

Vielleicht so hier:
statt:
void set (...
{
...
  if( color[color_num] > 0x46 )
  {
    color[color_num]=color[color_num] % 0x46;
lieber so:
  if( color[color_num] > 0x45 )
  {
    color[color_num]  -= 0x46;
Autor: oni (Gast)
Datum:
Angehängte Dateien:

ich habe deinen vorschlag umgesezt und die random fuktion aus dem
interrupt entfernt

leider ist timer0 immernoch komplett deaktiviert
Autor: OliverSo (Gast)
Datum:

>TCNT0=70;  //preload the timer with 96 to get 10us interrupts
Mit welchem Takt läuft der Prozessor den nun wirklich?

10 Mikrosekunden sind verdammt wenig. Bei 1MHz Taktfrequenz sind das mal
gerade 10 Zyklen, macht drei für jede ISR. Geht schon mal gar nicht.
Selbst bei vollen 16MHz sind es im Mittel nur 48 Zyklen je ISR, und
davon dürfte die Hälfte schon für push/pop draufgehen.

Fazit: Mit deinen ISR's im 10us-Takt überforderst du den Prozessor bei
weitem.

Aber, mal dumm gefragt, welche Anwendung braucht denn alle 10
Mikrosekunden einen neuen Wert?

Oliver
Autor: oni (Gast)
Datum:

hm verdammt da ist was wahres dran.

naja es soll ein ccfl steuergerät werden für 3 cclfs

werd das jetzt mit einer astabilen Kippstufe lösen bei der ich per pwm
den takt ändere da muss ich auch net soviel programmieren, das liegt mir
wie man sieht nicht so gut ;-)
Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Nimm einen AT90PWMx oder einen ATtiny861 dafür.  Die haben geeignetere
PWMs für sowas.

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net