mikrocontroller.net

Forum: Compiler & IDEs Timer0 Attiny2313 Problem


Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Versuche im folgenden Programm Timer0 zum laufen zu bringen. Timer1 
funktioniert so wie es sein soll, aber die LED im Timer0 wird nicht 
getoggelt. Helft mir mal auf die Sprünge, was hab ich übersehen.

mfg,
Bjoern
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/wdt.h> 

#define F_CPU 7372800L                  // Systemtakt in Hz

#define LEDPORT PORTB              
#define LEDPIN  PINB
#define LEDDIR   DDRB

#define LED_INIT()  LEDDIR = 0xFF

#define LED1_ON()  PORTB &=~(1<<0)
#define LED1_OFF()  PORTB |= (1<<0)
#define LED2_ON()  PORTB &=~(1<<1)
#define LED2_OFF()  PORTB |= (1<<1)
#define LED3_ON()  PORTB &=~(1<<2)
#define LED3_OFF()  PORTB |= (1<<2)


#define LED1_TOGGLE() PORTB ^= (1<<0);
#define LED2_TOGGLE() PORTB ^= (1<<1);
#define LED3_TOGGLE() PORTB ^= (1<<2);

#define SELECT_POWERDOWN MCUCR |= (1<<SM1) | (1<<SM0) | (1<<SE)    // Macro to select powerdown sleep mode
#define SELECT_IDLESLEEP MCUCR &= ~(1<<SM1)    // Macro to select idle sleep mode

#define DISABLE_AC() ACSR |= (1<<ACD)    // Disable Analog Comperator

// Watchdog reset handling

 
//------------------------------------------------------------------------
//        T0 Interrupt
//------------------------------------------------------------------------
ISR(TIMER0_OVF_vect){

  LED1_TOGGLE(); 

}

ISR(TIMER1_OVF_vect) {
  
  LED2_TOGGLE()
  
} 

int main(void) {

  LEDPORT=0xFF;
  LED_INIT();

  TCNT0 = (1<<CS02) | (1<<CS00);      //divide by 1024 - 28 Hz @ 7.372800 Mhz 
  //TCCR1B = (1<<CS12) | (1<<CS10);      //divide by 1024
  TCCR1B = (1<<CS10);            // - 112 Hz @ 7.372800 Mhz 
  TIMSK = (1<<TOIE0) | (1<<TOIE1);      //enable timer interrupt

sei();


 while(1)
  {
    LED3_TOGGLE(); 
    for(long a = 0;a<80000;a++){asm("nop");};

  }

return 0;

}

Autor: Oliver W. (olliw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCNT0 ist sicher das falsche Register... TCCR0?

Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Oliver, ne das ist es auch nicht mit TCCR0, irgendwo muß der Hund doch 
begraben liegen.

mfg,
Bjoern

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tishima schrieb:
> Oliver, ne das ist es auch nicht mit TCCR0, irgendwo muß der Hund doch
> begraben liegen.

Ja, im Datenblatt.
Da gibt es hinten an jedem Abschnitt ne Registerbeschreibung.
Besser gehts wirklich nicht.


Peter

Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups,

ja mit TCCR0B haette ich arbeiten müssen, nun kann ich erstmal 
weitermachen.
So wie es aussieht. Muß erstmal weiter im eigentlichen Programm testen.
Danke, für den Denkanstoß.

gruß,
Bjoern

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.