www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED Steuerung mit Interrupt


Autor: samer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir jemand sagen warum  dies  Programm nicht laüft ,was ist falsch 
?

/*   PD2:  LED blinkt
 * nst, 14.11.2005   */
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

volatile uint8_t led_an;

SIGNAL (SIG_TIMER1_OVF)
{ led_an=~led_an;
}

void ioinit(void)
{ TCCR1A=0;
  TCCR1B=(1<<CS11) | (1<<CS10);  /* full/:8/:64 MCU clock */
  TIMSK=(1<<TOIE1);
  sei();  /* enable interrupts */
}

int main (void)
{
  ioinit();
  DDRD=0x02;      /* use PortD1 for output (LED) */
  PORTD=0x00;     /* turn LED off */
  for (;;)
  { PORTD=~led_an;     /* LED */
  }
}

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.: Was für ein Controller ist das?
2.: Welche Taktfrequenz
3.: Schaff Dir erstmal die aktuelle WINAVR-Version an. Die ganze 
SIGNAL-Geschichte ist veraltet und sollte nicht mehr benutzt werden.

Autor: samer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo das ist avr atmega 8515 auf stk500

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
samer wrote:
> hallo das ist avr atmega 8515 auf stk500
Das ist die Antwort auf 1. Und was ist mit 2.?

Autor: samer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiss nicht ganz genau

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal simuliert ?

Autor: samer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Takt , 4Mhz

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal folgendes:

/*   PD2:  LED blinkt
 * nst, 14.11.2005   */
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

void Delay (uint32_t delay)
{
  uint32_t i;
  for (i = 0; i < delay; i++)
    nop ();
}

int main (void)
{
  DDRD=0x02;      /* use PortD1 for output (LED) */
  PORTD=0x00;     /* turn LED off */
  for (;;)
  {
    PORTD ^= (1 << PD2);     /* LED */
    Delay (100000);
  }
}

Wenn das nicht tut, dann fehlt Deinem µC wohl der Takt ....

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn das nicht tut, dann fehlt Deinem µC wohl der Takt ....

Wenn dem µC der Takt fehlen würde, könnte er ihn gar nicht programmieren 
;)

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
By the way: Ich hab den Code mal eben (minimal abgeändert / siehe 
unten)compiliert und durch den Simulator gejagt. Der Simulator sagt dass 
es funktioniert (1 Sek. an... 1 Sek. aus... 1 Sek. an... usw.)
/*   PD2:  LED blinkt
 * nst, 14.11.2005   */
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>           <-- signal.h ist obsolet !

volatile uint8_t led_an;

//SIGNAL (SIG_TIMER1_OVF)           <-- veraltet / ungültig !
ISR (TIMER1_OVF_vect)            // <-- neu / gültig ;)
{ led_an=~led_an;
}

void ioinit(void)
{ TCCR1A=0;
  TCCR1B=(1<<CS11) | (1<<CS10);  /* full/:8/:64 MCU clock */
  TIMSK=(1<<TOIE1);
  sei();  /* enable interrupts */
}

int main (void)
{
  ioinit();
  DDRD=0x02;      /* use PortD1 for output (LED) */
  PORTD=0x00;     /* turn LED off */
  for (;;)
  { PORTD=~led_an;     /* LED */
  }
}

Wenns bei dir nicht läuft, würde ich mal auf nen 
Bedienungs-/Verdrahtungsfehler tippen.

Ähm... wo liegt das Problem eigentlich genau? Scheitert es bei dir schon 
am Compilieren, oder macht der Mega8515 nach dem Programmieren einfach 
nicht Anausanausanausanausanausanausanaus... ;)

...oder ganz doof gefragt: hast du die LED(s) überhaupt mit Port D 
verbunden? (dazu musst du eines der beigefügten Kabel benutzen)

Gruß,
Magnetus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.