PIC 10F220 TIMER0
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  Timer (Assembler)  |  PIC 10F220 TIMER0 « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: PIC 10F220 TIMER0  (Gelesen 2230 mal)
 
MatthiasR
Gast
« am: Februar 16, 2009, 18:04:47 »

Hallo,
ich fange erst gerade an mit PICS zu arbeiten und bein ein Anfänger. Ich möchte gerne eine Wartezeit in mein Programm
die ca 5 sekunden dauert. Ist dies über den Timer0 machbar?? Wie kann ich ihn auslesen.

Vielen Dank schonmal im Vorraus

gruß Matthias
Gespeichert
cooloola
Jr. Member
**
Offline Offline

Beiträge: 52



Profil anzeigen
« Antworten #1 am: Februar 17, 2009, 09:05:17 »

Hallo !

JA, es geht mit dem Timer, aber die Frage ist zu allgemein und viel zu aufwändig, um sie hier zu behandeln.
Schau mal unter http://sprut.de/electronic/pic/grund/timer/timer.htm
Dort ist genau erklärt, wie der Timer eingestellt wird.

Tipp: Wenn danach noch einzelne Fragen offen sind, dann schreib sie hier rein.
Umso genauer Dein Problem beschrieben ist, umso wahrscheinlicher wird Dir geholfen.

Viel Erfolg
Gespeichert
MatthiasR
Gast
« Antworten #2 am: Juni 22, 2009, 16:20:49 »

Hallo,

so habe mich jetzt eine weile mit PICS beschäftigt.
Aber was ich nicht verstehe ist , wie ich den Timer beim Pic
10F220 auswerten soll.Der kann keine Interrups und ich finde
auch kein Register was ich auswerten kann .

Kann mir vielleicht jemand helfen.

Gruß Matze
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #3 am: Juni 22, 2009, 17:02:28 »

Hallo,

es gibt nur das Register TMR0, was den aktuellen Wert des Timers wiedergibt. Den Inhalt kannst du wohl nur über größer / kleiner (beispielsweise mit "btfss") auswerten, sonst sehe ich da keine andere Möglickeit.

Zitat
Ich möchte gerne eine Wartezeit in mein Programm
die ca 5 sekunden dauert. Ist dies über den Timer0 machbar??
Das wird mit dem PIC nicht gehen, da mit 4MHz Takt und Prescaler = 256 und 8Bit Register nur 256*256*1µs = 65,526ms machbar sind. Du müsstest also eine Lösung in Software erarbeitenm aber bei 2 Leveln Stack ist das auch müßig.
Zitat
so habe mich jetzt eine weile mit PICS beschäftigt.
Da sind die 10F eher schlechte Kandidaten, da sie extrem spartanisch sind und nur für absolut minimalistische Aufgaben gedacht sind. Interssanter sind da die 16F887, 16F88, oder die moderneren 18F452, 18F1320, 18F2550. Ich weiß ja nicht was du vorhast, aber ich würde dir stark zu einem anderen PIC raten.

Gruß
Stefan
« Letzte Änderung: Juni 22, 2009, 17:07:50 von Stampede » Gespeichert

MatthiasR
Gast
« Antworten #4 am: Juni 22, 2009, 17:29:08 »

Hallo Stefan,
danke für die schnelle Antwort.

Bin leider bei dieser Aufgabe an diesen Pic gebunden.

Das mit den 5 sec wird schwe, das habe ich auch schon gemerkt.

Was steht denn im Timer wenn er abgelaufen ist???

Ich habe jetzt das TMR0 Register mit d'102' beschrieben!
Startet danach der Timer im nächsten Zyklus wenn ich ihn auf
"Transition on Internal instruction cycle clock" konfiguriert habe??  Was  steht im timer wenn er hochgzählt hat ?? Zählt er weiter oder hält er an ?? Muss man den Timer extra starten ?? Danke schonmal im Vorraus für die Antwort.

Gruß Matze
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #5 am: Juni 22, 2009, 17:37:53 »

Hi,

Zitat
Bin leider bei dieser Aufgabe an diesen Pic gebunden.
Nun gut...

Zitat
Ich habe jetzt das TMR0 Register mit d'102' beschrieben!
Startet danach der Timer im nächsten Zyklus wenn ich ihn auf
"Transition on Internal instruction cycle clock" konfiguriert habe??
Er wartet noch 2 Takte, und beginnt dann mit dem Zählen. Bei 4Mhz dauert ein Schritt 1µs, bei 8Mhz 0.5µs.
Zitat
Was  steht im timer wenn er hochgzählt hat ?? Zählt er weiter oder hält er an ??
Im Modus "Transition on Internal instruction cycle clock" wird bei jedem Takt (also mit jedem abgearbeiteten Befehl) der Timer um 1 erhöht. Da der Timer 8Bit breit ist geht er von 0 bis 255. Ist 255 erreicht, springt er auf 0 zurück. Andere PICs können hier einen Interrupt generieren oder ein Flag setzen, die 10Fxxx bieten aufgrund des Purismus diese Möglichkeit nicht.
Zitat
Muss man den Timer extra starten ??
Nein, der Timer läuft immer. Du kannst ihn weder starten noch anhalten. Das geht bei anderen PIC's, aber auch nicht bei allen.

Für deine 5Sekunden würde ich das MSB regelmäßig prüfen und wenn es gesetzt ist, eine Variable hochzählen, um auf die gewünschte Dauer zu kommen. In der Zwischenzeit kann der PIC noch rund 120 Befehle abarbeiten, damit solltest du die vorhandenen Rescourcen sinnvoll nutzen können.

Gruß
Stefan
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.032 Sekunden mit 18 Zugriffen.
 
Top! Top!