Oliver S. schrieb:> Led4 kaputt, falsch rum eingelötet, falsches Programm geflasht,> was auch> immer.>> Oliver
Nein. dass kann nicht sein. Ich benutze ein Simulationsprogramm!
Matthias L. schrieb:> DDRB=(1<<PB4); //LED4 als Ausgang definiert> DDRB=(1<<PB5); //LED3 als Ausgang definiert>> Im Ergebnis ist nur PB5 auf Ausgang gesetzt. Und deshalb funktioniert> nur die daran angeschlossene LED.>> So ists korrekt: DDRB |= (1<<PB4); //LED4 als Ausgang definiert> DDRB |= (1<<PB5); //LED3 als Ausgang definiert
Das ist auf jeden Fall schon mal ein Fehler! Danke!!
Leider leuchtet immer noch nur LED3! Ich kann es mir nicht erklären.
Auch wenn ich die delay- Zeit erhöhe, blinkt die LED3 unverändert
weiter.
Habe ich im Programm sonst alles richtig?
Mans A. schrieb:> Ich benutze ein Simulationsprogramm!Mans A. schrieb:> Leider leuchtet immer noch nur LED3! Ich kann es mir nicht erklären.
Dann stelle fest, in welcher Zeile sich das Programm nicht so verhält,
wie du es erwartest, prüfe den Zustand der beteiligten Register und
zeige es hier.
Mans A. schrieb:> Nein. dass kann nicht sein. Ich benutze ein Simulationsprogramm!
Zu spät gesehen - da kannst Du lange warten, bis die delays abgearbeitet
worden sind. Stelle (für die Simulation) mal 1 ms ein und freue Dich,
was passiert :-)
Mans A. schrieb:> Auch wenn ich die delay- Zeit erhöhe, blinkt die LED3 unverändert> weiter.
Damit hast Du hier vermutlich nicht nur mich in die Irre geführt. LED3
"blinkt" nicht - sie ist (längere Zeit - im Simulator) unverändert "an".
Für den Simulator setze ich delays - wenn ich sie denn verwende - immer
auf ein Minimum. Du kannst die angegebene Wartezeit für den Simulator
locker * 1000 nehmen ... (bei mir zumindest), da es einiges an Code "zu
simulieren" gilt.
Mans A. schrieb:> Habe ich im Programm sonst alles richtig?
Ja, das angepasste Programm ist jetzt richtig. Ich habe es in einen
Tiny26 geladen (mit F_CPU angepasst) und es wechselblinkt schön 😀.
Nicht notwendig ist das 'return 0' am Ende, es gibt nicht, wo ein Wert
zurückgegeben werden könnte und zudem wird die Zeile nicht erreicht.
Schadet aber auch nicht.
Wenn es in deinem Simulator nicht so funktioniert, dann machst du bei
dessen Bedienung etwas falsch.
HildeK schrieb:> Wenn es in deinem Simulator nicht so funktioniert, dann machst du bei> dessen Bedienung etwas falsch.
Nein - nicht bei der Bedienung (es sei Denn, Du meinst dass "nicht ca. 5
Minuten auf ein _delay_ms(250) warten zu wollen/können" falsche
Bedienung ist :-) )
Hugo H. schrieb:> Nein - nicht bei der Bedienung (es sei Denn, Du meinst dass "nicht ca. 5> Minuten auf ein _delay_ms(250) warten zu wollen/können" falsche> Bedienung ist :-) )
Bei mir funktioniert auch das Durchsteppen im Simulator problemlos. Da
muss man keine 5 Minuten warten ...
HildeK schrieb:> Bei mir funktioniert auch das Durchsteppen im Simulator problemlos. Da> muss man keine 5 Minuten warten ...
Ja.
Da habe ich zu hoch geschätzt (aus der kurzen Durchlaufzeit mit
delay_ms(1)).
Im Microchip-Studio (WIN 10) sind es 1 Minute 42 Sekunden, im
AtmelStudio 6.2 (XP) in einer virtuellen Maschine sind es knapp 54
Sekunden (jeweils mit dem "originalen" _delay_ms(250.0); ).
Welchen Simulator (in welcher IDE) nutzt Du?
Hugo H. schrieb:> Welchen Simulator (in welcher IDE) nutzt Du?
Mein altes Atmel Studio 4.18SP2 unter WIN7. Da steppe ich von Hand (F11)
oder mit Autostep; geht genau so.
Bei solchen Sachen (Delay, Timer, Watchdog) ist es meist problematisch
mit dem Simulieren, da gebe ich dir recht.
Offenbar arbeitet der (mein) Simulator virtuell mit 4 MHz. Wenn ich den
Code mit F_CPU = 16MHz übersetze, ja, dann dauert es natürlich länger.
Ich hatte ihn mit 1MHz übersetzt (und auf den Tiny26 gebrannt), damit
wird es etwas schneller als in Echtzeit bei Autostep.
Siehe Anhang
HildeK schrieb:> Ich hatte ihn mit 1MHz übersetzt (und auf den Tiny26 gebrannt), damit> wird es etwas schneller als in Echtzeit bei Autostep.
Klar - je nachdem, wie Du übersetzt (F_CPU bestimmt die delay-Cycles)
geht es auch schneller. Aber so schnell wie in Deinem Video? Den Test
(eine WIN 7 VM habe ich auch noch) mache (mit AS 4.18) ich noch (heute
oder morgen) - ich melde mich ...
Hugo H. schrieb:> Aber so schnell wie in Deinem Video?
Ich habe jedenfalls nichts getrickst bei dem Video. Es entspricht dem,
was ich auf dem Schirm sehe. War übersetzt mit '-Os'; geht ja bei Delays
nicht mit '-O0'. Als Simulator habe ich den AVR Simulator genommen.
Da oben mal die Realzahl beim _delay_ms-Argument angemerkt wurde, habe
ich beide Varianten drin.
Und meine Quadcore CPU hat auch schon einige Jahre auf dem Buckel:
i7-4770 ...
HildeK schrieb:> Und meine Quadcore CPU hat auch schon einige Jahre auf dem Buckel:> i7-4770 ...
Prozessor Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz, 2668 MHz, 4
Kern(e), 8 logische(r) Prozessor(en)
Ich bin gespannt auf 4.18 :-)
Kannst Du bitte Dein Projekt hier einhängen?
Hugo H. schrieb:> Kannst Du bitte Dein Projekt hier einhängen?
Das Projekt nützt dir leider nichts: es hat absolute Pfade drin.
Hier steht der Code:
Mans A. schrieb:> ...
Mach ein neues auf, wähle den Tiny26 oder 261 und nimm den AVR
Simulator. Kopiere den Code rein, ändere F_CPU auf 1MHz compiliere mit
-Os und simuliere ...
Mehr habe ich auch nicht gemacht.