Forum: Mikrocontroller und Digitale Elektronik Pollinboard zwei programme


von Neuling (Gast)


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

von Testfall (Gast)


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.

von Pic_prog (Gast)


Lesenswert?

@Neuling (gast)
Erst mal 'Willkommen' im Forum.
'Zwei Programme' ist etwas mißverständlich ausgedrückt.
Das Zauberwort für Deine Anwendung lautet wohl 'Fallunterscheidung', 
schau mal hier in diesem Tutorial nach 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Mehrfachverzweigung

von Serieller (Gast)


Lesenswert?

Das Beispiel eignet sich ganz gut, um das Prinzip einer statemachine 
zu erlernen.

von wiewowann (Gast)


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

von Route_66 (Gast)


Lesenswert?

Hallo!
Du hast 2mal TASTE1 definiert aber nicht TASTE2.

von wiewowann (Gast)


Lesenswert?

Habe ich geändert aber es ist nicht besser

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.