Bin Anfänger im Programmieren des Atmega 32, habe dennoch versucht einen Frequenzgenerator zu Basteln bei dem ich die Frequenz mit einer möglichst hohen Bandbreite einstellen kann.Es ist mir auch soweit gelungen
Kann auch die Frequenz einstellen im Bereich von ca 5 Herz bis 25Khz
allerdings ist der Einstellbereich nicht Linear, hat da jemand einen besseren Vorschlag oder einen Hinweis wo man nachschlagen kann.
Dann ist da noch die obere Maximale Frequenz von ca 25 Khz kann ich die höher bekommen ?
Ich benutze einen 8 Mhz Quarz
mfg Nase
Folgender Bascon Code:
Code-Tags verwenden, Kollege ! (PicNick, Mod)Code:____________________________________________________________________ ' Frequenzgenerator 1 E 'Led 1(grün) Blinkt im Takt 'ca im Sekunden Takt, mit Taste 1 kann Frequenz erhöht werden und mit Taste 2 ' verringert werden '--------------------- Allgemeine Prozessor Konfiguration --------------------- $baud = 9600 'Rs232 Datenüberagungsrate $regfile "m32def.dat" 'Definiert den Atmega als Atmega 32 $crystal = 8000000 'Gibt die Quarzfrequenz an in Herz '----------------------------------------------------------------------------- ' Variablen definieren Dim Wert1 As Word Dim A As Long 'Schrittweite zum Aufwärts-Zählen Ddra = &B0011111 ' Port A0 bis A7 als Ausgänge setzen für Leds Ddrb = &B00000000 ' Port B komplett als Eingänge setzen für Taster Portb = &B00011110 ' Port B1-B2-B3-B4 PullUp aktivieren für Taster '----------------------------------------------------------------------------- Config Timer1 = Timer , Prescale = 8 'Bestimmt das Timer 1 verwendet und teilt den Takt durch 8 Enable Timer1 'Startet Timer 1 On Timer1 Test 'springt bei Überlauf nach " Test" Enable Interrupts 'Interrupt aktivieren '------------------------------------------------------------------------------ ' Konfiguration fürs Display Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.6 , Db7 = Portc.7 , Rs = Portc.5 , E = Portc.4 '______________________ H a u p t p r o g r a m m ____________________________ A = 100 ' Vorgabewert für Schrittweite bei Aufwärts zählen Do 'Hier wird über Tasten 1 und 2 der Wert für die Voreinstellung des Timers ' geändert If Pinb.0 = 1 Then Waitms 20 If Pinb.0 = 1 Then Wert1 = Wert1 + A Waitms 20 If Pinb.1 = 0 Then Waitms 20 If Pinb.1 = 0 Then Decr Wert1 Cls Locate 1 , 1 Lcd Wert1 ; "Voreinst." Loop '_____________________ H a u p t p r o g r a m m - E n d e ____________________ Test: 'Sprungmarke zu der gesprungen wird wenn der Timer einen Überlauf hat Timer1 = Wert1 'Timer soll ab (Wert aus Wert1) hochzählen Toggle Porta.0 'Port A.0 bei jeden Überlauf umschalten Return _________________ Ende ________________________________________







Zitieren

Lesezeichen