Pollinboard zwei programme

Gast #2095776
Lesenswert?

Hallo,
ich habe mir als neuling das das Pollin Board mit Addon Bestellt und nun 
das C-Tut Hier im Forum durchgelesen und das zum Pollin Board 
http://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard 
durchgearbeitet.
nun möchte ich zwei Programme auf ein AVR zusammen laufen lassen erstmal 
zweimal Tasty aber ich bekomme es nicht hin:-(
wen Taster 1 gedrückt ist sollen Led2 an gehen und Led1 aus.
wenn Taster 2 gedrückt ist dann soll Led4 angehen und Led3 aus wird 
Taster 2 losgelassen sollen nach 2sec der ursprüngliche Led zustand 
wieder eingenommen werden.
einzeln bekomme ich es hin aber nicht wenn Beide zusammen laufen.
müssen 2x while sein oder wie muss das aus sehen?
besten dank schonmal
Gast #2095794
Lesenswert?

Zwei Programme?
Nein, definitiv nicht!

Du musst dir das ganze in einer Schleife zusammenbasteln. Multitasking 
gibt es auf ATmegas nicht wirklich. Wäre auch Blödsinn. Schau nochmal 
ins Tutorial. Ich glaube da fehlt was am grundlegenden Verständnis.

Wenn ich das Problem missverstanden habe, einfach her mit dem Quelltext 
und den Wünschen, was der machen soll.
Gast #2095977
Lesenswert?

Testfall schrieb:
> Zwei Programme?
> Nein, definitiv nicht!
>
> Du musst dir das ganze in einer Schleife zusammenbasteln. Multitasking
> gibt es auf ATmegas nicht wirklich. Wäre auch Blödsinn. Schau nochmal
> ins Tutorial. Ich glaube da fehlt was am grundlegenden Verständnis.
>
> Wenn ich das Problem missverstanden habe, einfach her mit dem Quelltext
> und den Wünschen, was der machen soll.

Also ich habe das in Zwei Programmen ausprobiert und versucht es zu 
einem zusammen zu fügen nur es macht nur das vom Taster1

hier mal das was ich probiert habe

/*
    Atmega16
    Externer Quarz-Oszillator: 16 MHz

    Pollin Funk-AVR-Evaluationsboard v1.1
*/

#include <avr/io.h>
#include <util/delay.h>

// LEDs sind high-active geschaltet
#define LED_AN(LED)  (PORTD |=  (1<<(LED)))
#define LED_AUS(LED)  (PORTD &= ~(1<<(LED)))
#define LED_TOGGLE(LED)  (PORTD ^=  (1<<(LED)))
#define LED1    PD6
#define LED2    PD5
#define LED3    PD4
#define LED4    PD3



// TASTER ist high-active geschaltet
#define TASTER1  PB1
#define TASTER1  PB2
#define TASTER_GEDRUECKT(TASTER)  (PINB & (1<<TASTER))

int main(void)
{
  DDRB &= ~(1<<TASTER1) | (1<<TASTER2);           // Port B: Eingang für 
Taster
  DDRD |= (1<<LED1) | (1<<LED2) | (1<<LED3) | (1<<LED4); // Port D: 
Ausgang für LED1 und LED2

  while(1)
  {
  if (TASTER_GEDRUECKT(TASTER1))
      {
        LED_AN(LED2);
        LED_AUS(LED1);
      }
      else
      {
        LED_AUS(LED2);
        LED_AN(LED1);
      }


  if (TASTER_GEDRUECKT(Taster2))
      {
        LED_AN(LED4);
        LED_AUS(LED3);
      }
      else
      {
        _delay_ms(2000);
        LED_AUS(LED4);
        LED_AN(LED3);
      }
}
}

Danke schonmal
es sind gute tuts hier

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