Moin, ich hab mir einige LED-Module 1637 besorgt und an den Attiny 45 angeschlossen. Das Programm (hier aus dem Forum) als solches funktioniert, aber viel zu schnell. Wenn ich CKDIV8 setze läuft das Programm in etwa mit der passenden Geschwindigkeit. (der Attiny läuft dann auch nachgemessen mit 1MHz; sonst mit ca 8,3 MHz) Ich frage mich, wie das kommt. Hat einer eine Idee? Thomas
> Wenn ich CKDIV8 setze läuft das Programm in etwa mit der passenden > Geschwindigkeit. Wenn Du mit "setzen" "unprogrammed" meinst so wie im Screenshot, dann läuft die Mühle mit grob 8MHz und das F_CPU-Define im selben Screenshot passt dazu. HTH
Thomas G. schrieb: > Moin, > ich hab mir einige LED-Module 1637 besorgt und an den Attiny 45 > angeschlossen. Das Programm (hier aus dem Forum) als solches > funktioniert, aber viel zu schnell. Wenn ich CKDIV8 setze läuft das > Programm in etwa mit der passenden Geschwindigkeit. (der Attiny läuft > dann auch nachgemessen mit 1MHz; sonst mit ca 8,3 MHz) Ich frage mich, > wie das kommt. Hat einer eine Idee? > > Thomas Hallo Thomas, In deinem Bild von einem möglichen Programm, das weiß aber keiner, ist die erste Zeile F_CPU 8MHz ` ` UL und ob das so sein soll?
g457 schrieb: >> Wenn ich CKDIV8 setze läuft das Programm in etwa mit der passenden >> Geschwindigkeit. > > Wenn Du mit "setzen" "unprogrammed" meinst so wie im Screenshot, dann > läuft die Mühle mit grob 8MHz und das F_CPU-Define im selben Screenshot > passt dazu. > > HTH Genau in der Einstellung wie abgebildet läuft das Werk zu schnell. Haken = Ckdiv aktiviert, oder?
:
Bearbeitet durch User
> Genau in der Einstellung wie abgebildet läuft das Werk zu schnell.
Compilerparameter prüfen und zeigen (sollten irgendwo im Buildlog
auftauchen), ggf. ein #ifdef-F_CPU-#error einbauen, gesamten Code
zeigen.
@Thomas G.: der Betreff dieses Threads lautet "1637-LED arbeitet nicht wie erwartet" --> Was genau an der LED funktioniert denn nicht? NAch dem was du beschreibst, geht es ja nicht um die LED (oder deren Treiber etc) als solches, sondern um den steuerndern uC, der sich irgendwie unerwartet verhält. Es geht mir nicht so sehr ums "oberlehrerhafte". Mit einen "falschen" Betreff lockst du abermöglicherweise die falschen oder nicht die richtigen Leser zu deinem Thread hin
:
Bearbeitet durch User
Hier nun wie versprochen, das C-File. @ Wegstaben V.; die Ansteuerung besagten Moduls mittels eines Attiny45 liefert nicht die erwarteten Ergebnisse.
Ich meine mich schwach zu erinnern, dass die _delay_ms() Funktion einer früheren avr-libc Version nicht beliebig lange pausieren konnte. https://www.microchip.com/webdoc/AVRLibcReferenceManual/group__util__delay_1gad22e7a36b80e2f917324dc43a425e9d3.html "The maximal possible delay is 262.14 ms / F_CPU in MHz" und "When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality" Aber dieser zweite Teil war nicht immer drin. Rediziere dein programm mal auf das absolute Minimum, wo eine einzelne LED an PB0 einfach nur blinkt. Etwa:
1 | #define F_CPU 8000000UL
|
2 | #include <util/delay.h> |
3 | #include <avr/io.h> |
4 | |
5 | int main() |
6 | {
|
7 | DDRB = 1; |
8 | for (;;) |
9 | {
|
10 | PORTB = 1; |
11 | _delay_ms(1000); |
12 | PORTB = 0; |
13 | _delay_ms(1000); |
14 | }
|
15 | }
|
Stimmen die Zeiten dann (1s an, 1s aus)?
Sorry für die späte Antwort, ich lag darnieder. Ja, die Zeiten stimmen.
Thomas G. schrieb: > Ja, die Zeiten stimmen. Das heisst, das die _delay_ms() Tutu, was sie soll. Die Fuses und der Quarz funktionieren korrekt. Dann kann es sich also wohl nur noch um einen Fehler in deiner Programmlogik handeln. Taste dich da schrittweise heran. Reduziere das Programm auf immer weniger, bis der Fehler verschwindet.
Mit der Zeile funktioniert es; Vielleicht war eine Null oder Leerzeichen zuviel. #define F_CPU 8000000UL Danke erst mal.
Thomas G. schrieb: > Mit der Zeile funktioniert es; Vielleicht war eine Null oder Leerzeichen > zuviel. > #define F_CPU 8000000UL Vorher stand da genau das gleiche im Anhang vom Beitrag #5846501: > #define F_CPU 8000000UL Warum hat es denn damit nicht funktioniert? Das verstehe ich nun nicht.
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.