Gefunden für avr timer overflow - Zum Elektronik Forum





1 - PID-Regler zur Drehzahlsteuerung eines Motors -- PID-Regler zur Drehzahlsteuerung eines Motors




Ersatzteile bestellen
  Also, ich war wohl hauptsächlich zu ungeduldig, denn die obigen Schritte habe ich schon angewendet gehabt (kenne ich vom Quadcopter tunen). Aber nach einigem herumprobieren funktioniert es jetzt ganz gut, außer bei recht niedrigen Drehzahlen.

Das schwierigste war fast, zuerst überhaupt die richtigen Größenordnungen der PID-Werte zu finden. Es hat natürlich auch nicht geholfen, dass ich in seltenen Fällen einen Overflow in der Berechnung hatte. Ich wollte möglichst mit Integer- bzw. Fixpunkt-Arithmetik arbeiten, da ich Floating-Point-Zahlen auf einem 8bit-AVR schon fast pervers finde , habe es im Endeffekt aber doch auf Fließkomma umgestellt.

Was anderes als numerische Differentiation ist auf einem AVR glaube ich auch nicht möglich. Die Messgröße sollte aber so gut wie rauschfrei sein, da ich die Zeit zwischen zwei Tachopulsen auf 0,5µs (2MHz-Timer) genau messe (davon ausgehend, dass der Interrupt nicht grade durch einen anderen blockiert ist), und daraus auf UPM umrechne (mit 100Hz außer es ist in den letzten 10ms kein einziger Tachopuls aufgetreten, dann wird gerechnet sobald der nächste Puls kommt). Ganz ohne D habe ich auch probiert, aber da schwingt die Steuerung zu stark über.

Eines, was ich hineinpro...
2 - Hilfe:Klartraum-Maske -- Hilfe:Klartraum-Maske
So, ich habe mal ein bisschen was programmiert. Ich habe mich
dann doch für den Attiny13A entschieden, weil sich bei dem
der Watchdog einfacher nutzen lässt ( WD-Interrupt statt Reset ).
Der Spannungsbereich ist mit 1.8V..5.5V auch sehr entgegenkommend.

Es werden 2 Ports für die LEDs genutzt. Normalerweise würde das auch
ein Port schaffen, wenn die jeweils relativ hochohmig angebunden werden.

Strombilanz:
Warte 6h auf REM-Phase 4.5µA
Led-Blinkend mit Watchdog (1800ms*4.5µA + 200ms * 5mA)/2s = ~ 500µA )*
Power-Down-Mode nach REM-Blinken 120nA

Betrieb mit einer CR2032, die grob über 200mAh verfügen sollte (das
anfängliche 3x-Blinken als Start-Feedback vernachlässige ich mal) :

6.0h Warten auf REM 4.50uA = 270 µAh
0.5h aktiv blinken (0.2/1.8) 500.00µA = 250 µAh
17.5h Warten auf nächste Nacht 0.12µA= 2.1µAh
= 522µAh Tagesverbrauch
Bei 200mAh sind das -> 383 Tage, die Batterie hält also ein gutes
Jahr bei täglicher Anwendung.

Wenn es nicht angewendet wird, ist der Idle Strom so gering, dass
die Batterie in diesem Zustand theoretisch 190 Jahre hält. Es lohnt
sich also nicht mehr, in diesem Bereich zu optimieren oder sich was
an...








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 - ATMEGA32 liest nur 0xFF aus dem EEPROM -- ATMEGA32 liest nur 0xFF aus dem EEPROM
Hallo!

Irgendwas stimmt nicht mit meinem Quellcode mit Assembler.

Ich kann ohne Probleme verschiedene I²C-ICs steuern und auslesen, nur beim DS1307 und sogar beim 24C04 bzw SDA2516 liest der AVR nur 0xFF.

Ich habe verschiedene Tests gemacht um den Fehler einzukreisen.
Zuerst ein Schreibtestprogramm für den TDA6200:


Code :
;*********************************************************************************************
;* *
;* Test...
5 - Drehgeber mit Bascom auslesen und PWM regeln -- Drehgeber mit Bascom auslesen und PWM regeln
Hallöchen.

ich bin jetzt in meinem roland walter buch so weit, daß ich bei der PWM bin. jetzt würde ich gerne, statt mit avr Term (ein Terminal programm) das ganze mit nem Drehgeber machen.

Es geht darum mit dem Terminal programm die Helligkeit der PWM-Led zu regeln. da ich aber kein Nullmodemkabel habe würde ich das Gerne mit nem
Drehregler machen.
Ich habe auch schon bei der Bascom hilfe Hilfe gefunden, aber ich schaff es glaube ich nicht:

- Ihn auszulesen
- Den ausgelesenen wert zu verarbeiten.(also den Timerwert um 1 zu
vergrößern bei rechtsdrehung, oder den Timerwert um 1 zu verkleinern
bei linksdrehung

Ist jemand so nett und würde mir unter die Arme greifen?

Der Drecksack

Hier mal das original Listing, daß ich auf Drehgeber abändern möchte


'0604.BAS: Einfacher D/A-Wandler, LED-Helligkeitssteuerung
'Hardware: Nullmodemkabel zum PC, Pin PD5 mit LED verbinden
'----------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 3686400 'Quarz: 3,6864 MHz
$baud = 9600 '9600 Baud
6 - DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich? -- DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich?

Die Timer-counter laufen von selbst, haben entweder 8 oder 16 bit und werden vom Prozessortakt über einen programmierbaren Vorteiler oder extern übner einen Eingang getaktet. Wenn du nichts resettest überläuft der Zähler einfach beim Maximalwert und beginnt wieder von 0. Resetten heisst ganz einfach das Zählerregister mit irgendeinem Startwert überschreiben.

Damit die Timer so laufen wie man es braucht müssen sie passend initialisiert werden. Welche Register genau welche Daten bekommen sollen steht ausführlich im Datenblatt das gerne vollständig gelesen werden möchte.

Interruptroutinen sind kleine Programmteile die aufgrund vordefinierter Ereignisse sofort ausgeführt werden wenn ebendieses Ereignis auftritt. Die Ausführung des restlichen Programms wird dabei so lange unterbrochen. In einem AVR gibt es eine Vielzahl von Interruptquellen, wie z.B. Timer overflow(Timer überläuft Maximalwert), timer compare match (timer-zähler erreicht vordefinierten Wert), Pin change interrupt(Zustand eines I/O- Pins ändert sich) und noch sehr viele mehr. Interrupts sind immer dann sehr nützlich wenn man zu einem bestimmten Zeitpunkt oder nach einem bestimmten Ereignis etwas tun muss, aber nicht dauernd durch Statusabfragen Zeit Rechenzeit verheizen möchte/darf. ...
7 - Hilfe AVR mit I2C software AVR300 -- Hilfe AVR mit I2C software AVR300
also gut dan poste ich halt das avr300.asm

;**** A P P L I C A T I O N N O T E A V R 3 0 0 ************************
;*
;* Title : I2C (Single) Master Implementation
;* Version : 1.0 (BETA)
;* Last updated : 97.08.27
;* Target : AT90Sxxxx (any AVR device)
;*
;* Support email : avr@atmel.com
;*
;* DESCRIPTION
;* Basic routines for communicating with I2C slave devices. This
;* single master implementation is limited to one bus master on the
;* I2C bus. Most applications do not need the multimaster ability
;* the I2C bus provides. A single master implementation uses, by far,
;* less resources and is less XTAL frequency dependent.
;*
;* Some features :
;* * All interrupts are free, and can be used for other activities.
;* * Supports normal and fast mode.
;* * Supports both 7-bit and 10-bit addressing.
;* * Supports the entire AVR microcontroller family.
;*
;* Main I2C functions :
;* 'i2c_start' - Issues a start condition and sends address
;* and transfer direction.
;* 'i2c_rep_start' - Issues a repeated start condition and sends
;* address and transfer dire...

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


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 : 192919798   Heute : 5250    Gestern : 11413    Online : 235        8.9.2026    12:25
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ----
xcvb ycvb
0.0240838527679