Atmega328 Pin toggeln geht nicht

Gast #4718645
Hallo,
ich kann bei dem IC den Pin nur auf High aber nie wieder auf LOW setzen.

#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

int main(void) {
  init();

    DDRD = (1<<PD7);
    TCCR1B |= _BV(CS10); // Set up timer

 while(1)
    {
        if (TCNT1 >= 49999){
            PORTD ^= PD7;
            TCNT1 = 0; // Reset timer value
        }

    }

  return 0; // never reached
}

Der Atmega läuft mit 8Mhz und ist fest mit einem Board verlötet.
Gruß
Gast
Chris schrieb:
> chris schrieb:
>> Chris schrieb:
>>> PORTD ^= PD7;
>>
>> -->
>> PORTD ^= (1<<PD7);
>
> Sry hab ich natürlich so getestet. Aber tut sich trotzdem nichts!

Standard laufen die Atmegas alle auf internal clock ? Ich habe so eine 
Ahnung das es daran liegt!
Wo setzt man die am besten/sinnvollsten wenn man ein Makefile zum 
erzeugen und brennen benutzt ?
Toni55 schrieb:
> wo setzt du denn den interrupt? -> TIMSK1 !!!
> und gibst ihn frei? -> SEI() !!!
Er startet einen Timer und fragt das Zählregister ab. Da braucht er 
keine Interrupts, auch wenn hier der CTC-Modus prädestiniert wäre, der 
macht der ganzen Kram in Hardware ohne auch nur 1% CPU Belastung ;)

> Standard laufen die Atmegas alle auf internal clock ? Ich habe so eine
> Ahnung das es daran liegt!
Eher weniger, wichtig ist das er überhaupt läuft.

Also an dem geposteten Code kann ich nichts falsches sehen. Was 
geschieht in
1
init();
Wenn ich mich nicht komplett verrechnet habe sollte die Led ca. 160 mal 
pro Sekunde toggeln. Das menschliche Auge ist allerdings ein wenig 
träge, weshalb das ein-ausschalten der Led's vermutlich nicht gesehen 
werden kann und als dauerhaftes leuchten wahrgenommen wird.

Kannst ja mal versuchen den Prescaler zu erhöhen,
CS11 für Prescale 8 statt wie momentan
CS10 für Prescale 1.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.