Forum: Mikrocontroller und Digitale Elektronik Timer Atmega644


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe folgendes Problem.
Ich habe Timer bei µc Atmega644 konfiguriert ,aber während Interrupt 
habe ich jeder Menge vor z.B ADC abfragen , Timer Konfiguration ändern 
und so bekomme ich in Interrupt eine große Schleife.
Kann man dieser Schleife in Hauptprogramm (main,while(1)) verschieben?
Darf man während Interrupt  Funktionen aufrufen?

Hat jemand einen Tipp für mich?

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Entschuldigung habe ich Falsche code angehängt.
jetzt ist die Richtige

von Thomas E. (thomase)


Lesenswert?

Alex schrieb:
> Entschuldigung habe ich Falsche code angehängt.
> jetzt ist die Richtige

Die erste war die bessere.

Aber eigentlich ist das egal, da beide nicht funktionieren können. Der 
Controller ist mit dem Timing restlos überfordert. 1µs = 20 Takte mit 
Timer und Interrupt reichen nicht einmal für die Zeit, die der Interrupt 
mit sich selber beschäftigt ist.

Was ist denn die kürzeste Belichtungszeit?

mfg.

: Bearbeitet durch User
von Alex (Gast)


Lesenswert?

Meinen Sie das wird nicht funktioniren...
Wie macht man am besten (ich meine mit Timer)? Ich habe keine Idee mehr?

Belichtungszeit das ist const. Wärend Belichtungszeit wird sensor 
belichtet.

von Thomas E. (thomase)


Lesenswert?

Alex schrieb:
> Meinen Sie das wird nicht funktioniren...

Nein. 1µs ist zu kurz. Auch die 65µs sind viel zu kurz, wenn in diesem 
Zyklus der ADC abgefragt werden soll. Zumal sich durch die 
Timer-Konfiguration dieser Zyklus nur einmal ergibt. Aber das ist ein 
anderes Problem.

Alex schrieb:
> Belichtungszeit das ist const. Wärend Belichtungszeit wird sensor
> belichtet.

Ja, aber wie lang ist die Zeit und was macht der Sensor? Soll der 
irgendwas schalten, wenn ein bestimmter "Lichtwert" erreicht ist?

Erzähl mal genau, was das werden soll. Ich kann mir nicht vorstellen, 
dass du Raketentechnik brauchst. So, wie du davor ist, allerdings schon.

mfg.

: Bearbeitet durch User
von Alex (Gast)


Lesenswert?

> Erzähl mal genau, was das werden soll.
Es geht um Sensor Sony ILX554B . Sensor muss ausgelesen werden (mit 
Hilfe Atmega 644) und die ausgelesene Werte über UART an PC übertragen 
weden.Aber zuerst Sony ILX554B muss belichtet werden (um richtige werte 
zu kriegen dauert 4.2ms)Rog-start signal 5µs.

von Thomas E. (thomase)


Lesenswert?

Alex schrieb:
> Aber zuerst Sony ILX554B muss belichtet werden (um richtige werte
> zu kriegen dauert 4.2ms)
4,2ms die Lampe anmachen ist kein Problem. Die schaltet man ein und nach 
Ablauf der Zeit wieder aus.
Oder muss währenddessen am Sensor gemessen werden? Aber dazu brauchst du 
keinen Timer. Das kann der ADC alleine.

> Rog-start signal 5µs.
Ist das die Wartezeit nach dem Belichten? Das kannst du auch mit einem 
Delay machen.

Aber wo kommt die 1µs her?

mfg.

von Alex (Gast)


Lesenswert?

> Aber wo kommt die 1µs her?

das ist von mir.Ich wollte schnell wie möglich.

von Alex (Gast)


Lesenswert?

> 4,2ms die Lampe anmachen ist kein Problem. Die schaltet man ein und nach
> Ablauf der Zeit wieder aus.
> Oder muss währenddessen am Sensor gemessen werden? Aber dazu brauchst du
> keinen Timer. Das kann der ADC alleine.

Sony ILX554B hat 2048 pixel und jeder pixel soll ausgelesen werden in 
Array gespeichert und übertragen.

von Thomas E. (thomase)


Lesenswert?

Alex schrieb:
> Sony ILX554B hat 2048 pixel und jeder pixel soll ausgelesen werden in
> Array gespeichert und übertragen.

Wenn die Pixelwerte per ADC ausgelesen werden, ist die Wandlungszeit das 
maximal mögliche. Der ADC soll mit ca. 150Khz laufen und braucht 13 
Takte pro Wandlung. Das sind ungefähr 12000 Wandlungen/s. Also 5-6 
Zeilen. Da du aber sowieso nur 8-Bit-Daten speichern kannst, sonst ist 
dein RAM zu klein, kannst du ein bisschen schneller mit dem ADC. Aber 
dann hast du schon wieder das nächste Problem, nämlich die Daten 
rechtzeitig zum PC zu schicken.


mfg.

: Bearbeitet durch User
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.