Timer für AVR ATtiny84 oder ander allgemein in C
Hallo Leute brauche mal bitte Hilfe,
habe eine ATtiny84V10PU und möchte einfach nur einen Timer in abhängigkeit der Taktfrquenz laufen lassen und Überläufe zählen. Habe mir auch das Tutorial hier im Roboternetz (und viele andere) angeschaut und muss es als unbefriedigend bewerten. Wenn man in einem Tutorial schon Wissen vorraussetzt braucht man auch kein Tutorial machen:(:confused::(
Das hat nichts mit der Sprache C an sich zu tun, sind ja einfach nur Befehle an den Chip. Verstehe nicht wie man so eine einfache Sache so umständlich dumm gestalten kann. Für eine SPS ist das so einfach in AWL z.B.
U E 6.0
FR T1
L S5T#10S
SI T1
UE 5.5
R T1
Fertig
Was bedeutet z.B. das "SIGNAL(SIG_OUTPUT_COMPARE0A)" dazu finde ich nichts im Datenblatt des Chips, oder diese Befehle "SIGNAL(TIMER1_CAPT_vect)", "SIGNAL(TOIE0)", "SIGNAL(TIMER1_CAPT_vect_num)" ???
AVR Kauderwelsch:(? Scheinen Pointer zu sein aber was machen die da?
Alles was ich bis jetzt hin bekommen habe sieht so aus (CTC Mode):
-----------------------------------------------------------------
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL //max. Takt ATtiny84
SIGNAL(SIG_OUTPUT_COMPARE0A)
{
TCNT0++;
}
TCCR0A = (1<<CS20) | (1<<WGM02); //Prescaler von 1 | CTC-Modus, ATtiny84 hat keine Prescaler Funktion ? richtig?
OCR0A = 10000;
TIMSK |= (1<<OCIE2); //Befehl aus Roboternetz Tutorial soll Interrupts aktivieren und damit Timer starten, bei mir Funktionirt es nicht
sei();
int main(void)
{
while(1)
{
}
}
-------------------------------------------------------------------
Der Code ist fehlerhaft, denke es liegt am Behehl TCCR0A. Aber was muss dort stehen für den CTC Mode zu starten???
Für mich liest sich der Code wie die Aussage eins Opfers das zusammengeschlagen wurde und versucht zu erklären was Gestern geschehen ist:o
Kann mir mal jemand helfen und mal die Struktur bzw. Syntaxablauf eines Timer erklären wie z.B.
Timer freigeben
Timer aufrufen " T1"
Timerwert setzen zB. 0 oder 20...
Timerfunktion wie CTC, Einschaltverzögert usw.
Vergleichswert für max. Zählwert festlegen z.B. 10000
Befehl was beim erreichen von 10000 geschehen soll z.B. LMW 10, R T1, = A 4.0...
So ein Ablauf der bei jedem Chip gleich ist und immer eingehalten werden muss und nur unterschiedliche Befehle aufweist da unterschiedliche Chips...
Kann jemand helfen.... do kend ich beklobbd were.....
??:confused: :confused: :confused: :confused: :confused: