Forum: Mikrocontroller und Digitale Elektronik Variable erstellen und Zähler kreieren?


von ... (Gast)


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

von Klaus W. (mfgkw)


Lesenswert?

links oben geht es zu einem Tutorial....

von Noch einer (Gast)


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.

von ... (Gast)


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

von Noch einer (Gast)


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.

von Paul B. (paul_baumann)


Lesenswert?

Noch einer schrieb:
> Dann musst du dich um das Tastenpürellen
> kümmern...

Nicht die Tasten pürieren...
;-)
SCNR
Paul

von ... (Gast)


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?

von Thomas E. (thomase)


Lesenswert?

Paul Baumann schrieb:
> Nicht die Tasten pürieren...

Hat er ja auch nicht geschrieben.
http://www.purell.com/
Also tasten desinfizieren.

mfg.

von ... (Gast)


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?

von ... (Gast)


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
}

von Lochrasterer (Gast)


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.

von Thomas E. (thomase)


Lesenswert?

... schrieb:
> Und kann man noch implementieren, dass bei Sekunde = 1 der Zaehler
> wieder auf 0 geht?
Ja.

> Wenn man halt via Timer eine Art Uhr installiert? theoretisch schon, oder?

Sofern die Timer-ISR alle ms aufgerufen wird, ist das eine Uhr. Ja, das 
macht man praktisch so.

mfg.

von ... (Gast)


Lesenswert?

Lochrasterer schrieb:
> Sons zählt deine uhr nur bis eine Sekunde und setzt
> sich zurück.

Wieso das? ich sehe nur: wenn sekunde 1, dann mach zaehler 0.
die sekunde wird ja nicht angegriffen sondern nur aufgegriffen..

von Thomas E. (thomase)


Lesenswert?

... schrieb:
> Wieso das? ich sehe nur: wenn sekunde 1, dann mach zaehler 0.
> die sekunde wird ja nicht angegriffen sondern nur aufgegriffen.

Das passt schon.

mfg

von Lochrasterer (Gast)


Lesenswert?

Oh. Sorry. Klar. Passt so. Ich dachte sekunde wird dann wieder auf null 
gesetzt. Hab mich verlesen. I'm sorry.
MFG
Lochrasterer

von ... (Gast)


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

von Lochrasterer (Gast)


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

von Lochrasterer (Gast)


Lesenswert?

Am PC brauchst du dann sowas wie das Hyperterminal. Schau mal nach der 
kostenlosen Software "HTerm". Hab ich benutzt als ich noch Windows 
hatte.

von ... (Gast)


Lesenswert?


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.