Hi Leute..
Erstmal poste ich jetzt hier meinen Code :
Wenn ich den versuche zu compilieren steht unten in der Leiste :Code:$regfile = "m16def.dat" $crystal = 4000000 $hwstack = 32 Config Porta = Output Config Portc = Output Config Portd.4 = Output Config Portd.5 = Output Config Portd.6 = Output Config Portd.7 = Output Config Portb.0 = Output Config Portb.1 = Output Config Portb.4 = Output Config Portd.2 = Input Config Portd.3 = Input Config Portb.2 = Input Ledr1 Alias Porta.0 Ledr2 Alias Porta.1 Ledr3 Alias Porta.2 Ledr4 Alias Porta.3 Ledr5 Alias Porta.4 Ledr6 Alias Porta.5 Ledr7 Alias Porta.6 Ledl1 Alias Portc.0 Ledl2 Alias Portc.1 Ledl3 Alias Portc.2 Ledl4 Alias Portc.3 Ledl5 Alias Portc.4 Ledl6 Alias Portc.5 Ledl7 Alias Portc.6 Ledrstrip Alias Porta.7 Ledlstrip Alias Portc.7 Striprot Alias Portb.0 Stripgruen Alias Portb.1 Striporange Alias Portb.4 Stripweiss1 Alias Portd.4 Stripweiss2 Alias Portd.5 Stripblau1 Alias Portd.6 Stripblau2 Alias Portd.7 Dim Lesen1 As Bit Dim Lesen2 As Bit Dim Lesen3 As Bit Dim Empf_wert1 As Byte Dim Empf_wert2 As Byte Dim Empf_wert3 As Byte Dim Test As Bit Dim Test2 As Bit Lesen1 = 0 Lesen2 = 0 Lesen3 = 0 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Stop Timer0 On Timer0 Error Config Timer1 = Timer , Prescale = 64 Enable Timer1 Stop Timer1 On Timer1 Error Config Timer2 = Timer , Prescale = 64 Enable Timer2 Stop Timer2 On Timer2 Error Config Int0 = Change On Int0 Messen1 Config Int1 = Change On Int1 Messen2 On Int2 Messen3 Enable Interrupts Enable Int0 Enable Int1 Enable Int2 Do Gosub Hauptprogramm Loop End Hauptprogramm: If Empf_wert3 > 104 Then Gosub Flash_all2 End If If Empf_wert3 > 83 Then Gosub Flash_all1 End If If Empf_wert2 > 94 Then Striprot = 1 Stripgruen = 1 Striporange = 1 Stripweiss1 = 1 Stripweiss2 = 1 Stripblau1 = 1 Stripblau2 = 1 Else Striprot = 0 Stripgruen = 0 Striporange = 0 Stripweiss1 = 0 Stripweiss2 = 0 Stripblau1 = 0 Stripblau2 = 0 End If If Empf_wert1 > 104 Then Gosub Blinken End If If Empf_wert1 > 94 Then Gosub Lauflicht2 End If If Empf_wert1 > 83 Then Gosub Lauflicht1 End If If Empf_wert1 > 73 Then Gosub Led_an Else Gosub Led_aus End If Return Messen1: If Lesen1 = 0 Then Start Timer0 Lesen1 = 1 Else Stop Timer0 Empf_wert1 = Timer0 Timer0 = 0 Lesen1 = 0 End If If Empf_wert1 >= Test And Empf_wert1 <= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Return End If If Empf_wert1 <= Test Or >= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Gosub Hauptprogramm End If Return Messen2: If Lesen2 = 0 Then Start Timer1 Lesen2 = 1 Else Stop Timer1 Empf_wert2 = Timer1 Lesen2 = 0 End If Return Messen3: If Lesen3 = 0 Then Start Timer2 Lesen3 = 1 Else Stop Timer2 Empf_wert3 = Timer2 Lesen3 = 0 End If Return Error: Stop Timer0 Ledr1 = 1 Ledr2 = 1 Ledr3 = 1 Ledr4 = 1 Ledr5 = 1 Ledr6 = 1 Ledr7 = 1 Ledl1 = 1 Ledl2 = 1 Ledl3 = 1 Ledl4 = 1 Ledl5 = 1 Ledl6 = 1 Ledl7 = 1 Ledrstrip = 1 Ledlstrip = 1 Striprot = 1 Stripgruen = 1 Striporange = 1 Stripweiss1 = 1 Stripweiss2 = 1 Stripblau1 = 1 Stripblau2 = 1 Return Led_an: Ledr1 = 1 Ledr2 = 1 Ledr3 = 1 Ledr4 = 1 Ledr5 = 1 Ledr6 = 1 Ledr7 = 1 Ledl1 = 1 Ledl2 = 1 Ledl3 = 1 Ledl4 = 1 Ledl5 = 1 Ledl6 = 1 Ledl7 = 1 Ledrstrip = 1 Ledlstrip = 1 Gosub Hauptprogramm Return Led_aus: Ledr1 = 0 Ledr2 = 0 Ledr3 = 0 Ledr4 = 0 Ledr5 = 0 Ledr6 = 0 Ledr7 = 0 Ledl1 = 0 Ledl2 = 0 Ledl3 = 0 Ledl4 = 0 Ledl5 = 0 Ledl6 = 0 Ledl7 = 0 Ledrstrip = 0 Ledlstrip = 0 Gosub Hauptprogramm Return Lauflicht1: Ledr1 = 1 Ledr2 = 1 Ledr3 = 1 Ledr4 = 1 Ledr5 = 1 Ledr6 = 1 Ledr7 = 0 Ledl1 = 1 Ledl2 = 1 Ledl3 = 1 Ledl4 = 1 Ledl5 = 1 Ledl6 = 1 Ledl7 = 1 Ledrstrip = 1 Ledlstrip = 1 Waitms 65 Ledr7 = 1 Ledr6 = 0 Waitms 65 Ledr6 = 1 Ledr5 = 0 Waitms 65 Ledr5 = 1 Ledr4 = 0 Waitms 65 Ledr4 = 1 Ledr3 = 0 Waitms 65 Ledr3 = 1 Ledr2 = 0 Waitms 65 Ledr2 = 1 Ledr1 = 0 Waitms 65 Ledr1 = 1 Waitms 65 Ledl1 = 0 Waitms 65 Ledl1 = 1 Ledl2 = 0 Waitms 65 Ledl2 = 1 Ledl3 = 0 Waitms 65 Ledl3 = 1 Ledl4 = 0 Waitms 65 Ledl4 = 1 Ledl5 = 0 Waitms 65 Ledl5 = 1 Ledl6 = 0 Waitms 65 Ledl6 = 1 Ledl7 = 0 Waitms 65 Ledl7 = 1 Waitms 65 Ledl7 = 0 Waitms 65 Ledl7 = 1 Ledl6 = 0 Waitms 65 Ledl6 = 1 Ledl5 = 0 Waitms 65 Ledl5 = 1 Ledl4 = 0 Waitms 65 Ledl4 = 1 Ledl3 = 0 Waitms 65 Ledl3 = 1 Ledl2 = 0 Waitms 65 Ledl2 = 1 Ledl1 = 0 Waitms 65 Ledl1 = 1 Waitms 65 Ledr1 = 0 Waitms 65 Ledr1 = 1 Ledr2 = 0 Waitms 65 Ledr2 = 1 Ledr3 = 0 Waitms 65 Ledr3 = 1 Ledr4 = 0 Waitms 65 Ledr4 = 1 Ledr5 = 0 Waitms 65 Ledr5 = 1 Ledr6 = 0 Waitms 65 Ledr6 = 1 Ledr7 = 0 Waitms 65 Ledr7 = 1 Gosub Hauptprogramm Return Lauflicht2: Ledr1 = 1 Ledr2 = 1 Ledr3 = 1 Ledr4 = 1 Ledr5 = 1 Ledr6 = 1 Ledr7 = 0 Ledl1 = 1 Ledl2 = 1 Ledl3 = 1 Ledl4 = 1 Ledl5 = 1 Ledl6 = 1 Ledl7 = 0 Ledrstrip = 1 Ledlstrip = 1 Waitms 65 Ledr7 = 1 Ledl7 = 1 Ledr6 = 0 Ledl6 = 0 Waitms 65 Ledr6 = 1 Ledl6 = 1 Ledr5 = 0 Ledl5 = 0 Waitms 65 Ledr5 = 1 Ledl5 = 1 Ledr4 = 0 Ledl4 = 0 Waitms 65 Ledr4 = 1 Ledl4 = 1 Ledr3 = 0 Ledl3 = 0 Waitms 65 Ledr3 = 1 Ledl3 = 1 Ledr2 = 0 Ledl2 = 0 Waitms 65 Ledr2 = 1 Ledl2 = 1 Ledr1 = 0 Ledl1 = 0 Waitms 65 Ledr1 = 1 Ledl1 = 1 Waitms 65 Ledr1 = 0 Ledl1 = 0 Waitms 65 Ledr1 = 1 Ledl1 = 1 Ledr2 = 0 Ledl2 = 0 Waitms 65 Ledr2 = 1 Ledl2 = 1 Ledr3 = 0 Ledl3 = 0 Waitms 65 Ledr3 = 1 Ledl3 = 1 Ledr4 = 0 Ledl4 = 0 Waitms 65 Ledr4 = 1 Ledl4 = 1 Ledr5 = 0 Ledl5 = 0 Waitms 65 Ledr5 = 1 Ledl5 = 1 Ledr6 = 0 Ledl6 = 0 Waitms 65 Ledr6 = 1 Ledl6 = 1 Ledr7 = 0 Ledl7 = 0 Waitms 65 Ledr7 = 1 Ledl7 = 1 Gosub Hauptprogramm Return Blinken: Ledr1 = 1 Ledr2 = 0 Ledr3 = 1 Ledr4 = 0 Ledr5 = 1 Ledr6 = 0 Ledr7 = 1 Ledl1 = 0 Ledl2 = 1 Ledl3 = 0 Ledl4 = 1 Ledl5 = 0 Ledl6 = 1 Ledl7 = 0 Ledrstrip = 1 Ledlstrip = 1 Waitms 100 Ledr1 = 0 Ledr2 = 1 Ledr3 = 0 Ledr4 = 1 Ledr5 = 0 Ledr6 = 1 Ledr7 = 0 Ledl1 = 1 Ledl2 = 0 Ledl3 = 1 Ledl4 = 0 Ledl5 = 1 Ledl6 = 0 Ledl7 = 1 Waitms 100 Gosub Hauptprogramm Return Flash_all1: Ledr1 = 1 Ledr2 = 1 Ledr3 = 1 Ledr4 = 1 Ledr5 = 1 Ledr6 = 1 Ledr7 = 1 Ledl1 = 1 Ledl2 = 1 Ledl3 = 1 Ledl4 = 1 Ledl5 = 1 Ledl6 = 1 Ledl7 = 1 Ledrstrip = 1 Ledlstrip = 1 Striprot = 1 Stripgruen = 1 Striporange = 1 Stripweiss1 = 1 Stripweiss2 = 1 Stripblau1 = 1 Stripblau2 = 1 Waitms 125 Ledr1 = 0 Ledr2 = 0 Ledr3 = 0 Ledr4 = 0 Ledr5 = 0 Ledr6 = 0 Ledr7 = 0 Ledl1 = 0 Ledl2 = 0 Ledl3 = 0 Ledl4 = 0 Ledl5 = 0 Ledl6 = 0 Ledl7 = 0 Ledrstrip = 0 Ledlstrip = 0 Striprot = 0 Stripgruen = 0 Striporange = 0 Stripweiss1 = 0 Stripweiss2 = 0 Stripblau1 = 0 Stripblau2 = 0 Waitms 125 Gosub Hauptprogramm Return Flash_all2: Ledr1 = 1 Ledr2 = 0 Ledr3 = 1 Ledr4 = 0 Ledr5 = 1 Ledr6 = 0 Ledr7 = 1 Ledl1 = 0 Ledl2 = 1 Ledl3 = 0 Ledl4 = 1 Ledl5 = 0 Ledl6 = 1 Ledl7 = 0 Ledrstrip = 0 Ledlstrip = 1 Striprot = 1 Stripgruen = 0 Striporange = 1 Stripweiss1 = 0 Stripweiss2 = 1 Stripblau1 = 0 Stripblau2 = 1 Waitms 100 Ledr1 = 0 Ledr2 = 1 Ledr3 = 0 Ledr4 = 1 Ledr5 = 0 Ledr6 = 1 Ledr7 = 0 Ledl1 = 1 Ledl2 = 0 Ledl3 = 1 Ledl4 = 0 Ledl5 = 1 Ledl6 = 0 Ledl7 = 1 Ledrstrip = 1 Ledlstrip = 0 Striprot = 0 Stripgruen = 1 Striporange = 0 Stripweiss1 = 1 Stripweiss2 = 0 Stripblau1 = 1 Stripblau2 = 0 Gosub Hauptprogramm Return
"Errors : 5 found"
Es steht nicht da um welche Errors es sich handelt und sobald ich die Maus bewege verschwindet die Textzeile auch.. Aber die Hex wurde nicht compiliert..
Also, die Errors müssen sich im folgenden Abschnitt befinden :
Und in dieser ISR können die Fehler auch nur in dem unteren Teil sein, also :Code:Messen1: If Lesen1 = 0 Then Start Timer0 Lesen1 = 1 Else Stop Timer0 Empf_wert1 = Timer0 Timer0 = 0 Lesen1 = 0 End If If Empf_wert1 >= Test And Empf_wert1 <= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Return End If If Empf_wert1 <= Test Or >= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Gosub Hauptprogramm End If Return
Ddenn wenn ich diesen Teil weglasse, gehts ohne Errors...Code:If Empf_wert1 >= Test And Empf_wert1 <= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Return End If If Empf_wert1 <= Test Or >= Test2 Then Test = Empf_wert1 - 5 Test2 = Empf_wert1 + 5 Gosub Hauptprogramm End If Return
Um mal kurz zu erklären, was dieser Teil machen soll :
Also in der ISR wird das PWM Signal eines RC-Empfängers gemessen um im Wert "Empf_wert1" gespeichert..
Das Hauptprogramm fragt verschiedene Empf_werte ab und startet je nachdem eine andere Subroutine.. In diesem Subroutinen wird teilweise mit Wait befehlen gearbeitet, also können diese auch mal ein paar sekunden dauern.. wenn sich nun der Empf_wert1 geänder hätte, würde trotzdem noch die "alte" Subroutine zu Ende laufen, was ich aber nciht wollte..
was ich erreichen wollte war : wenn sich der Empf_wert1 (bis auf geringe Schwankungen) nicht geändert hatte soll mit Return wieder dahin gesprungen werden, wo vorher aufgehört wurde.. Wenn sich der Wert aber ändert, soll wieder das Hauptprogramm ausgewählt werden um die zu dem neuen Wert passende Subroutine zu starten..
Ich finde in diesem Codeabschnitt keine Fehler und da Bascom sie nciht anzeigt weiß ich auch nicht wie ichs beheben soll...
Weiß einer woran das liegt, dass Bascom nciht die genauen Fehler anzeigt???
Und/Oder weiß jemand, was in dem Abschnitt falsch ist???
Danke im Vorraus![]()
Mfg Yannik







Zitieren

Lesezeichen