Hallo an das Forum,

bin neu hier und komme bei der Programmierung eines ATMEGA88 nicht weiter.

Ich möchte an Pin 15 u. 16 die Signale eines RC-Empfängers in einer ISR einlesen lassen und diese dann im Hauptprogramm weiterverarbeiten. Die INT0/1 pins habe ich schon mit anderen Dingen belegt, so dass ich auf die PCINT1/2 zurückgreifen muss.
In meinen Büchern und im Internet habe ich noch nicht die passenden Passagen gefunden, die mir bei meinem Problem weiterhelfen würden.

Code:
'Autosteuerung
$regfile = "m88def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 40
$framesize = 40

Dim I As Integer
On Timer1 Fehler

Config Portc.3 = Output
Config Pinb.1 = Input

Sreg.7 = 1                                        'Globale Interrupts einschalten
Pcicr.0 = 1                                       'PCInterrupt einschalten
Pcifr.0 = 1
Pcmsk0 = &B00000010                               'Einschalten  pcint1
Pinb.1 = 0

On Pcint1 Lesen

Config Timer1 = Counter , Prescale = 1 , Compare A = Toggle , Clear Timer = 1
Enable Timer1
Enable Interrupts

'Display Einrichten
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
Cursor Off
Cls

Upperline : Lcd "  Los gehts:"

Do
 Lowerline : Lcd "  Puls: " ; I ; " ms   "
 Toggle Portc.3
Loop


Lesen:
  If Pinb.1 = 1 Then
   Pulsein I , Pinb , 1 , 1
  End If
Return

Fehler:
 Timer1 = 0
Return
end
Nun zu meinen Fragen:
- Was mache ich falsch, denn die ISR scheint nicht zu starten?
- Wie messe ich mit dem TIMER1 die genaue Länge der Signale um sie dann für Berechnungen weiter zu verwenden?
- Ich möchte weg von den Assembler-ähnlichen Eingaben, weil ich sie nicht verstehe. Im Datenblatt stehen nur Beispiele für C und Assembler. Wie muss der Code für Bascom aussehen, dass das richtig funktioniert?