Forum: Mikrocontroller und Digitale Elektronik ADC ISR C Programmierung


von Jens (Gast)


Lesenswert?

Hallo Männer,
folgendes Problem, ich möchte in C ein Programm für nen ATtiny26
schreiben, daß im wesentlichen einen AD-Wert mit Interrupt ermittelt
und je nach dem wie groß der Wert ist eine bestimmte Zeit wartet.
Da ich nich so der C-Blicker bin tu ich mich etwas schwer, allerdings
nur in Sachen Interrupt.
In Assembler wars ja so, daß es die ISR für ADC bzw. Timer irgendwo
stand und automatisch angesprungen wurde.
Wie muß ich das nun in C anstellen, daß wenn ich die Interrupts
freigegeben habe und der AD-Wandler gestartet wurde, das Programm wenn
der ADC fertig ist die "ISR" anspringt und wo schreib ich das dann
hin? Weil in dem Tutorial daß ich für AVR in C ausgegraben wird da nich
so viel drüber gesagt, als daß ich es verstehen würde???
... macht mich echt ganz schön ratlos das ganze ...
Cool wär natürlich auch ein Beispielprogramm :).
Besten Dank.
Gruß Jens

von Daniel (Gast)


Lesenswert?

#Inlcude <Avr/Signal.h>
#Include <Avr/Interrupt.h>


int main (void)
{
//musst ADC aktivieren und so steht alles genau im Datenblatt



}


SIGNAL (SIG_ADC) //ISR wenn Wert fertig gewandelt
{
//zum Beispiel

x=ADCL;   //Je nach Einstellung  8niedrigen BITS in x speichern
y=ADCH;     8 höheren in y speichern

}

von Jens (Gast)


Lesenswert?

ok, das hat Klarheit geschaffen, danke :)

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

>#Inlcude <Avr/Signal.h>
>#Include <Avr/Interrupt.h>

Bitte so nicht!

Das kann je nach make/shell ganz mächtig in die Hose gehen, und beim
Präprozessor wirds das ganz sicher.
1
#inlcude <avr/signal.h>
2
#include <avr/interrupt.h>

von Angel (Gast)


Lesenswert?

Hallo Männer UND Frauen,

ich programmiere gerade auf dem ATmega128. Dieser befindet sich auf 
einem Sensorknoten.
Ich legen den Mikrocontroller schlafen und versuche gerade ihn durch das 
Drücken eine Button (also durch einen Interrupt) wieder wecken, bzw 
etwas ausführen lassen. Leider kenne ich mich mit Interrupts nicht 
wirklich aus und weiß daher nicht, welchen Quellcode ich an welche 
Stelle schreiben muss... Kann mir da jemand weiter helfen?


Gruß

von Lutz (Gast)


Lesenswert?


von Angel (Gast)


Lesenswert?

Danke Lutz,

ich war schon mehr mal auf dieser Seite. Allerdings stimmt immer noch 
etwas nicht bei mir, da es nicht richtig läuft :-(

von Karl H. (kbuchegg)


Lesenswert?

Meine Kristallkugel sagt: fehler in Zeile 42

Und bitte. Hijacke nicht alte Threads. Mach einen neuen auf.

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.