Warum funktioniert das nicht? Er springt aus den Labeln mit WAITMS nicht mehr raus...
Irgendwie verstehe ich das ganze Interruptzeug nicht.
MFG
Druckbare Version
Warum funktioniert das nicht? Er springt aus den Labeln mit WAITMS nicht mehr raus...
Irgendwie verstehe ich das ganze Interruptzeug nicht.
MFG
kannst du den code hier einbringen?
ich hatte auch vor kurzem probleme damit,konnte sie aber lösen.
interrupts sind eigentlich ganz leicht.
aber ohne code kann ich dir den fehler nicht sagen.
Der hat mein Attachement nicht hinzugefuegt, so ein ***.
MFG
kannst du den code compilieren?
bei mir gibts im bascom kein attiny2313.dat
heißt bei mir 2313def.dat
den timer benötigst du gar nicht
config portd.2 muß bei mir config pind.2 heißen,sonst meckert der compiler
die routine interrupt würde ich so schreiben:
If Modus > 3 Then Modus = 1
If Modus = 1 Then Goto Blinken
If Modus = 2 Then Goto Lauflicht
If Modus = 3 Then Goto Leuchten
Modus = Modus + 1
obwohls eigentlich egal is,im endeffekt passiert dasselbe.
dann wäre noch die frage ob du die 333 ms im simulator abwartest oder ob du das schon so auf deinen tiny übertragen hast, und dort solang wartest?
denn im simulator kannste mal nen kaffee machen bis die 333 ms verstrichen sind.
desweiteren mußt du natürlich auch die fusebit auf internal 1mhz setzen,weil sonst das timing von compiliertem code nicht mit der tatsächlichen taktfrequenz übereinstimmt.
ich hoffe irgendetwas nützliches konnte ich dir hier auflisten.
EDIT: woher kommt der interrupt eigentlich? durch einen taster vermute ich mal,oder?
Mfg,
--> Mr.G.
noch etwas wichtiges:
config int1 = rising
oder
config int1 = falling
damit bestimmst du,ob eer interrupt bei high oder low level ausgelöst wird.
pullup nicht vergessen.
die sprungmarken solltest du erst nach der hautpschleife schreiben,sonst durchläuft er diese auch beim jedem durchlauf.
zumindest bei mir.
also so
do
loop
blinken:
return
lauflicht:
return
.
.
.
wenn du pin eines port als 1 setzen willst,mußt du portb = 255 verwenden,oder jeden pin einzeln setzen.
das könntest du in einer schleife machen:
for count = 0 to 8
pinb.count = 1
next
MfG,
--> Mr.G.
Jepp, der Interrupt wird durch einen Taster ausgeloest. Der sollte auch einen Pullup haben, Pollin Evaluationsboard...
Den Code kann ich kompilieren. Der Timer ist nur ein Ueberbleibsel anderer Versuche, schon weg...
So springt das Programm aus der Blinkenschleife nicht mehr raus, trotz Interrupt... Auch mit Rising Interrupt.
But why?
MFG
versuchs mal damit
$regfile = "2313def.dat"
$crystal = 1000000
Config Portb = Output
Config Int1 = Falling
Config Pind.2 = Input
Dim Modus As Byte
Modus = 1
Dim Zeit As Integer
Zeit = 50
Enable Interrupts
Enable Int1
On Int1 Switch
B Alias Portb.6
E Alias Portb.5
C Alias Portb.4
K Alias Portb.3
S Alias Portb.2
Do
Select Case Modus
Case 1 : Portb = 255
Portd.5 = 1
Case 2 : Portb = 255
Portd.5 = 1
Waitms Zeit
Portb = 0
Portd.5 = 0
Waitms Zeit
Case 3: Portb = 0
Portd.5 = 0
B = 1
Portd.5 = 1
Waitms Zeit
E = 1
Portd.5 = 0
Waitms Zeit
C = 1
Portd.5 = 1
Waitms Zeit
K = 1
Portd.5 = 0
Waitms Zeit
S = 1
Portd.5 = 1
Waitms Zeit
B = 0
Portd.5 = 0
Waitms Zeit
E = 0
Portd.5 = 1
Waitms Zeit
C = 0
Portd.5 = 0
Waitms Zeit
K = 0
Portd.5 = 1
Waitms Zeit
S = 0
Portd.5 = 0
Waitms Zeit
End Select
Loop
Switch:
Modus = Modus + 1
If Modus > 3 Then Modus = 1
Return
MfG,
--> Mr.G.
ich hab die verzögerung runtergesetzt damit ich im simulator nicht solang warte.
wegen dem pullup:
bei pull up,also wenn du auf +5 ziehst,dann mußt du falling nehmen,und den den pin mit dem taster auf gnd ziehen.
...entprellen
MfG,
-->Mr.G.
Ich habe deins mal getestet im Simulator und es sieht erstmal gut aus soweit. Bin bei einem Kumpel und mein Board loift hier nicht, werds nachher zuhause auf dem Tiny testen...
Dankeschoen erstmal!
MFG
Hallo,
ich hab jetzt nicht alles duchgelesen, aber bei 2313def.dat und dem attiny2313.dat ist schon ein unterschied,
der erste ist für den AT90S2313, das andere für den Attiny2313, und ein Programm das für den einen compiliert ist, läuft auf dem anderen i.d.R. nicht. [-X
@mrg
wenn bei Dir die Datei (attiny2313) nicht da ist, ist entweder Dein Bascom schon uralt, oder die Datei ist sonstwie abhanden gekommen, denn die gibts schon lange.