Bitte Hilfe bei overflow Interrupt

Gast #427356
Lesenswert?
• ▲
▼
Halli Hallo,

Benutze Atmega16
Ich hab ein großes Problem, bitte helft mir. Ich bekomm das mit den
Interrupts nicht auf die Reihe. Ich erhalte beim compilieren Warnungen,
kann also das Hex-file draufladen aber es tut sich nix. Ich will die
Variable Sek hochzählen und auf ein LCD schreiben, wie schnell ist mir
vorerst mal egal.
Laut den Warnungen kennt er die ISR nicht (no prototype), benutze ich 
ein
fasches interrupt.h?

#include <avr\io.h>
#include <avr\interrupt.h>
#include "xlcd16.h"

void initPortsMC(void);

volatile int Sek;

//---------------------------------------------------------------------- 
--
ISR(SIG_OVERFLOW0)
{
  Sek++;
}
//---------------------------------------------------------------------- 
--

//---------------------------------------------------------------------- 
--
int main( void )
{
  Sek = 0;

  initPortsMC();
  lcd_port_init16();
  lcd_init16();
  // Display-Hintergundbeleuchtung
  BelDisHintergrund(1);

  TIMSK = ( 1 << TOIE0 );  // Timer Overflow Interrupts zulassen
  TCCR0 = ( 1 << CS01 );   // Vorteiler von 8

  sei();

  while(1)
  {
    lcd_gotoxy16(1,1);
    lcd_show_intvalue16(Sek);
  }
}
//---------------------------------------------------------------------- 
--


//---------------------------------------------------------------------- 
--
void initPortsMC(void)
{
    DDRA  |= 0b11110000;
    PORTA |= 0b11110000;
    DDRB  = 0b11111000;
    PORTB = 0b11111111;
    DDRC  = 0b11111111;
    PORTC = 0b11111111;
}
//---------------------------------------------------------------------- 
-----
Gast #427376
Lesenswert?
• ▲
▼
while(1)
  {
    lcd_gotoxy16(1,1);
    lcd_show_intvalue16(Sek);
  }

Das ist auf jeden Fall schon mal ein dicker Klops. Damit bist du 
ununterbrochen am LCD beschreiben, das kann sich durchaus so äussern, 
dass du gar nichts mehr siehst.
Brauchst ja nur zu schreiben, wenn sich was ändert. Oder in sinnvollen 
Zeitabständen (>200ms). Dafür gibts ganz viele Lösungen.
#427379
Lesenswert?
• ▲
▼
> Laut den Warnungen kennt er die ISR nicht (no prototype), benutze ich
> ein fasches interrupt.h?

Hmm.
Das passt eigentlich schon.
Das einzige ist, dass du anstatt SIG_OVERFLOW0 besser
TIMER0_OVF_vect benutzt. Die SIGxxx sind alte Sachen und
sind nur noch aus Kompatibilitätsgründen vorhanden.

Hast du den richtigen Prozessor eingestellt?

> Das ist auf jeden Fall schon mal ein dicker Klops.
Im Prinzip hat crazy horse schon recht. Allerdings ist das jetzt
noch nicht so schlimm. Die Einer und mgl. Zehnerstelle wird
flackern wie wild. Aber was solls.
#427394
Lesenswert?
• ▲
▼
> Es heißt auch
>
> #include<avr/io.h>
> ...
> ...
>
> und nicht
> #include<avr\io.h>

Wie Pfadangaben geschrieben werden ist in C selbst nicht
geregelt, sondern hängt vom Betriebssystem ab, auf dem
der Compiler läuft. Windows akzeptiert beides, wobei die
Schreibweise mit dem \ die Windows-übliche-Nicht-C Schreibweise
ist.
Wenn man die Entwicklung nicht auf ein anderes Host-System
verlagert, spielt es keine Rolle welche Version man benutzt.
Ansonsten fährt man mit der / Schreibweise besser, da die meisten
C Compiler diese Version zusätzlich zu der auf dem Hostsystem
üblichen unterstützen.

Ansonsten: Wenn der Compiler das File nicht gefunden hätte,
hätte er das schon in Form eines Errors mitgeteilt.

Antwort schreiben

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.

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.