Artikel: Absolute Beginner

Gast #2450333
Lesenswert?

Hallo,

ich darf mich nun mit Mikrocontroller und deren Programmierung 
auseinandersetzen und arbeite die Beispiele hier auf der Seite durch.
Leider komme ich im Moment nicht weiter. Ich muss dazu sagen, dass ich 
keinerlei Programmier-Kenntnisse habe, bzw. gehabt habe.

Ich arbeite mit dem Atmega8. Hier der Code:

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

volatile unsigned char blinkmerker=0;

ISR(TIMER1_OVF_vect)
{
  if(blinkmerker)
    blinkmerker=0;
  else
    blinkmerker=1;
          TCNT1 = 65536-488;
}


void initial(void)
{
  DDRD  = 0b00001000;

  TCCR1B = (1<<CS10)|(1<<CS12);
  TIMSK  = (1<<TOIE1);

  TCNT1  = 65536-488;
      sei();
}


int main(void)
{
  initial();

    while(1)
    {
    if (blinkmerker)
      PORTD &=~ (1<<PD3) ;
    else
      PORTD |= (1<<PD3) ;
    }
  return 0;
}


Den großen Teil konnte ich nachvollziehen. Leider hapert es beim toggeln 
des Pins. Wie hängen die if-else Anweisung in der IS-Routine und das 
toggeln in der while_Schleife zusammen?
#2450347
Lesenswert?

Benulba schrieb:
> if(blinkmerker)
>     blinkmerker=0;
>   else
>     blinkmerker=1;

if(x) bewertet x=0 als "False" und x ungleich 0 als "True".

In Pseudocode sieht das z.B. so aus:
1
Wenn (Blinkmerker ungleich 0) dann
2
    Blinkmerker = 0
3
Ansonsten
4
    Blinkmerker = 1
5
Ende Wenn

Mit jedem Timer-ISR-Durchlauf toggelt also der Blinkmerker.
In der main-while-Schleife muss nun nur noch überprüft werden, wie der 
Blinkmerker gerade steht. Abhängig davon wird eben der LED-Portpin auf 
High oder Low gesetzt.

mfg mf
Gast #2450858
Lesenswert?

Hallo,

ich bin auch noch ein Anfänger:

Die ganze programmiererei ist irgendwie wie Schach oder Skart :

Die eigentlichen Regeln sind nicht besonders schwer verständlich 
(eigentlich sogar recht einfach), aber die "unendlichen" 
Kombinationmöglichkeiten ,Tricks und Logik die dahinter steht ist nur 
durch Praxis, abgucken (Sourcecode anderer Programme), und mit "Schweis 
und Tränen" erlernbar bzw. besser ausgedrückt zu verinnerlichen.
Irgendwann macht es "Klick" irgendwo im Kopf und mann kann "plötzlich" 
programmieren und spricht seine "Programmiersprache".

Warum lernt mann als Erwachsener nicht mehr so wie ein Kleinkind ? - Die 
Natur ist so unfair ;-)

mfg


     Bastler

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