Ich glaube ihr versteht mich nicht ganz!
Ich will von PA0 - PA7 dass eine LED mit 25ms Takt hin un herbewegt!
(fast) gleichzeitig soll von PB0 - PB4 immer eine LEd hin und herbewegt werden mit 50ms.
MFG
Michael
Druckbare Version
Ich glaube ihr versteht mich nicht ganz!
Ich will von PA0 - PA7 dass eine LED mit 25ms Takt hin un herbewegt!
(fast) gleichzeitig soll von PB0 - PB4 immer eine LEd hin und herbewegt werden mit 50ms.
MFG
Michael
Doch, es wird wohl verstanden was du willst.
Und der Weg zu der Lösung wurde hier auch schon mehrfach ausgetextet und erklärt, nur darfst du nicht erwarten, daß jemand hier für dich deine Fix-Fertig-Lösung programmiert...
Quasi ein Lauflicht?:Zitat:
Zitat von Exodus
+------+
-+----+-
--+--+--
---++---
--+--+--
-+----+-
+------+
Stellt den Zeitlichen verlaufvon PortA dar. (+) = LED AN! (-) = LED AUS!
Wo liegt das Problem?
Hier brauchst du sogar nur eine Variable die vom Timer gezählt wird!
UND SIE MACHEN ES SORAG SO GUT WIE GLEICHZEITIG.. Ich denke die 3 µC-Zyklen die machen die Suppe nicht salzig!!!
ALSO:
Nochmal dein Vorhaben:
Takt0: +------+
Takt1: -+----+-
Takt2: --+--+--
Takt3: ---++---
Takt4: --+--+--
Takt5: -+----+-
Und dann beginnt das Spiel wieder von vorne!!!
Also machen wir uns eine Variable TAKT!
Die Variable TAKT soll von 0 bis 5 hochgezählt werden.
Anstatt dann weiter auf 6 gezählt zu werden, soll sie auf 0 zurückgestellt werden. Und der Vorgang beginnt von neu!
Also machen wir das SO: Wir brauchen einen Timerinterrupt!
Der Timer wird so eingestellt, dass er den Interrupt alle 25ms ausführt!
Timerinterrupt{
WENN TAKT KLEINER 5 IST,
DANN ZÄHLE TAKT UM 1 HOCH
ANSONSTEN SETZE TAKT AUF 0.
}
IM HAUPTPROGRAMM WIRD TAKT UNTERSUCHT!
WENN TAKT GLEICH 0, DANN PORTA = 0b10000001
WENN TAKT GLEICH 1, DANN PORTA = 0b01000010
WENN TAKT GLEICH 2, DANN PORTA = 0b00100100
WENN TAKT GLEICH 3, DANN PORTA = 0b00011000
WENN TAKT GLEICH 4, DANN PORTA = 0b00100100
WENN TAKT GLEICH 5, DANN PORTA = 0b01000010
Ich denke sowas ist wirklich nicht schwierig zu realisieren....
warum funktioniert dass nicht!
compare:
cpi Takt, R18
brlo 0x05
clr R18
inc R18
reti
MFG
Michael
Ich hab Dir am Anfang grob gesagt, wie das zu machen ist, man hat Dir Beispiele in C geschrieben, Du wolltest Assembler, ich hab Dir ein Assemblerbeispiel geschrieben wie man zwei LED's toggeln kann, was willst Du noch ?Zitat:
Ich glaube ihr versteht mich nicht ganz!
Ich will von PA0 - PA7 dass eine LED mit 25ms Takt hin un herbewegt!
(fast) gleichzeitig soll von PB0 - PB4 immer eine LEd hin und herbewegt werden mit 50ms.
was soll uns das hier sagen ?Zitat:
warum funktioniert dass nicht!
compare:
cpi Takt, R18
brlo 0x05
clr R18
inc R18
reti
cpi Takt,R18 ????
was macht denn cpi ???
vergleicht einen Register mit einer Konstante, was ist Takt ein Register ? R18 ist das eine Konstante????? wohl kaum hier wäre wohl cp besser oder?
brlo 0x05 -> zur Adresse 0x05 springen?
clr R18 -> setze R18 auf Null
und direkt inc R18 inkrementiere R18 -> R18 bleibt immer 1
und danach direkt reti?
was ist mit SREG retten? nix? dann wunder Dich nicht das es nicht klappt
Naja mach mal.....
Gruß Sebastian