Gefunden für 16bit timer atmega32 - Zum Elektronik Forum





1 - Tastenabfrage in C Atmega32 -- Tastenabfrage in C Atmega32




Ersatzteile bestellen
  @Perl
Hab letztendlich doch noch eine Erklärung, sogar vom Autor persönlich verfasst, im Netz gefunden.
Für mich als Anfänger wäre es fast unmöglich diese Notation zu verstehen.
Es handelt sich um einen CAST, bzw zwei CASTS. Der Ausdruck rechts wird erst in eine 16bit unsigned int und dann in eine 8bit unsigned int gewandelt. Timer 0 hat nur 8bit.
Nach der Umwandlung wird der Wert ins TCNT0 Register geladen (hier 6).
Ich werde die Routine so abändern, daß ich vorher noch den Wert des Registers TCNT0 auslese und dann den Rest zuaddiere.
Das hilft mir jetzt weiter.
LG
Peterschrott




...
2 - Selbstbau eines Lichtweckers mit digitaler Steuerung -- Selbstbau eines Lichtweckers mit digitaler Steuerung
Schönen guten Tag

Ich habe bei meinem Projekt schon gute Fortschritte erzielt.
Im Moment beschäftige ich mich schon mit PWM und den Timern.
Dazu habe ich noch eine Frage:
Im Tutorial von mikrocontroller.net wird beim Kapitel über PWM ( http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM ) mit dem timer1 im Modus 14 gearbeitet.
Zu Übungszwecken wollte ich den Timer nach dem Vorbild aus dem Kapitel in den 10Bit-Modus (Modus 7) versetzen.
Dies gelang zunächst nicht: Der Ausgang schaltete einfach nicht um.
Da ich nicht mehr weiter wusste wollte ich mich damit schon an euch wenden und habe dazu den Code etwas aufgeräumt und ausführlicher kommentiert. Das verwunderliche war: danach hat es funktioniert, obwohl ich nichts inhaltliches an dem Code geändert habe.
Meine Vermutung war, dass man die Bits zur Timer-Konfiguration in einer bestimmten Reihenfolge schreiben muss (damit meine ich nicht, dass man in 16Bit-Registern zuerst das High- und dann das Low-Byte schreibt).
Um sicher zu gehen wollte ich da lieber nochmal nachfragen ob das wirklich so ist, und wenn ja, in welcher Reihenfolge man die Bi...








3 - Atmega Fahrradtacho -- Atmega Fahrradtacho
Okay hier der Code:
Er gibt nur die Drehzahl aus was aber leicht in km/h umzurechnen wäre.

Code :
// Prozessor Taktfrequenz einstellen sofern es nicht eine Vorgabe
// beim Aufruf des C Compilers gab.

#ifndef F_CPU
#define F_CPU 4000000
#endif


#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#include <stdlib.h>
#include "lcd-routines.h"

#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif


volatile unsigned char NrO...
4 - PWM für 4pol-Lüfter -- PWM für 4pol-Lüfter
... bei 40 pins und mit 3 Timern. Das bedeutet weit über die Hälfte bleibt unbeschaltet. Und da alle Timer für die PWM drauf gehen würden kann ich mit dem nicht mal die Drehzahlerfassung erledigen.

Mein aktueller Plan sieht so aus, dass ich einen ATmega8 als Hauptlüftersteuerung nehme, den ich per I2C kontrolliere. Dieser stellt bereits für 2 Lüfter die PWM-Ausgänge zur Verfügung und erledigt auch die Drehzahlerfassung. Zusätzlich werden pro zwei PWM-Ausgänge ein ATtiny24 (da welze ich noch Datenblätter) verwendet, die vom ATmega8 per SPI angesteuert werden.
Andere Only-PWM-Chips als den DS1050 habe ich nicht gefunden und wenn man die Wahl zwischen 5bit und ca. 16bit hat...
Ihr hört auf jeden Fall noch von mir... ...
5 - Wo den C-Befehlssatz (gcc/WinAVR) für ATMega(8) finden? -- Wo den C-Befehlssatz (gcc/WinAVR) für ATMega(8) finden?

Zitat : Sehe ich anders.

Ok, aber woher weißt du dann wie man richtig 16bit Register ausliest, den Timer richtig konfiguriert oder die serielle Schnittstelle richtig parametriert???? Was ist mit Fusebits setzen????

Bitte erklären! Danke

meg

...
6 - Empfehlung Mikrocontroller -- Empfehlung Mikrocontroller
Hm. an einen 18Fxxx Typ habe ich auch schon gedacht, jedoch wäre hier nur das zusätzliche USB-Modul sowie der 8Bit Hardware Multiplikator interessant. Warum allerdings der Herr Sprut die 18Fxxx Serie für einen 16Bit Kerntypen hält erschließt sich mir nicht, denn wie von Microchip angegeben handelt es sich um Mikrocontroller mit 8bit Architecktur und in den verschieden Datenblättern kann man im Block Diagramm eindeutig eine 8Bit ALU erkennen. Es gibt allerdings schon fertige 16Bit Register, welche aus 2x 8Bit bestehen. -> 16Bit Timer, 16Bit Ergebnis der 8Bit Multiplikation usw. .Diese Typen sind aufjedenfall schon mal ein Upgrade.

Das AVR-Projekt klingt recht gut, preislich find ich es schon ordentlich wobei ich das jetzt schlecht einschätzen kann, man hat ja damit viel mehr Möglichkeiten rum zutüffteln ^^.

Wenn ihr noch Tips oder Erfahrungen mit andern Mikrocontrollertypen habt und einfach posten.


Grüße Peingebrecks ...
7 - Interrupt funktioniert nicht -- Interrupt funktioniert nicht
Timer-Interrupt, und dann in ne Mini-Sprungtabelle, wo der Ausgang getoggelt wird.
Da der Timer höchstens 16Bit groß ist, und der Prescaler auch endlich... musst du eventuell noch ne Zählschleife dazubasteln.
Wenn du ne hinreichend kleine Taktfrequenz hast, und/oder das blinken ziemlich flott sein darf, dann kannst du das auch komplett über den Timer lösen. Das wäre dann quasi ne extrem langsame PWM


[ Diese Nachricht wurde geändert von: Morgoth am 10 Jan 2008 15:50 ]...
8 - PWM beim ATMega 8 -- PWM beim ATMega 8
Hallo Leute,

ich möchte einen Servo mit einem Atmega8 ansteuern. Damit das Ausgangssignal so genau wie möglich ist, wollte ich die Compare Unit vom 16Bit Timer nutzen. Wenn ich das Datenblatt richtig verstanden habe, kann die Unit direkt auf ein Ausgangspin zugreifen und ich wäre nicht mehr Softwareabhängig. (Prozessor läuft mit 1MHz)

Es sollte so ablaufen:
Ich schreibe in OCR1AH / OCR1AL einen Wert. Lösche den Timer (TCNT1H / TCNT1L). Und setze den Ausgang (B1) auf „1“. Wenn der Vergleicher abgelaufen ist, soll er den Ausgang wieder auf „0“ setzen (nach 1,5ms). Nach etwa 20ms (dieser Teil des Programms ist noch nicht fertig) soll wieder alles von vorn beginnen.
Im AVR-Studio funktionert es, aber am Prozessorausgang liegt immer „0“ an!
Besser gesagt: ich habe es so geschrieben, dass es im AVR-Studio läuft!

Das die Lösung im Datenblatt liegen könnte, weiß ich! Es sind nur eine Menge Seiten und alle auf Englisch. Falls mir also jemand direkt eine Lösung vorschlagen kann, wäre das sehr hilfreich.

Mein Testprogramm:

.NOLIST
.INCLUDE "C:\m008def.inc"
.LIST

.def Temp1 = R16
.def Temp2 = R17
.def Data = ...
9 - Frequenzgenerator 0.5Hz - 4.2khz Ua=5V -- Frequenzgenerator 0.5Hz - 4.2khz Ua=5V

Zitat :
Esko hat am 31 Mai 2007 17:09 geschrieben :
Achsooo es geht nicht ums erzeugen des Signals sondern ums einlesen.
Das ganze wäre doch billiger (und volldigital) über einen Inkrementalgeber und eine Anzeige realisiert.

Zitat : Der Timerausgang kann bis zu 16Bit Auflösung haben, das sind sicher genug.
Der OP will doch nur ein Rechtecksignal. Dafür ist die Auflösung doch wurscht.


Ähm ...
billiger als ca. 3 Euro? (1.50 für ATtiny2313 und ca. 1.50 für Poti)

Die 16 Bit sind der max. Zählerumfang (=Teilerverhältnis) für den Timer...
...
10 - Stoppuhr -- Stoppuhr
Hi, ich will eine Stoppuhr bauen

Ich benutze einen ATMega16. Um die Zeit zu messen gehe ich fogendermassen vor:

1 Versuch mit dem 8-Bit Timer
Beim vergleich mit einem Funkwecker stellte sich heraus dass die µC Uhr pro Tag entweder 2,5h vor oder 1h nach lief. Das war untragbar.

2.Versuch mit dem 16Bit Timer

Die besten ergebnisse habe ich erziehlt wenn ich den µC auf 8MHz laufen lasse. Den Timer habe ich dann mit einem Prescaler von 64 hochzählen lassen. Wenn der Timer einen bestimmten wert erreicht hat (genauer gesagt der TCNT1 hat den OCR1A erreicht), wurde ein interrupt ausgelöst. In diesem Interrupt wird nichts weiter getan als eine Variable zu erhöhen und den Timer wieder von vorn laufen zu lassen. (Das ganze gebe ich auf einem LCD aus)

CPU_f=8MHz
Prescaler=64
Timer_f=125000Hz
Overflowwert (OCR1A)=62500
Mit diesen Einstellungen würde der Timer alle 0,000008s eins hochzählen, bis er 62500 erreicht hat, dann wird ein Inerrupt ausgelöst.
Das bedeutet, das Interrupt wird alle 0,000008s*62500=0,5s ausgeführt und Inkrementiert eine Variable, die die Halben Sekunden zählt (bei mir "_TIMER_halfsec_mask" genannt).
So wollte ich die Zeit Messen (bzw. Zählen)

Leider funktionierte das nicht ausreic...
11 - 16 bit über RS232 -- 16 bit über RS232
16bit Werte (vom Timer, der als AD Wandler verwendet wird) zum PC übertragen, der die Werte weiterverarbeitet....

Nicht gefunden ? Eventuell gibt es im Elektroforum Transistornet.de für 16bit Timer Atmega32 eine Antwort
Im transitornet gefunden: 16bit Timer Atmega32


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 9 Beiträge im Durchschnitt pro Tag       heute wurden bisher 2 Beiträge verfasst
© x sparkkelsputz        Besucher : 192919788   Heute : 5240    Gestern : 11413    Online : 380        8.9.2026    12:23
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ----
xcvb ycvb
0.0397610664368