Forum: Mikrocontroller und Digitale Elektronik Bitmuster


von Marc (Gast)


Lesenswert?

ich möchte mit atmege16 ein besimtes bitmuster ausgeben also 1us ein,
1ms aus  4s ein 1us aus 14s ein ..... wie ist das am besten zu
realisieren ? ich versuche es mit verschachtelten schleifen also so:

  ldi    zaehlreg3,  anfangswert
  zeitschleife4:


    ldi   zaehlreg2,  anfangswert

  zeitschleife3:
    ldi    zaehlreg,  anfangswert
  zeitschleife2:

    dec    zaehlreg
    brbc  1,  zeitschleife2



    dec   zaehlreg2
    brbc  1,  zeitschleife3


    dec    zaehlreg3
    brbc  1,  zeitschleife4



aber ich kann mir nicht vorstellen das daß der elleganteste weg ist.

von Lupin (Gast)


Lesenswert?

Schau mal ins Datenblatt von deinem "atmege16" dort findest du
bestimmt einen Eintrag "Timer", im AVR-GCC-Tutorial hier findest du
dazu auch infos.

Den timer stellst du dir schön schnell ein und im timer arbeitest du
dann deine zeit-werte ab indem du ein zählregister hast das bis zu
einen bestimmten Zeitwert zählt (wenn dein Timer zB mit 40000 Hz läuft
und du 2 sekunden warten willst dann zählt er halt bis zu einen
Zeitwert von 80000) und nachdem dieser wert erreicht ist führst du eine
Aktion aus (zB einen port pin low setzen) und dann lädst du einen neuen
Zeitwert und lässt das zählregister wieder bei 0 anfangen.

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.