Hi, Beim Bascom kannst du deine Funktionen nicht irgendwie passend verteilen, so schlau is der nicht.
DO..LOOP muß nach vor, gleich nach den on.. Anweisungen.
hi
hab folgendes problem:
möchte wie viele vor mir schon einen drehzahlmesser machen
jetzt hab ich auch ein prog geschrieben und zum teil geht es auch (sagt zumindest der simulator bei bascom).
da ich jedoch nicht nur einen interrupt verwenden möchte sondern auch nen zweiten (int0 und int1) hab ich jetzt dieses problem dass der zweite interrupt gar nicht geht (k.a.wieso??? )
sieht jemand den fehler?
CU
Code:$regfile = "M32def.dat" $crystal = 8000000 'Timer Configuration Config Timer0 = Timer , Prescale = 256 Timer0 = 0 Start Timer0 'Interrupts Enable Interrupts Enable Int0 Enable Int1 Config Pind.2 = 1 Config Pind.3 = 1 On Ovf0 Timerinterrupt Nosave On Int1 Motorl_interrupt Nosave On Int0 Motorr_interrupt Nosave Timerinterrupt: Drehzahl1 = Intcounter0 Drehzahl2 = Intcounter1 Intcounter1 = 0 Intcounter0 = 0 Timer0 = 1 Return Do --------- Loop Motorr_interrupt: Intcounter1 = Intcounter1 + 1 Return Motorl_interrupt: Intcounter0 = Intcounter0 + 1 Return
Hi, Beim Bascom kannst du deine Funktionen nicht irgendwie passend verteilen, so schlau is der nicht.
DO..LOOP muß nach vor, gleich nach den on.. Anweisungen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hi,
ja habs falsch kopiert do...loop ist bei mir schon nach : on int0...
das komische ist wie gesagt im simulator beachtet es nur den interrupt von int0 alle anderen werden nicht beachtet (also int1 und int2)
kann es vielleicht daran liegen, dass ein fusebit falsch gesetzt ist?
oder gibt´s eine priorität bei den interrupts, die da dazwischen geht?
so wie ich das irgenwo gelesen hab, haben interrupts mit der kleineren zahl (also int0) eine höhere priorität als int1. aber das müsste eigentlich egal sein.
und noch eine andere frage: hängen interrupts und die timer irgendwie zusammen? also so, dass man entweder int0 oder timer0 benutzen kann?
(wahrscheinlich nicht oder?)
Hängen nicht zusammen, alles geht
Aber zum Testen laß das "nosave" mal weg, das bringt Chaos
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
jep mach ich :
hab hier mal den code nochmal und ohne anderes zeug
Code:$regfile = "M32def.dat" $crystal = 8000000 Dim A As Integer Dim B As Integer Dim Intanzeige0 As Integer Dim Intanzeige1 As Integer Config Timer0 = Timer , Prescale = 256 Enable Interrupts Enable Int0 Enable Int1 A = 0 B = 0 On Timer0 Anzeige On Int0 Interrupt0 On Int1 Interrupt1 '---------------------------- Do nop Loop End '---------------------------- Interrupt0: A = A + 1 Return Interrupt1: B = B + 1 Return Anzeige: Intanzeige0 = A Intanzeige1 = B A = 0 B = 0 Return
Na ja, eigentlich sollt' er das tun.
Frage ist nur, wie kontrollierst du das ?
ja....
also momentan probier ichs eigentlich nur im simulator. da kann man ja einen interrupt auch auslösen.
habs zwar schon auf den proz überspielt aber dort klappt es auch nicht.
kann jemand es mal bei sich in Bascom probieren? vielleicht stimmt bei mir was nichr(obwohl ich auch schon neu installiert hab)
CU
ups, war nicht eingelogt ^^
Hast du auf deinem Board eine Möglichkeit, irgendeine LED zu bedienen ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hi,
also leds nicht aber lcd.
aber so wie ich das sehe gibt es bei Bascom einen bug, wenn man den simulator verwendet, denn als ich das program auf dem m32 draufmachte ging es und das lcd hat auch normal was angezeigt und gezählt
ich denke/hoffe , dass das problem somit gelöst ist
(mercí für die hilfe)
CU
Lesezeichen