PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 40kHz erzeugen



SkyAndy
08.09.2004, 10:18
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

Javik
08.09.2004, 10:28
Hi,
Wäre gut, wenn du deinen Takt am Controler posten würdest, sonst kann man des nciht berechnen ^^
mfg Javik

08.09.2004, 10:51
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

sonic
08.09.2004, 11:00
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

Manf
08.09.2004, 11:36
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

08.09.2004, 13:53
:cheesy: Danke für Eure Hilfe

Ich werde mal so etwas in der Art versuchen


#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
{
}

}

08.09.2004, 16:29
http://mc-project.de/Pages/ultrasonic.html

Hier ist das ganze in avrgcc demonstriert.

08.09.2004, 23:21
:) ;)Suuper genau das habe Ich gesucht !!! DANKE