avr eifaches Programm mit Registern TCCR1A, umsetzen

Gast #5074729
Lesenswert?

Hi,
bin absoluter Neuling in dem Bereich und wäre um Hilfe dankbar. Und zwar 
hätte ich eine Aufgabe zu lösen.
Folgendes Programm ist gegeben:

#include <avr/io.h>
int main (void)
{
    int i = 0xFF;
    while(1)
    {
    while(i>0)
    {
        DDRC = 0xFF;
        PORTC = i;
       i--;
       _delay_ms(600);
    }
    }
}

Soweit ich das beurteilen kann (oder verstanden habe) müssten erst alle 
LEDs an sein und alle 600 ms eine abgeschaltet werden.
Nun würde ich gerne das selbe Ergebnis mithilfe folgender Register 
bekommen: TCCR1A, TCCRB1B und TCNT1. Habe mir zwar schon ein paar 
Beispiele für diese Timer angesehen doch werde daraus nicht schlau. Wie 
müsste das Programm ausschauen?
Vielen Dank schon mal.
Gast #5074753
Lesenswert?

Max F. schrieb:
> Nun würde ich gerne das selbe Ergebnis mithilfe folgender Register
> bekommen: TCCR1A, TCCRB1B und TCNT1. Habe mir zwar schon ein paar
> Beispiele für diese Timer angesehen doch werde daraus nicht schlau. Wie
> müsste das Programm ausschauen?

Trollig :-)
Gast #5074783
Lesenswert?

Max F. schrieb:
> Und zwar
> hätte ich eine Aufgabe zu lösen.

Ja - DU - und Du kannst mir gerne noch weitere Minus-Punkte geben - die 
stören mich nicht :-)

Schau Dir bitte das Tutorial an und arbeite Dich durch. Mag sein, dass 
Dir hier irgend jemand etwas vorkaut - aber das hilft Dir nicht 
wirklich.
#5075147
Lesenswert?

Hi

Walter S. schrieb:
> ein int beim avr hat doch 16 Bit?!

Wäre mir neu, wobei ich mich mit C nicht sonderlich auskenne.
Worauf wohl hinaus gegangen werden wollte - es gibt die Bytes als mit 
und ohne Vorzeichen (signed).
Ohne Vorzeichen kann ein Byte 0...255 als Wert haben.
Mit Vorzeichen -128...127, wobei das oberste Bit das Vorzeichen 
darstellt - und bei 0xFF ist das oberste Bit gesetzt, somit der Wert 
negativ (wenn Du Das nicht willst, musst Du die Variable mit uint8 
(unsigned integer 8 bit ... denke ich - wobei C auch längere Zahlen 
zulässt, was aber Nichts mit den Interner des µC zu tun haben muß, darum 
kümmert sich, zur Not, der Compiler) definieren.

Aber auch dann gehen die 'ganzen LED' nicht der Reihe nach aus - wäre 
auch blöd, da halt nur 8 LED vorhanden sind (8 Bit) - dafür blinken 
Diese dann schön hin und her, bis denn Alle doch aus sind (nach 255 
Schritten)

Du musst übrigens nicht bei jedem Schleifendurchlauf das 
Richtungsregister neu auf 0xFF setzen - Das ändert sich nur, wenn Du Das 
änderst - von Selbst passiert da gar nix.

MfG

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