Forum: Mikrocontroller und Digitale Elektronik gerade/ungerade aufwärts zählen bei 8535


von josef (Gast)


Lesenswert?

hallo

möchte in WinAVR ein ansteuerung des Multiplexers (4 Steuerltg)
programmieren. µC ist ein AT90S8535
Er soll mehrere Modi haben:
1. 0-15 zählen
2. zuerst die gerade (0,2,..) und dann die ungeraden (1,3,...) aufwärts
zählen.

Wie programmiert man, dass der Atmel zuerst gerade und dann ungerade
zählt?

Die Auswahl der Modi wird mit enum realisiert.

#include <avr-port-enum.h>
enum SCANMODE   {
    1;
    2;
    };
unsigned char ScanWerte;

switch (ScanWerte)
{
case 1;
        break;
case 2;
  break;
}

habe ich dabei etwas vergessen?

mfg

von Peter D. (peda)


Lesenswert?

Schließ doch einfach den MUXER richtig rum an.

Oder vertausch die Drähte in Software:
1
// exchange bit order: 3210 -> 2103
2
unsigned char mux_exchange( unsigned char mux )
3
{
4
  return ((mux << 1) & 0x0E) | ((mux >> 3) & 0x01);
5
}


Peter

von Karl H. (kbuchegg)


Lesenswert?

> 1. 0-15 zählen
> 2. zuerst die gerade (0,2,..) und dann die ungeraden (1,3,...)
> aufwärts zählen.
>
> Wie programmiert man, dass der Atmel zuerst gerade und dann
> ungerade zählt?

Indem du nicht 1 sondern immer 2 dazuzaehlst.
Wenn Du jetzt bei 1 anfaengst, dann zaehlt er:
  3, 5, 7, 9, 11, 13, 15

Bei 15 setzt du den Zaehler zurueck, aber nicht auf 1 sondern
auf 2. Dann zaehlt er:
  2, 4, 6, 8, 10, 12, 14

Bei 14 setzt du ihn wieder zurueck, diesmal aber auf 1.
Dann zaehlt er weiter:
  1, 3, 5, 7, 9, 11, 13, 15

15: ruecksetzen auf 2

  2, 4, 6, 8, 10, 12, 14

14: rucksetzen auf 1

  1, 3, 5, 7, 9, 11, 13, 15

usw. usw.

War doch gar nicht so schwer, oder?

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.