Forum: Compiler & IDEs AVR BUTTERFLY ZEIT


von AFIF (Gast)


Angehängte Dateien:

Lesenswert?

hi,
Ich wollte wenn eine  bestimmte erreignis geschiht, der Zeit diese
Ereignis speichern in EEPROM .Weist einer von euch wie funktionniert
das?
(Ich habe der Zeitfunktion  von Peter flurry (Test Programm)RTC.c)
danke

von Karl H. (kbuchegg)


Lesenswert?

Wie funktioniert was?
Ins EEPROM schreiben.
Da schaust du am besten mal ins AVR-GCC-Tutorial auf dieser
Seite (Link findest du in der Leiste links, direkt unter 'Artikel').

von mthomas (Gast)


Lesenswert?

Kenne Peter Fleurys Testprogramm nicht, aber im angehaengten Quellcode
(RTC.c) erkenne ich keinen Unterschied zwischen meiner
avr-gcc-Portierung des Butterfly-Beispielcodes von Atmel. Also einfach
nur hier reinkopiert oder uebersehe ich etwas?

Erforderliche Schritte (ungefaehr):
- Butterfly-Beispielcode nehmen um nicht alles neu schreiben zu muessen
(Atmel original oder meine gcc-Portierung)

- Platz fuer zusaetzlichen Code schaffen (z.B. sound oder adc und alle
Referenzen darauf entfernen - das sind die groessten Speicherfresser)

- eine "Set Alarm Time"-Funktion in the State-Maschine der
Beispielanwendung einbauen (neuer ID, neuer Handler, siehe main.h,
menu.h)

- die Funktion implementieren auf Basis der Funktionen in RTC.c der
Beispielanwendung.

- Die Zeitdaten der Alarmtzeit (Bytes) ins Eeprom speichern, entweder
wie von K.-H. Buchegger vorgeschlagen mittels der "offiziellen"
Funktionen lt. avr-libc-manual/avr-gcc-Tutorial oder mit den "privaten
Funktionen" aus eeprom.c der Beispielanwendung. Die Alarmzeit sollte
aber beim Systemstart (vor der Hauptschleife in main()) aus dem Eeprom
gelesen werden und in "Ram-Variablen" zwischengespeichert werden,
kostet kaum Platz, ist aber deutlicher schneller im Zugriff.

- Alarmzeit und aktuelle Zeit der "Zeitupdate"-Funktion von RTC.c
vergleichen (Timer-Overflow, wird jede Sekunde ausgefuehrt), globales
Flag (volatile!) setzen bei Uebereinstimmung.

- in Hauptschleife (main.c) Flag pruefen, wenn gesetzt: Alarmfunktionen
ausfuehren, Flag loeschen.

Hoffe es hilft,
Martin Thomas

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.