Forum: Compiler & IDEs compiler error bei dcf77 code von ulrichradig


von Hannes (Gast)


Lesenswert?

hi,

beim versuch den dcf77 code von ulrichradig zu compilieren bekomm ich
diverse compiler error -trotzdem ich die neuste winavr version benutze.
was ist denn da los :)

Fehler: Redefinition von SIGNAL
Fehler: EICRA nicht deklariert (erste Benutzung in dieser Funktion)
Fehler: zu viele Argumente für Funktion fdevopen

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


Lesenswert?

> Redefinition von SIGNAL

Sieht so aus, als wäre <avr/interrupt.h> nicht reingezogen
worden.

> EICRA nicht deklariert (erste Benutzung in dieser Funktion)

Dein Prozessor hat dieses Register nicht, der Code denkt aber,
es wäre immer da.

> zu viele Argumente für Funktion fdevopen

Mit Übergang auf avr-libc 1.4 hat sich das API von fdevopen()
geändert.  Das alte API ist verfügbar, wenn man den Makro
__STDIO_FDEVOPEN_COMPAT_12 definiert, entweder via #define
(vor dem #include <stdio.h>) oder über eine -D-Option des
Compilers.  Steht alles in der Doku...

Eigentlich sollte aber der Code wohl besser auf die neuen APIs
angepasst werden (u. a. Ersatz von SIGNAL() durch ISR(),
Benutzung von FDEV_SETUP_STREAM() um kein malloc() mehr für
stdio zu benötigen).

von Hannes (Gast)


Lesenswert?

aha, danke !

wenn mein prozessor dieses register also nicht hat - wie muss ich den
code dann anpassen? hab leider noch nicht genügend ahnung um das alles
selbst hinzubekommen :)

es wird into_control auf 0x02 oder 0x03 gesetzt.

#define INT0_CONTROL    EICRA
#define INT0_FALLING_EDGE  0x02
#define INT0_RISING_EDGE  0x03

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


Lesenswert?

Meine Kristallkugel ist leider zur Reparatur, daher müsstest
du uns schon noch verraten, welchen Prozessor du benutzt.

Aber eigentlich kannst du auch gleich selbst dann im Datenblatt
nachgucken, wie das zugehörige Steuerregister heißt, mit dem
der Externinterrupt 0 aktiviert wird.

von hannes (Gast)


Lesenswert?

mh irgendwie bin ich überfordert :/

hab jetzt viel rumprobiert und andere beispiele gesucht, auch das
datenblatt durchgemacht aber ich fürchte ohne hilfe komme ich einfach
nicht weiter.

vielleicht hat ja jemand heute abend nochma kurz zeit dafür ... trotz
dem super wetter :P

danke ... und schönes wochenende!

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


Lesenswert?

Du hast uns leider immer noch nicht geschrieben, welchen
Prozessor du benutzt.  Alles, was wir wissen ist, dass er
kein EICRA hat, aber da bleiben immer noch ziemlich viele
AVRs übrig...

von hannes (Gast)


Lesenswert?

s**** .. total vergessen :/

atmega16

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


Lesenswert?

Datenblatt Seite 67: GICR.

War das wirklich so schwer zu finden?  Ich habe lediglich auf
der linken Seite in den Bookmarks den Punkt "External Interrupts"
nachgeschlagen.

Bitte mach dir das nächste Mal ein wenig mehr Mühe, deine
,,Hausaufgaben'' zu erledigen, sonst wird dir irgendwann keiner
mehr helfen wollen.

von Ronald Hensen (Gast)


Lesenswert?

Nabend

habe vermutlich ein ähniches Problem.

Mein Interrupt wird nicht ausgewertet. Im LCD habe ich die ganze Zeit NS 
stehen.
Habe schon beides Ausprobiert: #define INT0_CONTROL MCUCR als auch 
#define INT0_CONTROL GICR.
Ohne erfolg.
kannst du mir mal den Code vom Mega 16 rüber schicken.


MfG
Ronald

von Stephan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe den Code auf AVRStudio und WinAVR 20060421 angepaßt.

Grüße

Stephan

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.