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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.