Verstehe Code des AVR Studio nicht

Gast #4587438
Lesenswert?

Hallo,

ich arbeite mit dem Atmel Studio 7 und will ein Programm für einen 
ATtiny13a erstellen. Ich versteh aber nicht so ganz was das Studio mit 
meinem Code macht.

Er sollte mit der LED am PORTB3 blinken. Ich kann aber mit dem Scope 
nicht erkennen das der Ausgang etwas macht. Hat einer eine Idee was 
falsch sein könnte?

Hier der Code:

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

#define LED0    PORTB4
#define LED1    PORTB3

uint8_t Tick         = 0;
uint8_t OldTick      = 0;

void InitSystem ( void )
{
  //Set IOs to Output
  DDRB = ((1 << LED0) | (1 << LED1));

  // Timer 0 konfigurieren
  TCCR0B = (1<<CS01);    // Prescaler 8
  TIMSK0 |= (1<<TOIE0);  // Overflow Interrupt erlauben
  sei();                 // Global Interrupts aktivieren
}

static void MainLoop (void) __attribute__((noreturn));
void MainLoop (void)
{
  while (1)
  {

    ////Next Tick
    if (OldTick != Tick)
    {
      OldTick = Tick;
    PORTB |=  (1 << LED1);
    PORTB &= ~(1 << LED1);
    }
  }
}


int main(void)
{
  InitSystem();
  MainLoop();
  return(0);
}

ISR(TIM0_OVF_vect)
{
  Tick++;
}
Persönliche Seite #4587516
Lesenswert?

RobiWurm schrieb:
> PORTB |=  (1 << LED1);
> PORTB &= ~(1 << LED1);

Wieviel Zeit vergeht zwischen diesen beiden Befehlen?
Für jeden Tick wird die LED nur sehr kurz ihren Zustand ändern, um dann 
wieder in den Ausgangszustand zu verfallen.

Je nachdem, wie Du die LEDs angeschlossen hast, werden sie nur sehr kurz 
(im einstelligen µs-Bereich oder darunter) aufblitzen und ansonsten aus 
sein, oder dauerhaft leuchten und nur sehr kurz ausgehen.

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