Jepp es klappt:
Habe soeben das Program ergänzt und es funktioniert genau so wie ich es möchte.
Code:
// Timer_Interrupt_TEST_3.c Programm //
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
int A;
int Delai;
// Routine d'interruption
//-----------------------
ISR (TIMER1_COMPB_vect) {
if(A==0x00){
PORTB=0x05;
}
if(A==0x01){
PORTB=0x00;
}
if(A==0x0A){
PORTB=0x0A;
}
if(A==0x0B){
PORTB=0x00;
}
A=A++;
OCR1B=TCNT1+Delai;
if(A==0x0C){ //0x14
A=0;
TCCR1B=(0<<CS10); // timer stopp
}
}
// Programme principal:
//---------------------
int main () {
A=0;
DDRB=0xFF; // PORTB mis en sortie
DDRC=0xFF;
Delai=3686000/20/20/165;
OCR1B=TCNT1+Delai; // initialisation du registre de comparaison
TIMSK|=(1<<OCIE1B); // autorisation de l'interruption
sei (); // autorisation de toutes les interruptions
while (1){
if(PINA == 0xFE){
TCCR1B=(3<<CS10); //timer1 start, timer1 source: ck/64
}
}
}
Natürlich währe es ohne eure Hilfe nix geworden.
Danke normals.
Dass mit dem
CS12, CS11, CS10 (Clock Select Bits)
Diese 3 Bits bestimmen die Quelle für den Timer/Counter:
CS12 CS11 CS10 Resultat
0 0 0 Stopp, Der Timer/Counter wird angehalten.
0 0 1 CPU-Takt
0 1 0 CPU-Takt / 8
0 1 1 CPU-Takt / 64
1 0 0 CPU-Takt / 256
1 0 1 CPU-Takt / 1024
1 1 0 Externer Pin T1, fallende Flanke
1 1 1 Externer Pin T1, steigende Flanke
hatte ich aus einer anderen Website aber bin gestern einfach nicht darauf gekommen, obwohl es gross draufstand... 0<<CS10 = timer Stopp eieiei
Naja jetzt gehts ja lol
Ciao
Euer Nightlord
Lesezeichen