ATMEGA16 8bit-Timer Problem

Gast #365139
Lesenswert?
• ▲
▼
Hi,

habe folgendes Problem:
Ich möchte an einem ATMEGA16 ein Signal ausgeben und dann wieder an
einem ATMEGA16 einlesen. Um verschiedene Signale über dieselbe Leitung
schicken zu können, wollte ich das mit dem 8-Bit Timer machen. Nun habe
ich jedoch das Problem, dass am definierten Pin gar kein Signal
herauskommt! Bin um jeden Tip dankbar ^^.

MfG Stefan
Angehängte Dateien:
Gast #365140
Lesenswert?
• ▲
▼
Deine delay-Funktion wird nicht das tun, was du erwartest, sofern du
Optimierungen einschaltest. Dann wird sie nämlich komplett
wegoptimiert. Das könnte auch dein Problem sein. Das Signal kommt
vermutlich aus dem Port raus, ist aber nur so kurz, daß du es gar nicht
bemerkst. Was hast du gegen die delay-Funktionen der avr-libc?

Übrgiens sind delay-Loops möglichst zu vermeiden. Lange
Interrupt-Funktionen auch. Die Kombination aus beidem ist natürlich
besonders zu vermeiden, da du damit den Prozessor komplett blockierst.
Für einen ersten Test oder wenn der Prozessor eh sonst nichts tun soll,
ist es aber evtl. ok.
Gast #365141
Lesenswert?
• ▲
▼
Ich will ja eigentlich 2 pulse schicken und dann den Abstand messen
(also die zeit, in der das Signal low ist).
Wie bekomme ich das am Besten hin? Den ersten Puls wollte ich ja 50000
Takte lang "high" haben, deshalb das delay.
Gast #365142
Lesenswert?
• ▲
▼
Hi,

delay's in Interrupts sollt man vermeiden bzw. garnicht anwenden.
Am besten haelt man die ISR so kurz wie moeglich.

Du solltest einfach ein flag setzen und in der Main Routine dieses Flag
abfragen.

Quik & Dirty Example:

ISR(OVF)
{
  timer_cnt++;
  if (timer_cnt == 10)
     { status_byte |= (1<<LEDON);}
}

int main(void)
{
  if (status_byte & (1<<LEDON))
  {
    // DO ANYTHING
    status_byte &= ~(1<<LEDON);
  }
}

Gruß,
Dirk

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.