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


von Olaf O. (olaf-petersen)


Angehängte Dateien:

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

von bla (Gast)


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

von greg (Gast)


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.

von Olaf O. (olaf-petersen)


Lesenswert?

Ok lag wirklich nur an der Version. Mit der neuen hat es gleich
funktioniert.

von neuer (Gast)


Lesenswert?

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


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

von neuer (Gast)


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)

von greg (Gast)


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.

von neuer (Gast)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


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)..

von neuer (Gast)


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.

von greg (Gast)


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...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Lass ihn doch, Pebisoft ist ein bekannter Gruppentroll.

von neuer (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.