Anfang Mikrocontroller

OP #3322018
Lesenswert?

Hallo zusammen,

zunächst einmal ein herzliches Hallo an alle aus dem Forum!

Ich habe gerade angefangen mich mit Mikrocontrollern zu beschäftigen.

Ich fange natürlich erstmal einfach an und werde mich nach und nach 
steigern. Ich hatte vor ca. einem Jahr schonmal mit Mikrocontrollern zu 
tun, allerdings hatte ich hier in Bascom "geschrieben". Jetzt fange ich 
natürlich an  mich gleich mit C zu beschäftigen.

Meinen Aufbau habe ich als Bild angehangen und entsprechend auf einem 
Breadboard aufgebaut, alles in allem funktioniert das ganze gut. Alle 
Taster und LEDs funktionieren, jedoch funktioniert das "C" noch nicht so 
wie das damalig Bascom.

Ich wollte eine ganz einfache if-Abfrage durchführen:

Wenn ich Taster1 drücke, dann LED leuchte bitte...
Mache ich das ganze ohne IF leuchten auch die LEDs.

Könnt ihr mir bitte einen Hinweis geben was ich gerade falsch mache?

Vielen Lieben Dank.
1
/*
2
 * testprog.cpp
3
 *
4
 * Created: ...
5
 *  Author: 
6
 *  Beschreibung: 
7
 *  
8
 */ 
9

10
#ifndef MCU            
11
#define MCU  atmega8
12
#endif
13

14
#ifndef F_CPU          
15
#define F_CPU 1000000UL 
16
#endif
17

18
#include <avr/io.h>
19
#include <avr/interrupt.h>
20
#include <stdlib.h>
21
#include <stdint.h>
22
#include <inttypes.h>
23
#include <util/delay.h>
24

25
// DIE Taster - Port C
26
#define START 5
27
#define NEUSTART 4
28
#define TASTER1 3
29
#define TASTER2 2
30
#define TASTER3 1
31
#define TASTER4 0
32

33
// DIE LEDS - Port B
34
#define LED1 4 //an port B
35
#define LED2 1
36
#define LED3 2
37
#define LED4 3
38
#define GRUEN 5
39
#define BLAU 0
40

41
//Initialisierung
42
void initial(void)
43
{
44
  DDRB = 0b11111111;
45
  DDRC = 0b00000000;
46
}
47

48
int main(void)
49
{
50
initial();
51

52
    if (PINC & (1<<TASTER1) ) 
53
    {      
54
      PORTB |= (1 << LED1) | (1 << LED2);
55

56
      /*
57
      while( 1 ) 
58
      {                
59
      PORTB ^= ( 1 << GRUEN );  // Toggle
60
      _delay_ms(1000);        // Eine Sekunde +/-1/10000 Sekunde warten...
61
      PORTB ^= ( 1 << BLAU );    
62
      }
63
                        */
64
      
65
    }
66
    
67
  return 0;
68
  }
Angehängte Dateien:
Gast #3322045
Lesenswert?

R2 ist Pulldown für alle Eingänge von Port C
-> kann nicht funktionieren
wenn ein Schalter geschlossen ist, liegen alle Eingänge auf High
also einzelne Pulldowns

Noch besser:
Schalter gegen Ground und interne Pullups benutzen
OP #3403730
Lesenswert?

Hallo zusammen,

hier bin ich nochmal :-).

Erstmal vielen Dank für die bisherigen Hinweise, habe alles umgesetzt 
und der Hardware Aufbau funktioniert auch, anbei auch der entsprechende 
Schaltplan, ich hoffe ich habe soweit alles richtig dargestellt, sollte 
ich Fehler gemacht haben bitte mitteilen, ich werde sofort die 
Änderungen einpflegen! Ich fange ja erst an mit der ganzen Geschichte 
:-).


Was ist mein Ziel mit dem Aufbau:

- wenn Spannung anliegt leuchtet die blaue LED (funktioniert)
- bei betätigen des Start Tasters soll die grüne LED angehen und das 
Hauptprogramm starten (funktioniert)
- alle Taster sowie LEDs funktionieren bereits, es mangelt somit nur an 
der Programmierung.
- einfache schleifen sind auch kein Thema

Wie soll es werden:
- start Taster = grüne LED + nach 2 Sekunden start des eigentlich 
Ablaufs (zeit funktioniert auch)

Der Ablauf:
- 4 rote LEDs sollen immer nach drücken des Starttasters in einer 
zufälligen Sequenz durchlaufen ( nicht zu lange aller höchstens 8 - 10 
Schritte (aufblinken, einzelner LEDs))
- entsprechend der 4 LEDs sind 4 Taster direkt über der jeweiligen LED 
positioniert. Wenn die LED Sequenz durchlaufen wurde, soll die grüne LED 
2x blinken und anschließend muss man die durchlaufene LED Sequenz nach 
drücken mit Hilfe der Taster, macht man einen Fehler muss man von vorn 
anfangen, hat alles geklappt so wird der PIND0 PIND1 am PORTB 
geschaltet.

Ich hoffe ihr könnte mir halbwegs, folgen.

Vielen Dank für eure Unterstützungen.

vg. und schönen Abend
Angehängte Dateien:

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