Registerinhalt rausblinken?

Gast #3524131
Lesenswert?

> Ich kann es nicht mehr finden... hat jemand nen Tipp für mich?

Wie waer es denn mit...achtung festhalten, selber programieren? Die 
Suche nach etwas so banalem dauert doch schon laenger als die 5min die 
es braucht das zu schreiben.

Olaf
#3524155
Lesenswert?

Das ist doch jetzt nicht sooo schwer!
du nimmst eine for-schleife, lässt sie von 0 bis 7 laufen und 
kontrollierst, ob im jeweils maskierten bit eine eins steht. wenn ja 
lässt du es kurz blinken, wenn nicht, halt eben lang.
das könnte in etwa so aussehen
1
for(uint8_t i = 0; i <= 7; i++)
2
{
3
  if(VARIABLE & (1 << i))
4
  {
5
    led_einschalten();
6
    _delay_ms(100);
7
    led_ausschalten();
8
  }
9
  else
10
  {
11
    led_einschalten();
12
    _delay_ms(500);
13
    led_ausschalten();
14
  }
15
}
ist nur mal kurz frei aus dem kopf dahin gezimmert und ungetestet, kann 
sein, dass du noch etwas beachten usst, woran ich jetzt spontan nicht 
gedacht habe.
was spricht denn gegen eine gescheite Debuuging-Hardware? besitzt dein 
µC keine JTAG oder DW-Schnittstelle? schöner wäre es die Registerinhalte 
per UART rauszugeben und am PC anzeigen zu lassen

Und das nächste mal bitte selbst nachdenken!! Wir helfen gerne, aber bei 
fragen wie "Wie lasse ich eine LED Blinken?" ist es nur rechtens, das 
man am können und willen des fragenden zweifelt.
#3524162
Lesenswert?

Vergiss es, das was ich gepostet habe, ist das beste was du hier 
bekommst. den kannst du direkt übernehmen, noch schnell das VARIABLE 
durch deine variable getauscht und fertig (gut, die funktion zum ein- 
und ausschalten der led musst du auch noch ersetzen, aber ein bit zu 
setzen solltest du hinbekommen)
Warum willst du fertigen code? Kannst du nicht programmieren? Dann such 
dir bitte ein anderes Hobby. Briefmarken sammeln oder so
Gast #3524190
Lesenswert?

1
#include <climits>
2

3
template <typename T>
4
void rausblinken (const T input) {
5
  T tmp = input;
6
  for (decltype(CHAR_BIT * sizeof(T)) i = 0; i < (sizeof (T) * CHAR_BIT); i++) {
7
    led_an ();
8
    if (tmp & 1) {
9
      _delay_ms (1000); // Lang blinken
10
    } else {
11
      _delay_ms (500);  // Kurz blinken
12
    }
13
    led_aus ();
14
    tmp >>= 1;
15
  }
16
}
Funktioniert garantiert vollautomatisch mit allen Datentypen und auf 
allen Plattformen mit beliebigen Registerbreiten und ohne 
Barrel-Shifter.
#3524196
Lesenswert?

Hier noch ein (etwas aus dem Kontext gerissener) Codefetzen. Ich hab den 
für dich einfach schnell aus einem meiner Projekte kopiert.
Der gibt den Inhalt von transmitt[] auf eine Software-Uart über PB2 aus.
Du musst evtl. die Delays anpassen, ich hatte das auf einem mit 
Interrupts vollgespammten tiny44 laufen.
1
for(uint8_t bytecount = 0; bytecount < sizeof(transmitt); bytecount++){
2
      PORTB &= ~(0b00000100);
3
      _delay_us(2500);
4
      for(bitcount=0;bitcount<8;bitcount++){
5
        if(transmitt[bytecount]&(1<<bitcount)) PORTB |= 0b00000100;
6
        else PORTB &= ~(0b00000100);
7
        _delay_us(2500);
8
      }
9
      PORTB |= 0b00000100;
10
      _delay_ms(5);
11
    }

Das ist ein quick&dirty (in 5 minuten hingerotzter) not-mod um ein paar 
Werte aus dem Tiny zu saugen und sollte keinesfalls als Beispiel für 
irgendwas dienen. In der Situation war das aber mein Retter :D.
Also bitte nich hauen ^^
#3524480
Lesenswert?

Mark schrieb:
> Ich hatte hier irgendwo mal eine Routine gesehen welche den
> Variableninhalt über eine LED rausblinken kann.

Meinst du diesen Thread:
Beitrag "massive led debugging"

Für die anderen Mitleser: Es geht um eine in einer scheinbar statisch 
angesteuerten LED "verborgene" Debug-Ausgabe.

Für die Verwendung derselben LED als Eingang ist hier noch eine sehr 
interessante Literaturangabe:
Beitrag "Re: massive led debugging"

Grüße

Stefan
Gast #3524516
Lesenswert?

Mark schrieb:
> Ich mag einfach gute Bibliotheken und finde es unsinnig sehr gute
> Programme anderer nicht zu benutzten nur damit man es selber gemacht
> hat..

Das ist verständlich, nur wie willst du dann jemals lernen und etwas 
eigenes erschaffen? Es wurde schließlich schon so einiges geschrieben. 
Dazu kommt noch, dass du selbst hier schon fertigen Code vorziehst, 
obwohl dazu nur die Basisgrundlagen benötigt werden.

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