www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 38kHz vom Compiler berechnen lassen


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ein AVR (tiny13) mit internen 4.8MHz soll ein 38kHz IR Signal erzeugen, 
und das 560µs lang.

D.h. es muss mit 76kHz entspr. alle 13.15789µs der pin getoggelt werden.

Also alle 63,15789 Takte.

Um die Routine möglichst unabhängig von Timern verwenden zu können, kann 
das ruhig blockierend passieren.

Eine IR Routine für RC5 macht die Modulation so:
#define DELAY_36kHz     (uint8_t)(21.4*(F_CPU/8.0e6)+0.499)



  for(i = 0; i < 64; i++)
   {
    IR_LED_PORT ^= IR_LED_BIT;
        for(counter = 0; counter < DELAY_36kHz; counter++)
            asm volatile("nop" ::);
   }

Wie kann ich da die Takte für die Schleifen und das Toggeln ermitteln? 
NOP braucht wohl einen Takt!?

Ich vermute, dass eine Rückwärtsrechnung dann den Faktor zum Bezug auf 
F_CPU ergibt - wozu die Addition von 0.499 ?


Vielen Dank

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wozu die Addition von 0.499
zum Runden?!

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich wollte mein mit gcc gebauten code mit avr-studio mal simulieren.
Früher wurde da u.U. zwischen den Zeilen auch der C code angezeigt - 
macht die aktuelle version das noch, und wenn ja, welche datei enthält 
die daten? (.elf, .lss) ich finde da nämlich nix!

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, ich habe nochmal make clean, make all ausgeführt und dann im 
avr-studio die .elf datei geladen.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also: nop kostet 1 takt

 for(counter = 0; counter < DELAY_36kHz; counter++) kostet 4

zusammen 5

Mit DELAY_36kHz = 11 liegen zwischen dem umschalten 63 takte bzw. 
13.13µs

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.