LED Blinken lassen

Gast #181653
Wieso blinkt die LED nicht mir dem Code?? Was mache ich falsch?

/*********************************************
Taste-LED (1 LED)
Compiler            : winavr
Chip type           : AT90S2313
nst, 12.05.2005
*********************************************/
#include <avr/io.h>
#include <inttypes.h>
#ifndef F_CPU
#define F_CPU 10000000UL     /* Quarz mit 10.0000 Mhz  */
#endif
#include <avr/delay.h>


int main(void)
{

  DDRB &= 0xff;

  PORTB = 0xff;


  while (1)
  {
  PORTB |= ( 0 << 1);

  _delay_ms(1000);

  PORTB &= ~(1 << 1);

  _delay_ms(1000);
  }
}
Gast
Weil du die Doku zu <avr/delay.h> auch nicht lesen kannst.  Hättest du
wenigstens zwei oder drei Threads hier mitgelesen, wäre dir dasselbe
Problem bei jemandem anders aufgefallen.

Bitte gehe zurück zur Badstraße, gehe nicht über LOS, und rechne dir
aus, welche Verzögerung maximal bei 10 MHz mit der 16-bit-Schleife
machbar ist.  Dann hälst du einen Oszi an deine LED und misst mal
nach, ob sie einigermaßen mit der entsprechenden Frequenz flimmert...
Gast
An welchen Pin ist denn deine LED angeschloosen? Ich nehme mal an, an
PB.1. Die Zeile

PORTB |= ( 0 << 1);

ändert jedoch nur einmal den Zustand von PORTB, danach nicht mehr.

Probiere es mal hiermit:

while (1)
{
  PORTB ^= 2;       // EX-OR
  _delay_ms(1000);
}

Gruß
Thorsten
Gast
- DDRB=0xff, nicht &=
- PORTB|=(1<<1), nicht (0<<1)
- Parameter an delay testweise kleiner (vgl. aktuelle Diskussion in
einem anderen Thread und avr-libc-Dokumentation und "delay.h")
Gast
LOL das ist ja blöd!! Wieso kann man nicht direct 2000 für 2 sek
eigeben? hat das was mit dem AVR zutun??
So geht das:

while (1)
{
  PORTB ^= 2;       // EX-OR
  for(i=0;i<78;i++)
  {
  _delay_ms(26);
  }
}
Gast
> LOL das ist ja blöd!! Wieso kann man nicht direct 2000 für 2 sek
> eigeben? hat das was mit dem AVR zutun??

avr-libc (dazu gehört delay.h und _delay_ms) ist Open Source. Wenn du
irgendetwas blöd gelöst findest, darfst du gerne einen Patch schreiben
und die fragliche Stelle verbessern. Rummeckern kann jeder.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.