Forum: Compiler & IDEs fuses bit einstellung?


von Marvin M. (marvin_avr)


Angehängte Dateien:

Lesenswert?

Hallo


ich hab mir vor einigen tagen das avr starter kit gekauft

http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&;
id=108

allerdings benutze ich nicht den Usbprog 3.0 sondern den AVRISP mkll.

Nun zum problem in der Anleitung gibt es ein Test-Beispielprogramm, 
welches
die LED blinken lassen soll, leider geht das nicht wie gewünscht. Ich 
habe zwar sehr lange gegoogelt und nehme an es liegt an den Fuses bit, 
Wie muss ich diese einstellen oder stimmt die momentane einstellung?:(

hier noch das Beispielprogramm und im Anhang die ausgelesenen 
Fuses+schaltplan des controllers:
#include <avr/io.h>


#define F_CPU 1000000UL
#include <util/delay.h>






int main()
{

  DDRC = (1 << PC5); /* Output */
  PINC = (1 << PC5); /* internal Pullups */

  while(1){

    PORTC |= (1 << PC5);/*LED OFF*/
    _delay_ms(250);
    PORTC &= ~(1 << PC5);
    _delay_ms(250);

  }



  return 0;
}

von ... (Gast)


Lesenswert?

Marvin Mujkic schrieb:
> leider geht das nicht wie gewünscht

WAS geht nicht? Was passiert denn statt der blinkenden LED? Wie hast Du 
das festgestellt?

Ist der Jumper gesteckt?

Schau Dir mal Deinen Screenshot an (die Fuses) und dann überleg mal wozu 
diese Zeile in Deinem Programm gut sein könnte:
1
#define F_CPU 1000000UL

Besser wäre es allerdings, diese Zeile komplett zu entfernen und statt 
dessen im AVRStudio unter Project->Configuration Options die 
tatsächliche Fraquenz einzutragen, das Makro F_CPU wird dann im vom 
AVRStudio generierten Makefile gesetzt.

Ansonsten, die Zeile ist auch überflüssig:
1
PINC = (1 << PC5);

von ... (Gast)


Lesenswert?

Achso, noch was. Da auf dem Board anscheinend ein Quartz verbaut ist, 
wäre eine Fuse-Einstellung mit "external Crystal ..." wahrscheinlich 
richtiger. Wichtig wird das für Dich aber eigentlich erst, wenn Du die 
USART verwenden willst. Bis dahin kannst Du getrost bei Deinen jetzigen 
Einstellungen bleiben.

von Peter D. (peda)


Lesenswert?

... schrieb:
> Ansonsten, die Zeile ist auch überflüssig:
> PINC = (1 << PC5);

Sie setzt zwar den Pin auf high, aber das ist dann kein schwacher 
Pullup, sondern kräftig, da er ja ein Ausgang ist.


Peter

von Peter D. (peda)


Lesenswert?

... schrieb:
> Ansonsten, die Zeile ist auch überflüssig:
> PINC = (1 << PC5);

Beim ATmega8 ist sie wirkungslos, aber beim ATmega88 funktioniert sie.
Sie setzt den Pin von low auf high, aber das ist dann kein schwacher 
Pullup, sondern kräftig, da er ja ein Ausgang ist.


Peter

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
Noch kein Account? Hier anmelden.