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.
Nun zu meinen Fragen: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
- 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?







Zitieren

Lesezeichen