AVR AT90S8515 Timer1 Einstellung ?

Microcontroller PIC und Atmel AVR

Microcontroller PIC und Atmel AVR

Moderator: Moderatorengruppe

AVR AT90S8515 Timer1 Einstellung ?

Neuer Beitragvon 0815 am Freitag 12. September 2003, 17:13

Moin Moin

Ich arbeite mit einem AT90S8515. Mein Programmier Board hat einen 8Mhz Quarz. Ich möchte eine Digital Uhr programmieren. Das Programm ist fertig geschrieben, meine Frage ist nur wie ich dem Mikrocontroller sagen kann das er 1Hz singnal ausgibt (1sek).

Interrupt beim Overflow ist eingeschaltet. Im Chip befindet sich ein 16bit Timer. also zählt er nach meinen Einstellungen von 0 - 65536 und macht dann den Overflow. Normaler Weise müsste ich doch nur die Anfangszahl dauerhaft verändern oder ?

Wenn ja wie mache ich das ??
(Wenn nicht wie gehts ?;))

Vielen Dank schonmal, bin so kurz vorm Ziel und wieder doch nicht :D

0815
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
:-D :-D :-D :-D :-D :-D
Benutzeravatar
0815
Threadstarter
4042
Silber Mitglied
 
Beiträge: 160
Registriert: Sonntag 2. März 2003, 00:35
Wohnort: Hamburg

Neuer Beitragvon frischen am Freitag 12. September 2003, 18:36

Du wirst nicht herum kommen, den prescaler zu benuzuen.
Den stellst du erst einmal auf 1:512, damit deine 8MHz Quarzfrequenz auf 15625Hz heruntergeteilt wird.
Umstellen musst du im Timer nicht die Anfangszahl, sondern die Zahl, bei der der Interrupt ausgelöst wird und der Timer zurück gesetzt wird, also den Maximalwert des Timers oder auch Auflösung.
Den verändert man im OCR1A - Register, was für Output Compare Register 1 A steht.
Ich weiß jetzt nicht aus dem Kopf, ob alle AVRs überhaupt zwei Output-Compare-Units haben, denke aber schon.
Der ATmega8 hat sie auf jeden Fall, der AT90S8515 wahrscheinlich auch, ansonsten heißt das Register wohl einfach nur OCR1.
In diese Register (es sind zwei - eins fürs untere und eines fürs höhere Byte, wobei in jedem Falle das höhere Byte zuerst geschrieben werden muss!) lädst du also nun die Zahl 15624, also 00111101 00001000 oder auch 3D08.
Die Zahl muss um eins niedriger sein als die errechnete, da das Löschen des Timers, also das Zurücksetzen auf Null auch eine Timer-Clock dauert.

Der Timer-Mode sollte CTC sein, also Clear Timer on Compare, dann wird der Zähler automatisch zurückgesetzt, sobald ein Compare Match auftritt, also die Zahl 15624 erreicht wird und der Zähler beginnt von neuem.
Wenn du dann die entsprechenden Flaggen für ein Interrupt beim Compare Match hisst (OCF1A bzw. OCF1 und OCIE1A bzw. OCIE1), sowie das I-Bit im SREG gesetzt ist, bekommst du zuverlässig und quarzgenau jede Sekunde einen Output-Compare-Match-Interrupt.
Dass man für Interrupts nicht vergessen darf, den Stack-Pointer zu initalisieren, brauche ich dir wohl nicht extra zu sagen.


Ich hoffe, ich konnte dir weiterhelfen,

Mr Freshmaster
frischen
4043
Junior Mitglied
 
Beiträge: 34
Registriert: Montag 24. Februar 2003, 17:42
Wohnort: Herzogenrath

Neuer Beitragvon 0815 am Freitag 12. September 2003, 22:30

Vielen Dank. Werde es gleich am Montag ausprobieren. Das Programmierboard liegt inner uni *grr* :) Mein Board ist noch in der Leiterplattenherstellung in der Uni. Ich werde berichten wie es gelaufen ist! Sag mal kannst du mir auch ein Tip geben wie ich ein Schiebe register in C programmieren kann. kann mir das schlecht vorstellen. beim AT90S8515 werd ichs wohl kaum brauchen :) aber würde mich mal interessieren!

Vielen Dank

0815
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
:-D :-D :-D :-D :-D :-D
Benutzeravatar
0815
Threadstarter
4044
Silber Mitglied
 
Beiträge: 160
Registriert: Sonntag 2. März 2003, 00:35
Wohnort: Hamburg

Neuer Beitragvon frischen am Samstag 13. September 2003, 09:46

Tut mir leid,
aber die einzige Programmiersprache, die ich wirklich kann, ist AVR Assembler.
C würde ich zwar auch mal gerne lernen, habe bis jetzt aber noch nicht die Zeit dafür gefunden.
Weißt du vielleicht ein gutes Buch, das C (vielleicht in Hinblick auf Mikrocontroller) beschreibt und erklärt?


tschö,

Mr Freshmaster
frischen
4045
Junior Mitglied
 
Beiträge: 34
Registriert: Montag 24. Februar 2003, 17:42
Wohnort: Herzogenrath

Neuer Beitragvon 0815 am Samstag 13. September 2003, 13:20

ich lerne das ja inner Uni. Ich habe ein gutes Buch wird dir aber wohl nicht viel bringen. Ist aus dem Rechenzentrum der Uni. Das heisst C die Programmiersprache. Das ist zwar allgemein. Aber da ändert sich für µC nicht viel! Also in dem Buch sind die Begriffe erklärt, aber allgemein also nicht auf Windows hinblickend. Ich könnte dir das Buch aber besorgen wenn du das willst. Es kostet glaub ich 8€. Aber ich werde auf meiner Homepage ein TUT für C machen. Also möglichst alles ;) ich bräuchte aber auch noch jemand der sich um den ASM Teil kümmert. Denn das kann ich gar ned. Ich habe zwar jemand aber es wäre schön vielleicht kannst du mir ja helfen. Kannst mir ja mal eine PM schicken mit deiner Telefonnummer schicken denn würd ich dich mal anrufen, wenn du das willst.

Tim
0815
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
:-D :-D :-D :-D :-D :-D
Benutzeravatar
0815
Threadstarter
4046
Silber Mitglied
 
Beiträge: 160
Registriert: Sonntag 2. März 2003, 00:35
Wohnort: Hamburg

Neuer Beitragvon 0815 am Montag 15. September 2003, 11:20

Also funktiert alles super deine Hinweise. Habe 4 7Segment multiplext. funktioniert einwandfrei. Aber ein Problem habe cih noch! ich habe in der mitte zwischen den Stunden 2 LEDs die im Sekundentakt blinken sollen, aber leider sind die zu schnell sie sind zwar eine Sekunde aus aber ned eine An. Kannste mir sagen wo ich den Denkfehler gemacht habe ??

Danke

0815

EDIT:

Danke hat sich erledigt. Habe mich in der Logik vertan ;)

0815
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
:-D :-D :-D :-D :-D :-D
Benutzeravatar
0815
Threadstarter
4062
Silber Mitglied
 
Beiträge: 160
Registriert: Sonntag 2. März 2003, 00:35
Wohnort: Hamburg


Zurück zu Atmel AVR Pic und C Control

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste