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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren