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

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.