Wenn du dich vielleicht erinnern kannst...
Upps, dank deiner freundlichen Unterstützung kann ich mich jetzt erinnern ;)
Dann bleiben wir mal beim Bascom. So aus der Hüfte würde ich mal folgendes vorschlagen:
Code:
'Takt für Schrittmotor erzeugen mit ATtiny13 30.1.2010 mic'
'Achtung! Das ist ein eher theoretischer Code den ich noch nicht getestet habe!'
' Poti zwischen Vcc und GND, Schleifer an Pin 1 (ADC0/PB5)
' Frequenzausgang an Pin2 (PB3)
'Einstellungen -----------------------------------------------------------------'
'Wir verwenden einen tiny13'
$regfile = "ATtiny13.dat"
'der mit internen 1,2 MHZ getaktet wird (Fuse Takt/8 gesetzt = Auslieferzustand!)'
$crystal = 1200000
'Weitere, von mir noch nicht geprüfte Compileranweisungen:'
$hwstack = 32
$swstack = 8
$framesize = 8
Dim I As Integer
Config Portb.5 = Input ' Poti Pin1
Config Portb.3 = Output ' Takt Pin2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'Hauptprogramm -----------------------------------------------------------------'
Do
I = 1024 - getadc(0)
Do
Waitms 1
Decr I
Loop Until I = 0
Toggle Portb.3
Loop
Mit AVCC als Referenzspannung kann das Poti direkt zwischen Vcc und GND angeschlossen werden. Der Schleifer kommt an Pin 1 des Tiny13, der Wert für die gemessene Spannung liegt dann zwischen 0 und 1023. Übel ist nun die Umrechnung des eingelesenen Wertes in die Ausgabefrequenz. Der Ansatz hier geht über die Periodendauer die mit waitms festgelegt wird. Bei ADC=1023 (Potianschlag eine Seite) wären das bei einer ms pro Halbwelle ca. 500Hz, bei ADC=0 (Anschlag andere Seite) ca. 1/2 Hz. Die Wandelzeit des ADC wird dabei ignoriert.
Alles nur Theorie zu später Stunde...
Gruß
mic
Lesezeichen