Funkuhr Lib mit Atmega8

Durch Zufall ist mir heute ein DCF77 Empfänger (basierend auf den CME6005) in die Finger gekommen und natürlich wollte ich den gleich in die Arduiono IDE einbinden.
Ich habe mir die Lib fiendie-Funkuhr-3dbb650 in die IDE eingebunden und versucht die Example für das NG-Board (Atmega8) zu übersetzen.
Das ging leider gründlich daneben, denn der Compiler warf folgende Fehlermeldungen aus:

C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:63: warning: non-local variable '<anonymous struct> flags' uses anonymous type
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp: In member function 'void Funkuhr::init()':
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:109: error: 'TCCR2B' was not declared in this scope
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:115: error: 'TCCR2A' was not declared in this scope
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:118: error: 'WGM22' was not declared in this scope
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:124: error: 'TIMSK2' was not declared in this scope
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:124: error: 'OCIE2A' was not declared in this scope
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp: In member function 'uint8_t Funkuhr::synced()':
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:308: warning: integer overflow in expression
C:\Users\Lena\Desktop\Arduino\arduino-1.0\libraries\Funkuhr\Funkuhr.cpp:308: warning: comparison between signed and unsigned integer expressions

Schalte ich im Boardsmenu auf z.B. Arduino Uno um, so bleiben zwar die Warnings, doch der Code wird an sonsten einwandfrei übersetzt.
Ich folgere daraus, daß die Interruptregister für die Uraltboards anders organisiert und/oder benannt sind.
Auch wenn ich versucht habe in den Eingeweiden der Arduino-IDE der Sache auf die Schliche zu kommen, muß ich nun doch vorerst kapitulieren.
Kann mir jemand von Euch mal auf die Sprünge helfen, wie diese Lib auch auf einem Atmega8 zum laufen zu bringen ist?
Ich hab’ doch keine Lust das Rad noch einmal neu zu erfinden (obgleich das sicherlich sehr lehrreich wäre)

LG Lena

Wieso muss es ein Atmega 8 sein? Wenn Du den Umstellungaufwand (Zeit) mit einrechnest ist es viel günstiger ein passendes Board zu nehmen.

Ich muss schon sagen, ich finds immer wieder spannend, mit welchen Problemen uns Lena überascht...
MMn liegt es (wie bereits vermutet) an den Interuptregistern und der Adressierung.

Tja, der Einwand ist natürlich gerechtfertigt, doch

1.: ich habe z.Zt nur Atmega8 und Atmega32 Chips "auf Lager"
2.: ich möchte zwar die Arduino IDE verwenden aber nicht die Boards, da hinterher die brauchbaren Entwürfe eh auf Lochraster ö.ä wandern
3.: ich mag es minimalistisch und noch wird ja ein Atmega8-Board in der IDE unterstützt.

Aber wo wir gerade beim Thema sind - ich finde gerade keine wirklich guten Angebote für 328er - Jemand einen guten Tip?

LG Lena

P.S.: @ Marcus

Ich bin nun mal ein Spielkind und auch die "realen" Anwendungen sollen nur in "Spielereien" im Bereich Modellbau einfließen und ich vermute und hoffe ich bin nicht das einzige Spielkind in dieser Runde :wink:

Was ist den ein Gutes Angebot? und gehts dir nur um den Chip oder den Chip mit Bootrom, oder den kompletten Arduino (Uno)

Wenn Du die Register anpassen willst, dann ist das KEIN Arduino Thema. Das ist ein AVR Thema. D.h. die Anlaufstelle ist die AVR-libc. Da die Register dort alle wie in den Datenblättern benannt sind kannst Du also einfach ein 328er und ein 8er Datenblatt nebeneinanderlegen und schauen wie die entsprechenden Registerbezeichungen sind. Dann siehtst Du auch gleich ob die Pinbelegungen passen bzw. ob der 8er überhaupt ausreichend viele Funktionen bei den Timern hat. Ggf. musst Du ja auch die Bitmasken anpassen. Hört sich schlimmer an als es ist.

Die Änderungen die Du vornehmen musst sind in der Funkuhr Library vorzunehmen.

Schritt 1: Datenblätter runterladen :wink:

@ Marcus: Blanke Chips im DIP-Kleid - what else :wink:
So 5 Stück für 10 - 15 € und realistische Versandkosten wären schon lecker

@ Udo: Die Datenblätter der beiden Kandidaten habe ich natürlich doch so auf den ersten Blick finde ich nicht den Ansatz, weder in der Funkuhr.h noch der Funkuhr.cpp.
Mir scheint, das die entsprechenden Defines schlicht fehlen und der (Low)Level übersteigt noch etwas meine derzeitigen C-Fähigkeiten :frowning:

Also wenn mir jemand mit einigen Codeschnipseln und/oder Anregungen auf die Sprünge helfen mag....

LG Lena

Das ist schon ne Hausnummer... Aber momentan (dank der Verknappung durch die ganzen Klone) nicht zu bekommen. Ich hab immer mal gerne in Kanada bestellt, Lieferung dauerte bei diesem Händler etwa 8 Tage: http://www.ebay.de/itm/10x-8-bit-Microcontroller-ATMEGA328P-PU-/220993574907

Nicht schlecht
Macht unter'm Strich incl EUSt ca 4,80 €/St - bei 10er Losgrösse nicht gerade ein Schnäpchen, aber immer noch 2,-€ günstiger als HBE/Farnell ohne Versand.

Danke für den Tip

Aber auf 'nem einfachen 8er würde ich das ja doch zu gerne zum Laufen bringen :wink:

LG Lena

P.S.: Jetzt spiel Udo bestimmt auf Zeit bis die 328er eingetrudelt sind :smiley:

Nicht ganz - macht etwa 4€, da im normalfall der Zoll abwinkt (war zumindest bei mir die letzten 3 mal so)

EDIT: Ich seh gerade, dass Waterott momentan einen sehr guten Kurs hat:
http://www.watterott.com/de/ATmega328-Arduino-Bootloader
http://www.watterott.com/de/ATMEGA328P-PU

Cool, die haben auch die FF-Jumper, die ich für meinen Dragon suche - das trifft sich ja gut!
Ich bin einfach zu faul mir davon min 21 St zusammen zu brutzeln.
Werde da gleich noch ein wenig stöbern.
Vielen Dank für den Tip, entfällt doch so auch der lästige Gang/Fahrt zum Zoll, wo seit dem Umzug def keine Parkmöglichkeit mehr besteht :frowning:
Da kann man schon fast ein Parkticket mit in die Rechnung aufnehmen - grrr

LG Lena

hehe... wobei ich es immer wieder schade finde, dass der ehemals für etwa 2,30€ zu bekommende (bei Abnahme von 20+) ATMega dank des Arduinos inzwischen preislich durch die Decke geht.

Aber Watterott ist eine sehr gute Adresse, außerdem haben beide hier ebenfalls einen Account und posten bei evtl. Fragen - und die lieferung geht wesentlich schneller als von Übersee...

Hallo Udo,

nach einiger Recherche scheint es mir doch eher ein Arduino-Problem zu sein, denn es sieht so aus aos ob ab einem gewissen Zeitpunkt die Benennung der Timerregister in der Arduino-IDE geändert wurden und einige Libs dies nicht mehr berücksichtigen.
Nun bin ich gerade mit mir am kämpfen ob ich nur eine stand allone Lösung für mein Steckbrettgewusel schreibe, nach dem Motto es geht doch, oder ob ich mich noch ran traue die Lib dahingehend zu erweitern das sie auch mit den "kleinen" Chips klar kommt.
So ganz klar ist mir die Umstellung noch nicht, da scheinbar in den neueren Varianten die hardware Timer in zwei logische Timer aufgeteilt wurden, was ja auch sehr sinnvoll ist.
Sollte ich auf dem völlig falschen Gleis gelandet sein, dann bitte koregiert mich bevor ich mich da in die falsche Richtung verrenne.

LG Lena

Sorry, ich hab's erst jetzt gesehen. Der Trick ist zunächst einmal in der IDE alles auf "verbose" zu stellen. Dann sieht Du wo der Compiler die Zwischenfiles anlegt und aus welchen Bibliotheken er sich bedient. Spannend ist grundsätzlich das "*.cpp" File.

Was die Arduino Libraries angeht: die stehen unter

/arduino/hardware/arduino/cores/arduino

bzw.

/arduino/libraries

Ich habe mir die einmal vollständig angeschaut von vorne bis hinten. Man muss gar nicht alles verstehen. Der Punkt ist, dass man hinterher weiss wo man alles nachschauen kann. Das sieht nur am Anfang schlimm aus. Das kostet Dich einmal 1/2 - 2 Tage aufwand je nachdem wie schnell Du liest. Danach bist Du Arduino Superexpertin. Da Du offensichtlich nicht vor Datenblättern zurückschreckst traue ich Dir das eher in Richtung 1/2 Tag zu :wink:

Beim MAC die nicht Standart Bibiotheken noch an einer anderen Stelle. Als Nicht-Mac-User sei mir die Halbantwort verziehen. :wink: :wink: :wink:
Grüße Uwe

Hallo,
was Bezugsquellen für Chips angeht, ich bestelle immer hier: http://elecont.de/
Ein 328er kostet da 3,84 Eur bei 2,50 Versandkosten.

Heinz