-
        
+ Antworten
Ergebnis 1 bis 8 von 8

Thema: 40kHz erzeugen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2004
    Ort
    Hennigsdorf
    Alter
    40
    Beiträge
    10

    40kHz erzeugen

    Hallo

    Ich bin gerade von PIC auf ATMEL umgestiegen.

    Ich habe da ne Schaltung die US 40Khz empf. kann.
    Ich brauche einen Code in GCC zur Erzeugung des 40kHz
    Signales des Senders an einem Port von meinem AT90S8515

    Also nur ein Transistor und die Sendekapsel 400TX an einem Port meiner wahl.

    ich habe das irgendwo gelesen, nur weis ich nicht mehr wo.

    kann mir jemand bitte weiter helfen und einen CODE oder einen Link Posten ?

    Danke
    Andy

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    28
    Beiträge
    288
    Hi,
    Wäre gut, wenn du deinen Takt am Controler posten würdest, sonst kann man des nciht berechnen ^^
    mfg Javik

  3. #3
    Gast
    Danke für den Hinweis (sorry)
    AT90S8515 mit 8MHz
    UST-400 Kapseln von Reichelt wo Ich immer noch nicht weis
    wo da + und - ist. IM Datenblatt steht nichts dazu.

    auf meiner HP habe ich ein Bild davon.
    http://www.brichnijak.de/Holger/hinten.JPG

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    24.04.2004
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    1.277
    Frank hat vor kurzem ein kleines Tool geschrieben welches die Timereinstellungen für AVR's berechnet. Es produziert zwar Bascom-Code aber die Einstellungen sollten die Gleichen sein....
    Das Programm gibt's im Downloadbereich...

    Sonic
    http://www.dontfeedthetroll.de/images/dftt.gif
    If the world does not fit your needs, just compile a new one...

  5. #5
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    63
    Beiträge
    12.203
    Reichelt wo Ich immer noch nicht weis
    wo da + und - ist. IM Datenblatt steht nichts dazu.
    Bezüglich der Spannung sind die Anschlüsse symmerisch. Theoretisch optimal mit Wechselspannung anzusteuern für praktische Fälle mit beliebigem Gleichtaktanteil zulässig.
    Einer der Anschlüsse ist mit dem Gehäuse verbunden. Bei asymmetrischer Ansteuerung liegt er vorzugsweise auf festem Potential.
    Manfred

  6. #6
    Gast
    Danke für Eure Hilfe

    Ich werde mal so etwas in der Art versuchen

    Code:
    #include <avr/io.h> 
    #include <stdlib.h> 
    #include<avr/interrupt.h>          
    #include<avr/signal.h> 
    
    
    //Definition einiger Datentypen, reine Geschmacksache 
    #define uchar   unsigned char      // 1 Byte ohne Vorzeichen 0 bis 255 erlaubt 
    #define uint   unsigned int      // 2 Byte ohne Vorzeichen 0 bis 65535 erlaubt 
    
    //Definition der Konstanten 
    #define reload   100         // Reload Wert für Timer0  256 - 100 = 156 
    
    // Defintion der globalen Variablen 
    volatile uchar count_10ms;      // Zähler für die 10ms INT 
    
    // Timer0 Overflow Routinen, Aufruf alle 10 ms 
    SIGNAL  (SIG_OVERFLOW0 ) 
    { 
          TCNT0 = reload;               //Timer0 neu einstellen auf 100 
          count_10ms++;               //Zähler um 1 erhöhen 
           
          if(count_10ms >= 100)         //Abfrage 1 Sekunde vorbei, 100 * 10 ms 
          { 
             //dann LED umschalten 
             if(bit_is_set(PORTB,1))      //PIN gesetzt ??? 
                   PORTB = 0x00; 
             else 
                    PORTB = 0x01; 
                    
          count_10ms = 0;               //Zähler löschen 
          } 
    } 
    
    //Einstellen der Hardware des AVR +++++++++++++++++++++++++++++++++++++++++++++ 
    void init(void) 
    { 
          //Port einstellen 
          DDRB = 0x01;               //PortB.1 auf Ausgang 
           
          //TimerO einstellen 
          TIMSK = _BV(TOIE0);         // Timer0 Overflow INT erlauben 
          TCNT0  = reload;                  // TIMER0 vorladen mit 100 
          TCCR0 = _BV(CS02) ;         // Vorteiler auf 256, ab hier läuft der TIMER0 
           
          // Global Interrupts freigeben 
          sei(); 
    } 
    
    //Hauptprogramm, hier startet der uC ++++++++++++++++++++++++++++++++++++++++++ 
    void main (void) 
    { 
    
        init();            // Hardware einstellen gehen 
                          
       for(;;)            // Endlosschleife 
       { 
       } 
        
    }

  7. #7
    Gast
    http://mc-project.de/Pages/ultrasonic.html

    Hier ist das ganze in avrgcc demonstriert.

  8. #8
    Gast
    Suuper genau das habe Ich gesucht !!! DANKE

+ Antworten

Berechtigungen

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