PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : stk200 und timer1 16bit



gokussj4
18.07.2005, 16:23
hallo alle



bin neu hier im forum auch (bei avr)
ich habe eine problem und bitte um hilfe
ich möchte den (16bit TIMER1) gern actvieren weiss leider nicht wie das geht.
ich habe es versucht mit dem example code der bei codevision dabei ist geht aber nicht könnet es vielleicht an meinem stk200 liegen (mein hardware sind stk200 und atmega32) muss ich vielleicht was machen um es zuaktvieren und wenn nicht kann jemanden mir etwas über timer1(16bit-timer)geben

hier ist mein code


// I/O register definitions for AT90S8515
#include <mega32.h>

// quartz crystal frquency [Hz]
#define xtal 3686400
// moving LED frequency [Hz]
#define fmove 2

// the LED on PORTC output 0 will be on
unsigned char led_status=0xfe;

// TIMER1 overflow interrupt service routine
// occurs every 0.5 seconds

interrupt [TIM1_OVF] void timer1_overflow(void)
{
// preset again TIMER1
TCNT1=0x10000-(xtal/1024/fmove);
// move the LED
led_status<<=1;
led_status|=1;
if (led_status==0xff) led_status=0xfe;
// turn on the LED
PORTB=led_status;
}

void main(void)
{
// set the I/O ports
// all PORTB pins are outputs
DDRB=0xff;
// turn on the first LED
PORTB=led_status;

// init TIMER1
// TIMER1 is disconnected from pin OC1
// no PWM
TCCR1A=0;
// TIMER1 clock is xtal/1024
TCCR1B=5;
// preset TIMER1
TCNT1=0x10000-(xtal/1024/fmove);
// clear TIMER1 interrupts flags
TIFR=0;
// enable TIMER1 overflow interrupt
TIMSK=0x80;
// all other interrupt sources are disabled
GIMSK=0;

// global enable interrupts
#asm
sei
#endasm

// the rest is done by TIMER1 overflow interrupts
while (1);
}




danke im vorraus

SprinterSB
18.07.2005, 17:12
Hi auch. Ich hatte hier mal was dazu gepostet
Link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10798&highlight=)
Allerdings für Mega8, aber die SFRs sollten die gleichen sein.
Ausserdem verwende ich OutputCompare, das gibt genauere Zeitintervalle als immer TCNT1 neu zu setzen.

Vielleicht geht's ja damit.

Bist du sicher, daß dein Programm anläuft und im Interrupt landet?

gokussj4
19.07.2005, 17:58
SprinterSB
ich danke dir für dein antwort aber es hat mir nicht geholfen

wass ich wissen will ist ob meine stk200 und timer1 auf atmega32 läuft oder nicht..weil der selbe code funtzt auf at90s8615 und bei atmega32 nicht

und eine kleine example (beispiel) mit teimer1 16bit timer der functioniert oder eine erklörung pdf oder so hier im forum habe ich nicht gefunden und bei goole auch nicht es kommt mir vor als keiner mit timer1 klar kommt .... :-$

SprinterSB
20.07.2005, 11:28
Ich versteh nur nicht, was ein Programmier-Adapter mit Timer1 zu tun hat... der Timer wird doch durch deine Software gesteuert.

gokussj4
20.07.2005, 16:29
ja da ist ja was mich verrückt macht
ich möcht nur wissen ob mein stk200 damit zu tuhn hat oder nicht weil der prog muss eigenlich funcktionieren vielleicht muss ich stk500 holen weil die 200er nicht funcktioniert aber die ist nicht kapput weil alles funzt aber nur nicht mit dem timer1 vielleicht muss ich was eingeben um es zu aktvieren (ein code oder so) das wegen will ich nur so eine kleine code (blink led oder so) mit timer1 delay (nicht delay_ms) damit kann ich wissen ob es ein hardwarefehler ist oder mein code ist falsch

SprinterSB
21.07.2005, 10:24
Was mir nur auffällt ist Code wie

TCCR1B=5;

Das mag für ein Controller korrekt sein, für einen anderen nicht. Verwende die Bitdefininitionen aus der avr/io.h
Die Bits sind idR so benannt wie in den Manuals.
Verschiedene AVR-Hardware ist teiweise verschieden zu bedienen, zB Timer1 bei 90S2313 gegenüber ATmega8.
Und avr/io.h sieht für verschiedene Targets verschieden aus. Zwischen 90S8515 und Mega32 ist's vielleicht genau das Problem.

Kjion
21.07.2005, 11:44
Verwende die Bitdefininitionen aus der avr/io.h
Die Bits sind idR so benannt wie in den Manuals.

Allerdings stimmt avr/io.h nur für den avr-gcc, gokussj4 programmiert aber mit Codevision.

Ansonsten hast du aber natürlich absolut recht :-) Könnte gut sein das da der Fehler liegt. AT90S8515 und ATMega32 sind schon recht verschieden. Beim Übergang zu der Mega-Reihe hat Atmel einiges an Funktionen hinzugefügt.

Davon das ein Programm auf beiden Controller mit absolut dem gleichen Code läuft ist eher unwahrscheinlich ( insbesondere bei UART zum Beispiel ).

MfG Kjion

gokussj4
21.07.2005, 14:39
danke
ist schon gut jetzt geht wieder mein code hatte ein fehler =D> :cheesy:

Kjion
21.07.2005, 16:52
Dann schreib doch mal dazu was der Fehler war bzw. poste das funktionsfähige Programm.
So haben dann auch andere Leute was davon wenn sie auch mal vor so einem Problem stehen.

MfG Kjion

gokussj4
25.07.2005, 17:24
sorry war lange nicht online
also ichabe


TIMSK=0x80;
auf TIMSK=0x04; umgestellt und es ging