Hallo Leute, wer kann mir sagen warum dieses Programm in meinem AVR (AT90S4433) nicht funktioniert? Gruss. Vitali. loop: in r16, PIND ldi r17,0x1 cpse r16,r17 rjmp loop cbi PORTB,1 ;LED 1 ein rjmp loop
Ach, so, so wäre es richtiger und kürzer: LOOP: sbis PIND, 1 ; Wert hängt davon ab, welchen Pin Du benutzt rjmp LOOP cbi PORTB, 1 Dein Programm verläßt die LOOP-Schleife nie. Gruß, Frank
Nein,das Problem ist, das die LED nich angeht. Es ist ja nicht das ganze Programm,nur ein Ausschnitt. Der Befehl "cpse" wird nicht ausgeführt,aber warum? Gruss. Vitali.
woher soll hier jemand wissen, was du in r16 einliest? Ausgeführt wird cpse natürlich, allerdings eben nicht das überspringen. Und das heist, du liest nicht 0x01 ein.
hi! ich hab zwar keine Ahnung von Assembler, aber könnte es so funktionieren? : ;***************************************************** loop: in r16, PIND ldi r17,0x1 cpse r16,r17 ;hier rjmp auslassen cbi PORTB,1 ;LED 1 ein rjmp loop ;****************************************************** MFG Nik
Sorry, meine Aussage war in der Tat nicht vollständig. Also, entweder liest Du in r16 keine 1 ein und damit wird die Schleife nie verlassen oder Deine LED wird nicht mit Low-Pegel, sondern mit High-Pegel eingeschaltet (also CBI durch SBI ersetzen). Gruß, Frank
Ach so, dann wird cpse sowas heissen wie, wenn gleich dann nächste Zeile überspringen...dann wird mein Vorschlag wohl noch weniger funktionieren :) Nik
Ich lese schon das richtige ein,mein Problem ist das die ganze Geschichte im AVR-Simulator funktioniert,bloss nicht im AVR. Nik,ich glaube wenn ich rjmp auslasse dann macht er mir die LED sifort an,die soll aber erst dann angehen wenn r16 gleich r17 ist,also wenn bit 1 an PIND gesetzt ist. Vitali.
Also ich habe schon alles ausprobiert,hi und lo Pegel getauscht u.s.w. Es tut sich einfach nichts,im Simulator funktionierts aber,ich weiss auch nicht,am AVR kanns nicht liegen,den habe ich auch schon getauscht. Vitali.
Es ist doch zum junge Hunde kriegen :-( Dann setz doch verdammt noch mal den vollständigen Code hier rein, ist das so schwierig? Da kann man doch wirklich die Lust verlieren. Immer wieder dasselbe Theater, thread geschlossen für mich.
Kein Problem,also in der Datei ist der vollständige Code. Wenn taste 1 gedrückt wird,leuchtet led 1,wenn taste 2 gedrückt wird erlischt die und das gleiche mit anderen leds bloss mit anderer tastenkombination. Vitali.
Hi Mit Word kann ich leider nichts anfangen. Plain-ASCII oder PDF. Matthias
Bin noch auf der Arbeit, mache ich aber sofort wenn ich wieder zu hause bin. Danke.Ich hoffe das geht. Vitali.
@crazy horse: Gute Idee, ich denke auch, daß die Eingänge nicht auf definierten Pegeln liegen. Aber die Pull-Ups ziehen alle Eingänge auf "1" und da wird die Abfrage mit "0x1" auch nicht funktionieren, da Bit 1-7 auf low liegen müssen. @Vitali: Bei der Abfrage mit cpse mußt Du alle 8 Pins des PORTD auf definierte Pegel legen. Wie sieht Deine Hardware aus?
Was die Hardware betrifft,habe ich das STK 500. Habe gestern abend und auch heute schon alles probiert,geht aber nicht. thkais: was meinst du genau mit definierte Pegel? Vitali
Wenn Du einen Port-Pin des Controllers als Eingang definierst, wird er hochohmig. Das wiederum bedeutet, daß er alle möglichen Einstreuungen einfängt. Wenn Du nun mit "0x01" vergleichst, muß Pin 0 des Eingangsports auf logisch "1" und alle anderen Bits auf logisch "0" liegen. Hast Du beispielsweise einen der Port-Pins nich beschaltet bzw. auf definiertem Pegel (GND oder VCC) liegen, wird diese Bedingung nie erfüllt. Im Simulator kannst Du die Pegel der Portpins einfach mit einem Häkchen ändern - in der Realität sieht das anders aus.
Ergänzung: die aktivierten pullups (PORTx=0xff) bewirken, dass der ansonsten offenen Eingang H-Pegel bekommt, ein Schalter nach Masse bewirkt dann einen L-Pegel (beim STK500 ist das so, falls du diese Schalter nimmst). Dein Programm müsste dementsprechend so aussehen: sub1: in r16, PIND ldi r17,0b11111110 //!!!!!!!!!! cpse r16,r17 jmp sub2 cbi PORTB,1 ;LED 1 ein rjmp loop Das ist der ganz Knackpunkt.
Danke Leute,das leuchtet mir jetzt ein. Ich werde es heute Abend ausprobieren. Gruss. Vitali.
Hallo... jmp sub2 ?? oder rjmp sub1 ? Bit- & Bytebruch... - ...HanneS...
Hallo noch mal, ich danke euch für die Tipps, habe gestern abend das Programm noch mal überarbeitet und es funktioniert einwandfrei. Gruss. Vitali.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.