ATtiny10 Timer0

Gast #2610272
Hallo, hat jemand Erfahrungen mit dem ATtiny10 und der Timer-Funktion ?

Hier mein Code:

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

// Declare your global variables here

ISR (TIMER0_OVF_vect){
  TCNT0=60000;
  if ((PORTB && 0x2) == 0x2){
    PORTB &= ~(1<<PB1);
  }
  else{
    PORTB |= (1<<PB1);
  }
}

int main(void)
{
DDRB=0xf;
TIMSK0 |= (1<<TOIE0);
TCCR0B |= (1<<CS00);
TCCR0B &= ~(1<<CS01);
TCCR0B |= (1<<CS02);
TCNT0=60000;
sei();

while (1)
      {
    PORTB |= (1<<PB0);


    PORTB &= ~(1<<PB0);
      }
}

Ich möchte den Timer OVERFLOW abfangen, wo ist der Fehler ?

Vielen Danke für Eure Hilfe !

Gruß Luke
#2610286
>   if ((PORTB && 0x2) == 0x2){

bitweises UND, nicht logisches:

  if ((PORTB & 0x2) == 0x2){


und den Vergleich mit 0x02 sparst du dir besser. Ist weniger 
fehleranfällig in der Programmierung. "Nicht 0" ist mehr als 
ausreichend. Und genau das wird gemacht, wenn du nur den arithmetischen 
Ausdruck hinschreibst.

  if (PORTB & 0x2){

Und wenn du dann nocht die 0x2 in der Form 1<<PB1 ausdrückst, ist auch 
noch dem letzten klar, dass es zwischen der Abfrage und der zugehörigen 
Aktion einen Zusammenhang gibt

  if (PORTB & (1<<PB1)){
    PORTB &= ~(1<<PB1);
  }
  else{
    PORTB |= (1<<PB1);
  }
Gast #2610311
Hallo Peer,

der ATtiny10 hat nur den PORTB und damit ich was sehe habe ich mir 2 
Bits vom PORTB eingebaut. Mein Problem liegt wohl im einrichten des 
Timers ?!

Gruß Luke
#2610339
Peer schrieb:
> Lucky Luke schrieb:
>> if ((PORTB && 0x2) == 0x2){
>
> Ist es Absicht, daß du PORTB abfragst? Status ermittelt man über PINB.

Er will offenbar den Pin blinken lassen.
Von daher ist an dieser Stelle PORTB schon ok.
Er muss nur die Abfrage richtig machen.
(Und natürlich all das Zeug aus dem anderen Thread berücksichtigen. 
Welcher Teufel hat den TO eigentlich zu einem Tiny10 geraten? Noch 
blöder gehts nun wirklich nimmer)
Gast #2610380
Es ist wohl besser das dieser Thread geschlossen oder besser gelöscht 
wird. Wenn ich schon alles über µC wüsste, hätte ich auch keine Fragen.

Danke an Alle die mir helfen wollten !

Luke
Gast #2610393
Karl Heinz Buchegger schrieb:
> Er muss nur die Abfrage richtig machen.

Und er muss den Vektor richtig nennen. Wobei ihm das der Compiler 
bereits per Warnung mitgeteilt hat.

Lucky Luke schrieb:
> Es ist wohl besser das dieser Thread geschlossen oder besser gelöscht
> wird. Wenn ich schon alles über µC wüsste, hätte ich auch keine Fragen.

Das ist es nicht, Du bist nur verständnisresistent. Es haben Dir 
mindestens zwei Leute, die sich mit dem Teil auskennen, gesagt: lass es, 
nimm Assembler dafür. Das Teil ist schwierig, hat nur 'nen Teil der 
üblichen Prozessorregister und dann auch noch das Problem mit dem AVR 
GCC, der falschen Opcode einbaut.

Aber das ist Dir alles wurscht, Du ignorierst es einfach, aber dann wird 
das aber auch nix und Du musst auch nicht beleidigte Leberwurst spielen.
Gast #2611236
Und es lebt doch ....

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


// Declare your global variables here

ISR (TIM0_OVF_vect){
  TCNT0=64588;
  if ((PORTB & 0x2) == 0x2){
     PORTB &= ~(1<<PB1);
    }
  else{
    PORTB |= (1<<PB1);
      }
}

int main(void)
{
DDRB=0xf;
TIMSK0 |= (1<<TOIE0);
TCCR0B |= (1<<CS00);
TCCR0B &= ~(1<<CS01);
TCCR0B |= (1<<CS02);
TCNT0=64588;

sei();

while (1)
      {
    PORTB |= (1<<PB0);
    /*if(TIFR0 & (1<<TOV0)){
      if ((PORTB & 0x2) == 0x2){
         PORTB &= ~(1<<PB1);
        }
      else{
         PORTB |= (1<<PB1);
        }
    }*/
      PORTB &= ~(1<<PB0);
      }
}

Antwort schreiben

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