mikrocontroller.net

Forum: Compiler & IDEs Lauflicht mit STK500


Autor: Kemal Darsel (macro09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich hab ein einfaches Programm mit AVR geschrieben aber irgendwie 
funktioniert es nicht... Ich weiß nicht mehr weiter, wäre nett wenn mir 
einer helfen würde.

Hier ist das Code

#include <avr/io.h>
#include <avr/interrupt.h>


volatile unsigned int flag=0;
volatile unsigned int i, links = 1;


void init(void);

ISR (TIMER1_OVF_vect)
{
  flag = 1;
  TCNT1H = 0x0B;
  TCNT1L = 0xDB;

}

int main(void)
{
  init();
  while(1)
  {
    if(flag)
    {
      if(PORTB == 0x7F) links = 0;
      else if (PORTB == 0xFE) links = 1;

      if(links) i = i << 1;
      else  i = i >> 1;
      PORTB = ~i;
      flag = 0;
    }

  }
  return 0;
}

void init(void)
{
  DDRB = 0xFF;
  PORTB = 0xFE;
  i = 1;
  TCCR1B |= (1<<CS11) || (1<<CS10);
  TCNT1H = 0x0B;
  TCNT1L = 0xDB;
  TIMSK |= (1<<TOIE1);
  sei();
}

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie äußert sich dieses "irgendwie"?

Auf jeden Fall wird dein Lauflicht im Augenblick deutlicher schneller 
laufen, als erwartet, weil du in Wirklichkeit nur CS10 setzt, und nicht 
CS10 und CS11.

Autor: Kemal Darsel (macro09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> Und wie äußert sich dieses "irgendwie"?
>
> Auf jeden Fall wird dein Lauflicht im Augenblick deutlicher schneller
> laufen, als erwartet, weil du in Wirklichkeit nur CS10 setzt, und nicht
> CS10 und CS11.

Also stimmt der Befehl da nicht?

TCCR1B |= (1<<CS11) || (1<<CS10);

Autor: Alexander S. (schroeder_90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCCR1B |= (1<<CS11) | (1<<CS10);

so bitte

Autor: Kemal Darsel (macro09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander S. schrieb:
> TCCR1B |= (1<<CS11) | (1<<CS10);
>
> so bitte

Vielen Dank! :)

Autor: Kemal Darsel (macro09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe es grad jetzt geändert aber funktioniert immer noch nicht ....
Bin schon am verzweifeln...

Hier ist der neue Code, vielleicht hab ich noch was vergessen aber ich 
selber komme leider nicht drauf....


#include <avr/io.h>
#include <avr/interrupt.h>


volatile unsigned flag=0;
volatile unsigned i, links = 1;


void init(void);

ISR (TIMER1_OVF_vect)
{
  flag = 1;
  TCNT1H = 0x0B;
  TCNT1L = 0xDB;

}

int main(void)
{
  init();
  while(1)
  {
    if(flag)
    {
      if(PORTB == 0x7F) links = 0;
      else if (PORTB == 0xFE) links = 1;

      if(links) i = i << 1;
      else  i = i >> 1;
      PORTB = ~i;
      flag = 0;
    }
  }
  return 0;
}

void init(void)
{
  DDRB = 0xFF;
  PORTB = 0xFE;
  i = 1;
  TCCR1B |= (1<<CS11) | (1<<CS10);
  TCNT1H = 0x0B;
  TCNT1L = 0xDB;
  TIMSK |= (1<<TOIE1);
  sei();
}

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kemal Darsel schrieb:
> Habe es grad jetzt geändert aber funktioniert immer noch nicht ....
> Bin schon am verzweifeln...

Dann komm doch mal mit Details rüber. Was genau heißt "funktioniert 
nicht"? Und welcher Controller?

Autor: Kemal Darsel (macro09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> Kemal Darsel schrieb:
>> Habe es grad jetzt geändert aber funktioniert immer noch nicht ....
>> Bin schon am verzweifeln...
>
> Dann komm doch mal mit Details rüber. Was genau heißt "funktioniert
> nicht"? Und welcher Controller?

Hab den Fehler gefunden, es geht jetzt :)
Danke für alle Antworten!

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.