mikrocontroller.net

Forum: Compiler & IDEs Overflow-Routine


Autor: Patrick Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe bei einen 8515 den 8-bit Counter realisiert. Er zählt auch,
doch nun möchte ich, wenn er überläuft, das die Overflowroutine
aufgerufen wird. Dies macht er auch, so wie mir das das AVR Studio
anzeigt. Doch den Coder darin steht wird nicht ausgeführt.

Kurzbeschreibung: Counter läuft über => Overflow Routine soll eine
Variable um 1 nach oben zählen und den Wert auf den LEDs des STK500
ausgeben!

Code:

#include <io.h>
#include <sig-avr.h>
#include <interrupt.h>
#include <math.h>

unsigned char wert_r, wert_l, wert_h, overflow_r=0x00;
   /*8-bit Variablenn*/
long double  faktor = 0.44753086, schlupf_r;
/*16-bit Gleitkomma Variablen*/


SIGNAL(SIG_INTERRUPT0)                  /*Switch 2: Start 8-bit
Counter*/
{

wert_r=inp(TCNT0);                        /*Wert des Counter
auslesen*/
outp(~wert_r, PORTB);                     /*Den Wert auf den LEDs
ausgeben*/

outp(0x00, TCNT0);                      /*8-bit Counter
zurücksetzen/nullen*/
cbi(TIFR, TOV0);                        /*Overflow-Bit zurücksetzen*/
outp((1<<CS00), TCCR0);                 /*Counter-Start mit CLK*/
/*overflow_r=2;*/
}

SIGNAL (SIG_OVERFLOW0)                  /*Wenn das Overflowbit gesetzt
wird
                                        startet diese Routine und zählt
die
                                        Variable overflow_r um 1
hoch*/
{
overflow_r++;                           /*Overflow um 1 hochzählen*/
outp(~overflow_r, PORTB);               /*Wert auf den LEDs ausgeben*/
}

SIGNAL(SIG_INTERRUPT1)                  /*Switch 3: Start 16-bit
Counter*/
{
wert_h=inp(TCNT1L);                     /*Wert des Counters auslesen*/
outp(~wert_h, PORTB);                   /*Den Wert auf den LEDs
ausgeben*/

outp(0x00, TCNT1H);                     /*High-Counter
zurücksetzen/nullen*/
outp(0x00, TCNT1L);                     /*Low-Counter
zurückstellen/nullen*/
cbi(TIFR, TOV1);                        /*Overflow-Bit zurücksetzen*/
outp((1<<CS10),TCCR1B);                 /*Counter-Start mit CLK*/
}

int main(void)
{
outp(0x00, DDRD);                       /*Port D als Eingänge
schalten*/
outp(0xFF, DDRB);                       /*Port B als Ausgabe
(LEDs)schalten*/

outp(0x02, TIMSK);                      /*8-bit: Overflow Interrupt
aktivieren*/
outp((1<<INT0)|(1<<INT1), GIMSK);       /*Interrupteinstellungen*/
sei();                                  /*Interrupts einschalten*/

/*schlupf_r = 1-faktor*wert_r/wert_h;*/

for(;;)                                 /*Endlosschleife*/
{
}
}


Vielleicht kann mir jemand nen Tipp geben!

Vielen Dank schon mal im Voraus!


MfG Patrick Weber

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FAQ #1...  Lies doch bitte erstmal die FAQ.

(WinAVR -> docs -> avr-libc docs)

Autor: Patrick Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich hatte das Programm nicht installiert und deshalb auch nicht
diese FAQ... Aber nun gut, nun habe ich die Variable folgendermassen
deklariert: volatile unsigned char overflow_r=0;
Aber es passiert dennoch nichts, also keine LED leuchten auf, auch wenn
ich die Variable zB mit dem Wert 3 belege...

Hat jemand ne Idee?

regards patrick

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.