Forum: Mikrocontroller und Digitale Elektronik ATmega16 - 'MCUCSR' undeclared


von rüdiger (Gast)


Lesenswert?

Hallo,

versuche grade einen Watchdog auf einem ATmega16 zu aktivieren.

Leider gibt das AVR-Studio folgende Fehlermeldung aus:

'MCUCSR' undeclared (first use in this function)

AVR/WDT.h habe ich ins Programm eingebunden.


Als Beispielprogramm verwende ich den Code aus dem Buch "AVR" von 
Florian Schäffer (S.179).

1
#include <avr/wdt.h>
2
if ((MCUCSR & (1<<WDRF)))
3
{
4
MCUCSR=0;
5
}
6
else
7
{
8
wdt_enable (WDTO_2S);
9
10
usw...

Kann jemand sagen, woran es liegt?

von rüdiger (Gast)


Lesenswert?

PS: Forensuche und Googel habe ich bereits zu Rate gezogen, leider 
bisher ohne Erfolg.

von g457 (Gast)


Lesenswert?

> Kann jemand sagen, woran es liegt?

[ ] Der Code ist vollständig
[ ] Du zeigst uns die Compilereinstellungen
[ ] Du holst die io.h rein

HTH

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Es fehlt ein #include <avr/io.h>, und das Programm muß mit 
-mmcu=atmega16 compiliert werden.

von rüdiger (Gast)


Lesenswert?

Johann L. schrieb:
> Es fehlt ein #include <avr/io.h>, und das Programm muß mit
> -mmcu=atmega16 compiliert werden.

Die #include <avr/io.h> ist im Header dabei, das Problem bleibt aber 
bestehen.

Meinst du damit, dass im AVR-Studio im Fenster "Main Projekt Options" 
unter "Device:" der Atmega16 eingestellt sein soll? Wenn ja, dem ist so 
und das Restprogramm funktioniert auch problemlos, wenn keine 
Watchdog-Programmbestandteile eingebaut sind.

von rudi (Gast)


Lesenswert?

Beitrag "Watchdog Reset beim Mega88 - Flag auswerten?"

MCUCSR umbenennen in MCUSR, dann versteht es der Compiler.

von spess53 (Gast)


Lesenswert?

Hi

>MCUCSR umbenennen in MCUSR, dann versteht es der Compiler.

Was soll das bringen? Die Resetquellen stehen nun mal in MCUCSR und 
nicht in MCUCR.

MfG Spess

von rüdiger (Gast)


Lesenswert?

spess53 schrieb:
> Was soll das bringen? Die Resetquellen stehen nun mal in MCUCSR und
> nicht in MCUCR.
>
> MfG Spess

Überhaupt merkwürdig, dass der Compiler "MCUCR" versteht und "MCUCSR" 
nicht ?!?!?

von rüdiger (Gast)


Lesenswert?

Frage: was ist, wenn ich den Watchdog hardwaremäßig über die WDTON-Fuse 
aktiviere?

Was muss dann softwareseitig noch gemacht werden, um ihn zu "füttern" 
(seinen Timer regelmäßig zu reseten) und die Auslösezeit auf 2 Sekunden 
einzustellen?

von (prx) A. K. (prx)


Lesenswert?

Je nach Controller heisst es mal so mal so. Da gibts neue mit 
MCUCR/MCUSR (Mega88/Mega164) und alte mit MCUCSR (Mega8/16). Wenn man 
dann den falschen Controller einstellt, dann wirds nix.

von Oliver (Gast)


Lesenswert?

Zumindest in der iom16.h des WinAVR2010 steht:

>#define MCUCSR  _SFR_IO8(0x34)

Schau halt mal bei deiner Compiler- bzw- avrlibc-Version nach, ob das da 
fehlt.

Oliver

von rüdiger (Gast)


Lesenswert?

A. K. schrieb:
> Je nach Controller heisst es mal so mal so. Da gibts neue mit
> MCUCR/MCUSR (Mega88/Mega164) und alte mit MCUCSR (Mega8/16). Wenn man
> dann den falschen Controller einstellt, dann wirds nix.

Wo steht denn, was für den jeweiligen Controller die richtige 
Bezeichnung ist?

von (prx) A. K. (prx)


Lesenswert?

rüdiger schrieb:
> Wo steht denn, was für den jeweiligen Controller die richtige
> Bezeichnung ist?

Im Datasheet.

MCUCSR ist beim Mega16 schon richtig. Nur muss der Compiler auch wissen, 
dann der Mega16 gemeint ist. Man muss ihm das also irgendwie sagen.

von rüdiger (Gast)


Lesenswert?

A. K. schrieb:
> Im Datasheet.
>
> MCUCSR ist beim Mega16 schon richtig. Nur muss der Compiler auch wissen,
> dann der Mega16 gemeint ist. Man muss ihm das also irgendwie sagen.

Habs gefunden, alles klar, geht jetzt!

Danke an euch für die Geduld!!!

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.