timer0 für anfänger

OP #363359
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
Angehängte Dateien:
Gast #363360
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
Gast #363361
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.
Gast #363364
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)
Gast #363368
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren