Klausurstoff dringend

Gast #1203536
Lesenswert?
• ▲
▼
Ich brauch dringend die Antwort hier:

http://img.photobucket.com/albums/v61/devilhope/muster.jpg


erste aufgabenteil

Die Lichterkette soll zeitlich, hochgenaue Lichtwechsel ausführen.. (so 
Dioden/Taster an den Ports/pins halt.. eben...) Man benötigt Zeitbasis 
von 500ms. Initialisieren Sie, den Timer0 so, dass genau einmal alle 
500ms ein interrupt service routine nebenläufig aufgerufen wird. Die 
Quarzfrequenz beträgt 0.032768Mhz (gewöhnlicher uhrenquarz)..


so beginnt der code...(man muss den code aufschreiben)


void initTimer0()
{





Der zweite aufgabenteil...

 Warum kann man die vorherige Aufgabe mit Timer 4.096000Mhz oder 
0.030000Mhz lösen ??


noch ein aufgabenteil

Um die Verlustleistung!! abzusenken soll die CPU zwischen zwei wechseln
am LED muster angehalten werden. geben sie die Änderung für folgende 
main funktion:

int main()
{


initKey(); //funktion zu tasterabfrage
initTimer0();


while(1)
    {



    }


}


Danke im vorraus !!
Gast #1203552
Lesenswert?
• ▲
▼
Das Bild braucht kaum für die Aufgabenteile die ich gelistet habe. Es 
interessiert mich hauptsächlich wie man die Sache mit den Quarzclock 
(Taktgeber) macht. Also eigentlich die Formel und den Code macht ohne 
OCR nur mit timer0 ueberlauf. Oder mit ocr wenn es mit uebarlauf zu 
kompliziert ist.
Gast #1203578
Lesenswert?
• ▲
▼
Wo ist eigentlich das Problem? Sieht aus, wie ne Aufgabe, die jeder 
Hobbybastler in einer Stunde runter hat. Nur mit Tutorial und Datenblatt
Recherche....


Soooo schwer ist das ja auch nicht, dass man nicht drauf kommen könnte.

Die Grundlegenden Fragen sind nur:

- Wie funktioniert ein Timer
- Wie funktioniert die Poartausgabe
- Und vielleicht noch, ob der Uhrenquarz am XTAL oder am 
Timer-Oscillator hängt.....
Gast #1203586
Lesenswert?
• ▲
▼
Mit Überlauf: Register nachladen.

Sonst: Die Datenblätter von Atmel zu den AVRs sind eigentlich 
mustergültig, alles mit C- und ASM-Beispielprogramm. Dann gibts hier 
noch ein Tutorial und für ASM-Grundlagen suche man bei Google nach 'avr 
asm tutorial', gleich das erste. C-Grundlagen lernt man anhand des 
'Programmieren in C' von K&R, das ist leicht zu lesen und beinahe schon 
humorvoll.
Persönliche Seite #1203623
Lesenswert?
• ▲
▼
Dein Quarz hat 0.032768Mhz, also 32768HZ.
Jetzt stellst du den Prescsaler auf 1024
( TCCR0 = (1 << CS00) | (1 << CS02); ) und dein Interrupt wird nur noch 
alle 1/32 Sekunden ausgelöst.

In der ISR noch eine Schleife die 16 mal die Interrupts mitzählt und 
dann dort meinetwegen die Taster noch abfragen.

aber ... gearbeitet wird im Hauptprogramm.

Schau doch mal ins Tutorial und in das Datenblatt vom Atmega8.

Zum zweiten Aufgabenteil: Kannst mal überlegen was der Prescaler macht.
Gast #1203740
Lesenswert?
• ▲
▼
> Dein Quarz hat 0.032768Mhz, also 32768HZ.
> Jetzt stellst du den Prescsaler auf 1024
> ( TCCR0 = (1 << CS00) | (1 << CS02); ) und dein Interrupt wird nur noch
> alle 1/32 Sekunden ausgelöst.

Nöö, zu kompliziert.
32768 Hz / 256 (Überlauf des Timers) = 128, mit Prescaler 64 macht das 
eine Frequenz von 2Hz. Also genau alle 500ms. So kann ich mir blödes 
händisches Zählen sparen.

>  Warum kann man die vorherige Aufgabe mit Timer 4.096000Mhz oder
> 0.030000Mhz lösen ??

Weil Prescaler und ggf. Output-Compare-Register verwendet werden können, 
um die Interruptfrequenz recht granular zu regeln.

> Um die Verlustleistung!! abzusenken soll die CPU zwischen zwei wechseln
> am LED muster angehalten werden. geben sie die Änderung für folgende
> main funktion:


http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

Kapitel "Power Management and Sleep Modes"

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.