RGB Fader Atmega8 Anfänger

OP #1651783
Lesenswert?
• ▲
▼
Ich habe hier ein RGB Fader Programm für den Atmega8
gefunden. Ich möchte nun per Taster den Fader ein und
ausschalten können. Ich probiere das schon seit Tagen.
Geht das auch ohne ISR, Timern, SEI usw. ?
Wie gesagt.. ich bin Anfänger... und suche eine einfache Lösung.
Es gibt zwar viele Programmbeispiele füe den Atmega8, allerdings
mit so vielen Funktionen (RC5, eeprom, HSV) usw. das ich da
nicht mehr durchblicke.

Grüße

Chris
Angehängte Dateien:
Gast #1651801
Lesenswert?
• ▲
▼
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Lesen_aus_Registern

annahme du hast einen schalter an PB.4
mach halt so schleife
1
while(1)
2
{
3
  if(PINB&(1<<4))
4
  {
5
     for(i=0;i<255;i++)
6
       {
7
       B_PWM=i;
8
       R_PWM=(254-i);
9
     my_delay();
10
       }
11
       for(i=0;i<255;i++)
12
       {
13
       G_PWM=i;
14
       B_PWM=(254-i);
15
     my_delay();
16
       }
17
       for(i=0;i<255;i++)
18
       {
19
       R_PWM=i;
20
       G_PWM=(254-i);
21
     my_delay();
22
       }
23
  }
24
}
OP #1652242
Lesenswert?
• ▲
▼
Ich bekomme es nicht hin.

Wenn ich NICHTS drücke ist der Fader an und die LED aus.

Wenn ich den Taster gedrückt halte, geht der Fader bis zur blauen
LED, bleibt dort mit der Farbe stehen, und die LED geht an.

???

seltsam sowas

Wer kann mir weiter helfen?

Sicher das man da keinen Interrupt braucht?


Was bedeutet eigentlich die 4 in
if(PINB&(1<<4))
In den Link habe ich was von einem Interrupt gelesen?



Grüße

Chris
Angehängte Dateien:
Gast #1652263
Lesenswert?
• ▲
▼
Chris Nixda schrieb:
...
> Was bedeutet eigentlich die 4 in
> if(PINB&(1<<4))
...

Das da oben fragt ab, ob an PortB das 4. Bit TRUE ist.
Dies wird dadurch realisiert, daß eine 1 4-mal nach links geschoben 
wird.

Notwendig ist dies deshalb, weil an PortB Pin4 der Schalter vermutlich 
angeschlossen sein sollte...

Viele Grüße,

  Wizz
Gast #1652297
Lesenswert?
• ▲
▼
Chris Nixda schrieb:
> Wenn ich richtig verstanden habe ist
>
>
> if(PINB&(1<<4))
>
> und
>
> if(PINB&(1<<PB4))
>
> das gleiche?

Hallo,

ja, denn Du inkludierst das Header-File io.h ("#include <avr/io.h>").
Das wiederum definiert sowas hier:

#define PB4  4

Grüße,

  Wizz

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.