1637-LED arbeitet nicht wie erwartet

OP (Firma: Frickelhauptquartier) #5845488
Lesenswert?

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
Angehängte Dateien:
Gast #5845505
Lesenswert?

> 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
Gast #5845537
Lesenswert?

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?
OP (Firma: Frickelhauptquartier) #5845615
Lesenswert?

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?
Gast #5845634
Lesenswert?

> 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.
#5845965
Lesenswert?

@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
Gast #5846509
Lesenswert?

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)?
Gast #5848354
Lesenswert?

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.
Gast #5848754
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren