Hallo,
ich als AVR Anfänger benötige dringend Hilfe von Euch Bascom Spezialisten.
Problem: Ein Attiny85 soll in Bascom so programmiert werden, dass er die Impulslänge welche aus einem Modellbau Empfänger stammt ermittelt und in einen Wert zwischen 0 – 255 umwandelt. Der umgewandelte Wert wird dann an den Timer geschickt welcher daraus eine PWM macht und diese ausgibt (Leistungselektronik Motor).
Ich habe mir mit der Pulsein Funktion einen Code zusammen gebastelt, welcher die oben genannte Funktion auf einem Atmega88 problemlos ausführt (Drehzahl des Motors von 0 – max. Drehzahl einstellbar).
Auf dem Attiny85 geht das jedoch schief…….es kommt zwar ein Rechteck Signal raus, welches sich aber nur minimal mit den unterschiedlichen Steuerknüppel Positionen der Fernbedienung ändert. Ich vermute das der Attiny85 die Pulsein Funktion falsch auswertet.
Ich hoffe das mir einer von Euch den entscheidenden Hinweis für mein Problem geben kann.
Über allgemeine Verbesserungsvorschläge für mein Programm würde ich mich zudem sehr freuen, da ich unübersehbar ein blutiger Anfänger bin.
Viele Grüße
Bascom Code:
$regfile = "attiny85.dat"
$crystal = 1000000
Config Portb.1 = Output
Config Pinb.0 = Input
Dim Y As Word
Dim Z As Single
Dim X As Byte
Const M = 255 / 79
Config Timer0 = Pwm , Compare B Pwm = Clear Up , Prescale = 8
Do
Pulsein Y , Pinb , 0 , 1 ' Y- Werte zwischen 130 und 209 '
Y = Y - 130 ' Angepasste Y - Werte zwischen 0 und 79 '
Z = Y * M ' Errechnete Z - Werte zwischen 0 und 255 '
Z = Round(z)
X = Z
Compare0b = X
Loop
End
Lesezeichen