www.mikrocontroller.net

Forum: Compiler & IDEs Timer Compare Match Problem


Autor: Ilea Uni (auftrag2007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich brauche ein periodische Ein-Aussignal am Ausgang PORTD1
hier ist der Code

#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/io.h>

#ifndef F_CPU
#define F_CPU 16000000UL     // Quarz mit 16.0000 Mhz
#endif

unsigned int i;

ISR(TIMER0_COMP_vect){
  if (i == 0){
    PORTD |= (1<<PORTD1);  //PIND1 als 1 setzen
    i++;
  }
  else{
    PORTD &= ~(1<<PORTD1);  //PIND1 als 0 zurücksetzen
    i = 0;
  }
}

int main(void){

  TCCR0 |= (1<<WGM01) | (1<<CS01);  // CTC Modus, 16/8 MHz,
  TIMSK |= (1<<OCIE0);    Compare Match Interrupt enable

  //wenn Wert aus TCNT0 Register gleich 255, Interrupt ausgelöst
  OCR0 = 0xFF;

  sei();

  while(1){
    return 0;
  }
}

Der Vorgehensweise nach meine Meinung würde so laufen...

am Anfang i = 0;

für erste Auslösen der Interrupt
weil i gleicht 0 ==> PD1 = High
"gleichzeitig" ist Inhalt in TCNT0 wieder gelöscht, Zeitzähler Register 
zurück auf 0
danach inkrementiert i auf 1

für zweite Auslösen der Interrupt
weil i gleicht 1 ==> PD1 = Low
"gleichzeitig" ist Inhalt in TCNT0 wieder gelöscht, Zeitzähler Register 
zurück auf 0, und natürlich ist i wieder nach 0 zurückgesetzt

für dritte...  periodisch
für vierte...  periodisch


leider liegt die Ausgangspannung PD1 immer an null, welche Gedankfehler 
habe ich hier gemacht?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> welche Gedankfehler habe ich hier gemacht?
Wie wäre es, wenn Du Dich dem vernachlässigten Register DDRD widmest und 
den Portpin als Ausgang konfigurierst?

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich vermute auch, das dein Data Direction Register noch auf Default 
steht. Ergo ist der Port als eingang definiert. und dort wird nur der 
pull-up gezogen, wenn du auf eins setzt.

ergo: DDRD |= 1<<DDD1)

bei sowas ..
while(1){
    return 0;
  }
graut es mir. gut, dass die libgcc so nett ist und das programm am leben 
lässt.
bye kosmo

Autor: Ilea Uni (auftrag2007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Menschskind, es tut endlich wieder!!!!!

Danke für deine Hilfe

bin schon zweistellige Stunden aufgehängt, endlich geschafft

Definition der Datenrichtung ist nicht "nachverlässig"!!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.