Habe den Code nochmals angepasst - schon richtig das mit RETURN innerhalb der IF THEN ELSE Section ist unsauber (aber Bascom hats nicht angemeckert)
... habe alles nochmals überprüft und alle möglichen Fehlerquellen eliminiert. Die Signalquelle für das PWM-Signal (mein Servotester) wurde durch den richtigen Empfänger ersetzt ... habe es auch mit einem richtigen Servo gecheckt, ob er sich auch bewegt.
Habe sogar den ATTiny25 durch einen brandneuen Chip ersetzt. Es half Alles nix .. die LED's blinken jetzt mehr oder weniger unkoordiniert. (d.h. die ISR wird angesprungen) ... da das Programm auf dem MEGA8 läuft, vermute ich hier entweder Bascom als Fehlerquelle (vielleicht kommt BASCOmM mit dem Tiny15 nicht klar bzw. erzeugt keinen korrekten Code) oder das Signal am Fernsteuer-Empfänger ist nicht "sauber" oder sieht sogar komplett anders aus (habe leider keinen LA oder Oszi). Ich hoffe mein Tiny25 kommt morgen bei mir an ... dann sehe ich weiter 
Code:
Code:
' Auswertung eines PWM-Servosignals (ein Kanal)
' PWM-Signal H-Pegel zwischen ~1ms und 2.5ms
' INT bei wechselnder Flanke
$regfile = "ATtiny15.DAT" ' MC-Definitionen laden
$crystal = 1600000 ' Quarzfrequenz (interal Clock 1.6 Mhz)
Config Portb.4 = Output ' Status-LED am Port B.4 (Pin2) grün
Config Portb.3 = Output ' Status-LED am Port B.3 (Pin3) gelb
Config Portb.2 = Input
Config Timer0 = Timer , Prescale = 64 ' Config Timer0 auf 160 Mikrosekunden pro Takt,
Enable Timer0
' bei 1.6MHz: 1/(1.600.000/64) = ein TimerIncrement
' alle 40 Mikrosek
' zu erwartender Zählerbereich von ~25 bei 1ms PWM
' und ~63bei 2.5ms PWM
Config Int0 = Change ' Konfiguration Int0 wechselnde Flanke
Enable Interrupts ' Einschalten der Interrupts
Enable Int0 ' Einschalten Von Interrupt Int0
On Int0 Servowert ' Definition Sprungmarke INT0
Portb.4 = 0 ' beide Ports aus (LED aus)
Portb.3 = 0
Do ' Hauptschleife
Loop
End
Servowert: ' Interrupt-Routine (INT0)
If Portb.2 = 0 Then 'Timer-Auswertung nur nach HL-Flanke
If Tcnt0 < 40 Then
Portb.3 = 0
Portb.4 = 1
Else
Portb.3 = 1
Portb.4 = 0
End If
Else 'Ansonsten (nach LH-Flanke): Timer für nächste Runde auf 0 setzen
Tcnt0 = 0
End If
Return
Lesezeichen