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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.