mikrocontroller.net

Forum: Compiler & IDEs timer0 für anfänger


Autor: Olaf Olaf (olaf-petersen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie bekome ich das mit dem Timer und den Interrupts nicht hin.
Ich verwende einen MEga16 auf dem Testboard vov Kreatives-chaos. Bisher
habe ich in Bascom die Programme geschrieben, doch damit soll nun
schluss sein.

Dieses Programm soll nichts weiter machen als Pins an PortD binär
hochzuzählen. dazu soll der Timer beim Überlauf einen Interrupt
auslösen und eine Variable inkrementieren. Mir ist egal wie schnell
dies geschieht, denn bis jetzt sind nur zwei Lämpchen an (entspricht
0x11) an PortD.

Wenn ich auf MAKE ALL klicke tauchen auf Warnungen auf, die mir aber
nicht viel sagen

Compiling: timer.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=11059000UL  ....
timer.c:39: warning: return type defaults to `int'
timer.c:39: warning: function declaration isn't a prototype
timer.c: In function `ISR':
timer.c:39: warning: type of "TIMER0_OVF_vect" defaults to "int"
timer.c:42: warning: control reaches end of non-void function

hoffe Ihr könnt mir helfen

Autor: bla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du int main (void) schreibst musst du auch mit return 0; was
zurückgeben. Ausserdem müssen Funktionen deklariert werden bevor du die
benutzt. Also entweder komplett vor deiner main stehen, oder da
deklariet werden.

Gruß

bla

Autor: greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du eventuell noch avr-libc 1.2.x? Da gibt es das Makro ISR() noch
nicht und nur die von dir auskommentierte veraltete Weise
funktioniert.

Bei mir mit gcc 4.0.2 und aktuellster avr-libc kann ich deinen
Sourcecode kompilieren.

Autor: Olaf Olaf (olaf-petersen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok lag wirklich nur an der Version. Mit der neuen hat es gleich
funktioniert.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du int main (void) schreibst musst du auch mit return 0..


stimmt nicht.................mit return ist keine pflicht.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du reinschaust in die io...h, wirst du sehen , das man auch die
alten verwenden kann. es wird machmal zuviel schwachsinn verbreitet.

#define INT0_vect      _VECTOR(1)
#define SIG_INTERRUPT0      _VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect      _VECTOR(2)
#define SIG_INTERRUPT1      _VECTOR(2)

/* Timer/Counter2 Compare Match */
#define TIMER2_COMP_vect    _VECTOR(3)
#define SIG_OUTPUT_COMPARE2    _VECTOR(3)

/* Timer/Counter2 Overflow */
#define TIMER2_OVF_vect      _VECTOR(4)
#define SIG_OVERFLOW2      _VECTOR(4)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT_vect    _VECTOR(5)
#define SIG_INPUT_CAPTURE1    _VECTOR(5)

/* Timer/Counter1 Compare Match A */
#define TIMER1_COMPA_vect    _VECTOR(6)
#define SIG_OUTPUT_COMPARE1A    _VECTOR(6)

/* Timer/Counter1 Compare Match B */
#define TIMER1_COMPB_vect    _VECTOR(7)
#define SIG_OUTPUT_COMPARE1B    _VECTOR(7)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect      _VECTOR(8)
#define SIG_OVERFLOW1      _VECTOR(8)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF_vect      _VECTOR(9)
#define SIG_OVERFLOW0      _VECTOR(9)

/* Serial Transfer Complete */
#define SPI_STC_vect      _VECTOR(10)
#define SIG_SPI        _VECTOR(10)

/* USART, Rx Complete */
#define USART_RXC_vect      _VECTOR(11)
#define SIG_USART_RECV      _VECTOR(11)
#define SIG_UART_RECV      _VECTOR(11)

/* USART Data Register Empty */
#define USART_UDRE_vect      _VECTOR(12)
#define SIG_USART_DATA      _VECTOR(12)
#define SIG_UART_DATA      _VECTOR(12)

/* USART, Tx Complete */
#define USART_TXC_vect      _VECTOR(13)
#define SIG_USART_TRANS      _VECTOR(13)
#define SIG_UART_TRANS      _VECTOR(13)

/* ADC Conversion Complete */
#define ADC_vect      _VECTOR(14)
#define SIG_ADC        _VECTOR(14)

/* EEPROM Ready */
#define EE_RDY_vect      _VECTOR(15)
#define SIG_EEPROM_READY    _VECTOR(15)

/* Analog Comparator */
#define ANA_COMP_vect      _VECTOR(16)
#define SIG_COMPARATOR      _VECTOR(16)

/* 2-wire Serial Interface */
#define TWI_vect      _VECTOR(17)
#define SIG_2WIRE_SERIAL    _VECTOR(17)

/* External Interrupt Request 2 */
#define INT2_vect      _VECTOR(18)
#define SIG_INTERRUPT2      _VECTOR(18)

/* Timer/Counter0 Compare Match */
#define TIMER0_COMP_vect    _VECTOR(19)
#define SIG_OUTPUT_COMPARE0    _VECTOR(19)

/* Store Program Memory Ready */
#define SPM_RDY_vect      _VECTOR(20)
#define SIG_SPM_READY      _VECTOR(20)

Autor: greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer: Natürlich kann man die verwenden, Stichwort ist hier aber
'noch'. Sie gelten als deprecated und werden in den nächsten
Versionen der avr-libc eventuell entfernt.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man brauch diese nur wieder in die zuständige io...h reincopieren und ab
geht die post ohne das programm zu ändern.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na toll. da gewöhnt man sich lieber moderneres an.

Nehme an, du hast ein Buch mit alter Schrift. Diese Schrift beherrschst
du. Jetzt kommt ein neues Buch, was viel kürzer ist (Schrift ist
"optimierter") Was tust du? Alles übersetzen und dann lesen, oder
lieber neue Sprache lernen (und in die Zukunft schauen)..

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du ich schreibe jedes jahr die programme neu, bloss weil sich
einpaar defines geändert haben. das schöne ist an c, das man nicht
alles mitmachen musst was anderen aus langeweile einfällt. das alte
oben wurde jetzt schon in fast 548000 winavr-c programmen geproggt. es
ist es wert, das es nicht geändert wird nach dem neuen.

Autor: greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Fall solltest du aber lieber bei der alten avr-libc bleiben.

Es ist auch nicht schön, wenn ein Programm nur mit deiner selbst
zusammengehackten und gepatchen avr-libc läuft...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass ihn doch, Pebisoft ist ein bekannter Gruppentroll.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe nicht vor andere mit meinen programmen zu füttern.
wer die routinen haben möchte kann dann die interrups selber umändern.

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.