Forum: Mikrocontroller und Digitale Elektronik Propellerclock ohne Interrupt?


von Matze (Gast)


Lesenswert?

Hi!

Bin gerade dabei so eine Propeller Clock für einen Fahrradreifen zu 
bauen.

Schaltung besteht aus einem atmega 8 mit 8 leds an PORTD und einem 
Reedkontakt an PORTB0, HIGH aktiv. Dazu noch Spannungsregler, etc..

Hab schon bisschen Grundlagenforschung betrieben. Das heisst ich kann 
meine 8 Leds so steuern dass bei etwas längeren Verschlusszeiten (~0,5 
sec.) einer Kamera und gleichzeitigem vorbeischwenken der LEDs ein Text, 
etc. entsteht. Soweit so gut.

Hier schreibe ich einfach das erste Byte aus dem Array des 
entsprechenden Buchstaben in den PORTD. Passt so?
PORTD deswegen, weil es ja am atmega 8 keinen anderen Port gibt, der 
komplett herausgeführt wird und nicht fürs ISP, etc. verwendet wird.

Nun habe ich aber mit dem Timing ein kleines Problem:

Ich müsste ja eigentlich die Dauer eines umlaufes messen, aber wie 
stelle ich das ohne Interrupts an? Wenn ich den INT0 Pin für den Taster 
verwenden würde, kann ich nicht mehr einfach mein Byte in PORTD 
schieben.

Wie würdet ihr das machen?

Grüße, Matze

von lightninglord (Gast)


Lesenswert?

Hi,

nimm doch den PORTB für deine LEDs. Den ISP interessieren deine paar 
LEDs recht wenig. Heißt ja nicht umsonst InSystem. Oder du trennst 
softwareseitig die zwei PD2,PD3 vom PORTD ab und gibst sie auf dem PORTC 
aus.

[c]
PORTD = Ausgabe & 0b11110011;
PORTC = Ausgabe & 0b00001100;
[\c]

von chris (Gast)


Lesenswert?

Für die Messung der Umlaufdauer bietet sich der ICP (Input Capture) an. 
Der liegt auf PB0.

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.