Hallo zusammen,
ich stolpere mich gerade in die AVR-GCC Prigrammierung und versuche auf
einem tiny861 den Code zum einlesen eines Encoders hier von der Seite
https://www.mikrocontroller.net/articles/Drehgeber zum laufen zu
bringen.
Nun geht da nicht draus hervor für welchen µC der irgendwann mal
geschrieben wurde, jedenfalls heißen die Timer-Register beim 861 anders.
Ich habe mich nach besten Möglichkeiten bemüht, Die Timer Register
angepasst aber das Dingens tut nichts. Vermutlich liegt der Fehler in
der Zeile
denn im Control Register A gibts keine Bits mit den Namen WGM01, CS01
und CS00. Nun bin ich im Umgang mit Timern zu schlecht, in C generell
noch nicht gut und der Code nicht ausreichend dokumentiert um zu
erahnen, was diesem Register mitgeteilt werden will, bzw. welche Bits
hier gesetzt werden sollen.
Könnt Ihr mir den entscheidenden Tritt in die richtige Richtung geben?
Hier nochmal der Code mit den geänderten Registern. Im wesentlichen habe
ich die Verweise auf TIMER0 nach TIMER0A geändert:
1
#include<avr/io.h>
2
#include<avr/interrupt.h>
3
#include<avr/pgmspace.h>
4
5
#define XTAL 8e6 // 8MHz
6
7
#define PHASE_A (PINA & 1<<PA6) // an Pinbelegung anpassen
8
#define PHASE_B (PINA & 1<<PA7) // an Pinbelegung anpassen
9
10
#define LEDS_DDR DDRB
11
#define LEDS PORTB // LEDs gegen Vcc geschaltet
12
13
volatileint8_tenc_delta;// Drehgeberbewegung zwischen