einfaches Blinken LED

Gast #4981711
Lesenswert?

Hallo,
ich möchte zunächst einfach eine LED blinken lassen, doch da passiert 
nichts.
1
#include <avr/io.h>
2
#ifndef F_CPU 
3
#define F_CPU 1000000UL
4
#endif
5
#include <avr/delay.h>
6

7
int main(void)
8
{
9
  DDRB  = 0xff;
10
    while (1) 
11
    {
12
        PORTB |= (1<<PB1);    //Bit setzen
13
        _delay_ms(500);       // halbe sekunde warten
14
        PORTB &= ~(1<<PB1);   // Bit loeschen
15
        _delay_ms(500);       // halbe sekunde warten
16
    }
17
}

Der Controller hat einen 8Mhz Quarz. Die Fuses sind:
Low: 0x62
High: 0xDF
Extended Action 0xFF
Die LED ist an PB1 angeschlossen. Der Code sollte ja so richtig sein. 
Wollte mit dem Blinken, die eingestellte Quarzfrequenz ermitteln. Aber 
da gar nichts blinkt, stehe ich nun da und komme nicht weiter.
ist F_CPU richtig definiert? oder Muss ich die Fuses noch ändern? Oder 
liegt der Fehler noch woanders?

Marc
#4981746
Lesenswert?

Hi

Marc schrieb:
> #define F_CPU 1000000UL

Marc schrieb:
> Der Controller hat einen 8Mhz Quarz.

Ich vermisse oben eine 8 oder unten eine 1.

Trotzdem sollte das Konstrukt blinken. (sofern |= verodern und &= ~ 
verunden mit Komplement)
Ist die LED noch am Leben??
Vorwiderstand für die LED, wie groß?
Spannungsversorgung des ATtiny45, Puffer/Abblockkondensatoren?
Reset beschaltet? (wobei Das bisher immer lief ... leise pfeifend umdreh 
und weg geh ...)

MfG
#4981757
Lesenswert?

Hi

5V 10kΩ -> 5:10000 = 0,0005A -> 0,5mA

Sicher, daß die LED da überhaupt was sagt?

MfG

PS: Ok, bei low current - aber eine 'Normale' mit nominal 20mA könnte 
bei <1mA schon recht dunken 'hell' sein.

http://www.elektronik-kompendium.de/sites/bau/1109111.htm
http://www.leds.de/Widerstandsrechner/

(gibt's hier in den Grundlagen bestimmt auch was zu)
Jupp:
https://www.mikrocontroller.net/articles/LED
#4981770
Lesenswert?

Hi

Hast Du ggf. den ATtiny dabei gegrillt?
Sprich: Der tiny stand auf OUT,low und Du hast 5V drauf gegeben?

Andere Idee: Du hast im Schaltplan einen Quarz(?) - darfst Du dann ddrb 
komplett auf OUT schalten?
Schwingt dann der Quarz noch?

Ohne Takt kein Programmablauf.

MfG

Melde mich für heute ab ;)
PS: sorry, so dringend hatte ich 'Es' noch nicht, daß ich die fuses 
auswenig gelernt hätte - dann geht dieser Fehler wohl zu mir.
PPS: bei mir muß ich Win in der VB starten, um die fuses 'anzuschauen' - 
gibt wohl bestimmt auch online eine Übersicht - wie geschrieben, den 
Fehler lasse ich gerne bei mir!
Gast #4981798
Lesenswert?

Walter S. schrieb:
>> Der Controller hat einen 8Mhz Quarz. Die Fuses sind:
>> Low: 0x62
>> High: 0xDF
>> Extended Action 0xFF
>
> das ist der interne Oszillator mit 8Mhz und Teiler 8

So waren diese eingestellt. Der Controller war ganz neu.
habe die Low auf 0x6E umgestellt, jetzt kann ich den Controller aber 
nicht mehr flashen und die Fuses nicht mehr ändern.
Ich bekomme den Fehler
Failed to enter programming mode. ispEnterProgMode: Error status 
received: Got 0xc0, expected 0x00 (Command has failed to execute on the 
tool), ModuleName: TCF (TCF command: Device:startSession failed.)
Das ganze habe ich mit einem Diamex Prog-S gemacht. Werde jetzt auch ins 
bett gehen und morgen weiter gucken. Vielen dank aber für eure hilfe 
bisher.
#4982143
Lesenswert?

Ab Werk läuft er ja mit internen 8MHz.
Jetzt willst du ihn mit ext 8MHz betreiben.

Auf deinem Schaltplan kann ich sehen, dass der Quarz zwischen PB2 und 
PB3 hängt.
Laut Datenblatt für den Attiny45 müsste der aber zwischen PB3 und PB4

Also bekommt er im Moment keinen Takt und kann nicht angesprochen 
werden...
Überprüfe das mal.
#4982394
Lesenswert?

Ich würde ja erstmal die Delays von 500ms auf 50ms reduzieren. Wenn die 
Taktfrequenz nicht stimmt, dann glaube ich oft, es funktioniere nicht, 
obwohl es einfach nur extrem langsam läuft.

Einen halbsekündlichen Blinker (obwohl ich "sehr schnell" erwarte) 
bemerke ich, aber 5 Sekunden starre ich da nicht drauf.

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