- LiFePO4 Speicher Test         
Ergebnis 1 bis 8 von 8

Thema: Tonausgabe über µC

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.12.2011
    Alter
    30
    Beiträge
    11

    Tonausgabe über µC

    Hi,
    Bräuchte mal eure Hilfe.
    Ich habe an meiner C-Control Mega 128 ein Lautsprecher angeschlossen. Er befindet sich an einem PWM Ausgang mit Tiefpass.
    In einem Array hab ich eine Sinustabelle angelegt, die den Sinusverlauf als PWM-Werte (0-255) wiedergibt.
    Eigentlich muss ich jetzt ja nur noch die Frequenz es Sinus für verschiedene Töne ändern... Aber genau hier liegt das
    Problem. Im Prinzip gibt es ja zwei möglichkeiten das zu tun entweder ein Sleep zwischen dem Abfragen der Sinus-werte oder mann überspringt einfach ab und zu
    ein paar Werte des Arrays.
    Aber irgendwie klappt das nicht so, ich meine ich kann keine verschiedenen Töne erzeugen.

    Code:
    int delval;                      // globale Variablendeklaration
    float i;
    int counter;
    float rate;
    
    int Sinustabele[256] = {
      127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,
      176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,
      217,219,221,223,225,227,229,231,233,234,236,238,239,240,242,243,
      244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,
      254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,
      244,243,242,240,239,238,236,234,233,231,229,227,225,223,221,219,
      217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,
      176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,
      127,124,121,118,115,111,108,105,102, 99, 96, 93, 90, 87, 84, 81,
       78, 76, 73, 70, 67, 64, 62, 59, 56, 54, 51, 49, 46, 44, 42, 39,
       37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 16, 15, 14, 12, 11,
       10,  9,  7,  6,  5,  5,  4,  3,  2,  2,  1,  1,  1,  0,  0,  0,
        0,  0,  0,  0,  1,  1,  1,  2,  2,  3,  4,  5,  5,  6,  7,  9,
       10, 11, 12, 14, 15, 16, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35,
       37, 39, 42, 44, 46, 49, 51, 54, 56, 59, 62, 64, 67, 70, 73, 76,
       78, 81, 84, 87, 90, 93, 96, 99,102,105,108,111,115,118,121,124};
    
    #define Led1 5
    
    
    void main(void)
    {
    
        Port_DataDirBit(Led1,1);
        Port_WriteBit(Led1,1);
        
        counter = 0;
        rate = 2;   
    
        while(1)
        {
                Timer_T0PWM(Sinustabele[counter],PS0_256);
                counter = counter + rate;
    
                if(counter > 256)
                {
                       counter = 0;
                }
        }
    
        Port_WriteBit(Led1,0);
    }
    Eigentlich müsste sich doch jetzt über die variable "rate" die frequenz irgendwie verändern lassen, weil je nachdem gibt es ja verschieden viele Ticks.
    Aber es Funktioniert nicht , der Ton bleibt immer gleich.
    Achso , angeschlossen ist der Lautsprecher wie folgt : --> http://www.mikrocontroller.net/artic...lung_.28DAC.29

    Hoffe ihr habt eine Idee das ich verändern muss ^^

    Danke im vorraus
    Geändert von Animus94 (03.06.2012 um 21:03 Uhr)

Ähnliche Themen

  1. Asuro mit Tonausgabe ?
    Von IDG im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 19.04.2011, 17:08
  2. Antworten: 1
    Letzter Beitrag: 19.04.2011, 13:36
  3. Antworten: 3
    Letzter Beitrag: 29.10.2008, 15:21
  4. Über C-Konsolenanwendung Daten über RS232 übertragen
    Von WDragon91 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 03.07.2008, 20:23
  5. Chip für Tonausgabe???
    Von JayCool im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 13.02.2006, 12:36

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress