38kHz vom Compiler berechnen lassen

Gast #891524
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:
1
#define DELAY_36kHz     (uint8_t)(21.4*(F_CPU/8.0e6)+0.499)
2

3

4

5
  for(i = 0; i < 64; i++)
6
   {
7
    IR_LED_PORT ^= IR_LED_BIT;
8
        for(counter = 0; counter < DELAY_36kHz; counter++)
9
            asm volatile("nop" ::);
10
   }

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
Gast #891564
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren