Variable erstellen und Zähler kreieren?

Gast #3924189
Lesenswert?

Hallo, eine frage:
Kann ich per integer eine Variable erstellen, die dann beispielsweise 
bei Tastendruck +1 zählt?
Und wie genau würdde man sowas realisieren?
Also ich hab Varialbe Zähler, int Zaehler;
kann ich dann einfach sagen, wenn pin1 = 1
dann Zaehler + 1...
Wie genau definiert man das beim Mikrocontroller programmieren, ich 
komme vom c vom PC. Danke
Gast #3924200
Lesenswert?

Variable anlegen und hochzählen ist ja genau so wie unter C am PC.

Du hast halt kein Betriebssystem und musst dich um alle Details der 
Hardware selbst kümmern. Da hilft eigentlich nur Tutorial durcharbeiten 
und Datenblätter lesen. Und Erfahrung.
Gast #3924206
Lesenswert?

unsigned char int8_t, wird die Variable dann einfach 
dahintergeschireben?
Hätte einer hier mal kurz ein kopiertes Codebeispiel irgendwo parat, wo 
ich mich hochhangeln könnte, um den Ablauf zu verstehen? Danke
Gast #3924215
Lesenswert?

Du musst dich zunächst um Oszillator/Quarz kümmern. Dann musst du den 
Pin auf Eingang schalten. Eventuell auch noch Analog-Digital-Wandler 
oder sonst was abschalten... Dann musst du dich um das Tastenpürellen 
kümmern...

Das wird kein Codeshnipsel. Auf einem MC wird das ein ausgewachsenes 
Tutorial.
Gast #3924220
Lesenswert?

Ja, ich weiß, abe rmir geht es nur darum, wie die Variable hier 
definiert wird und wie sie bspw. bei input=1 hochzählt.. dieses 
Entprellen etc.. nutzt mir erst mal nichts, hätte einer vielleicht 
igrnedwas hier?
Gast #3924232
Lesenswert?

1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <util/delay.h>
4

5
// Variablen definieren
6
volatile unsigned char Zaehler; // Up/Down-Zähler (0-255)      
7

8
// --- Hauptprogramm ---
9
int main (void)            
10
{
11
// Pins definieren
12
 DDRB = 0xff;                   // PortB (0-7) als Ausgang definieren (LEDs)
13

14
if(ermittelterWert > 0) //beispielhaft
15
Zaehler = Zaehler+1;
16

17
if(Zaehler>10)
18
PORTB |= 0x01;
19
else
20
PORTB &= ~0x01; 
21

22

23
}

sieht das logisch aus?
Gast #3924239
Lesenswert?

Und kann man noch implementieren, dass bei Sekunde = 1 der Zaehler 
wieder auf 0 geht? Wenn man halt via Timer eine Art Uhr installiert? 
theoretisch schon, oder?
1
if(ermittelterWert > 0) //beispielhaft
2
Zaehler = Zaehler+1;
3

4
if(Zaehler>10)
5
PORTB |= 0x01;
6
else
7
PORTB &= ~0x01; 
8

9
if sekunde = 1
10
Zaehler = 0
11

12
ISR(TIMER1_COMPA_vect)
13
{
14
  millisekunden++;
15
  if(millisekunden == 1000)
16
  {
17
    sekunde++;
18
    millisekunden = 0;
19
    if(sekunde == 60)
20
    {
21
      minute++;
22
      sekunde = 0;
23
    }
24
    if(minute == 60)
25
    {
26
      stunde++;
27
      minute = 0;
28
    }
29
    if(stunde == 24)
30
    {
31
      stunde = 0;
32
    }
33
  }
34
}
Gast #3924248
Lesenswert?

Müsste so gehen aber es muss heißen:
If (sekunde == 0)
Und ich glaube du brauchst verschiede Namen für die Zähler-Sekunden und 
die Uhr-Sehunden. Sons zählt deine uhr nur bis eine Sekunde und setzt 
sich zurück.
Gast #3924274
Lesenswert?

Vielen Dank erstmal, dann noch eine Frage:
Kann ich mit einem Mikrocontroller ein Signal (analog) an den PC 
übertragen?
Also ich kriege via input ein signal an den µC und dieses Signal soll 
dann am PC sichtbar gemacht werden. Gibt es da Lösungen?
MFG
Gast #3924280
Lesenswert?

analog? wahrscheinlich gar nicht. Schau mal nach RS232 und UART. Dafür 
gibt es ein Tutorial hier.

Wenn dein PC eine RS232 Schnittstelle hat, brauchst du einen "MAX232" 
von MAXIM um den Spannunglevel-Unterschied von RS232 und AVR 
auszugleichen.

Wenn du nur USB hast, brauchst du einen "FT232RL" von FTDI. Der 
simuliert eine RS232-Schnittstelle. Schau mal nach "USB to Serial - 
Converter" Dazu braucht du allerdings keinen MAX, da es schon 5V sind.

MFG
Lochrasterer

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