Gefunden für adc asm - Zum Elektronik Forum





1 - AVR-Assemblercode von Atmega88 auf -8 umstricken -- AVR-Assemblercode von Atmega88 auf -8 umstricken




Ersatzteile bestellen
  Hi!
Ich möchte mir ein Elektorprojekt nachbauen.
Dafür wird ein Atmega88 verwendet, ich habe aber nur den Atmega8 hier.
Ich habe schon etwas über die Unterschiede gefunden, blicke aber trotzdem nicht ganz durch.
http://www.gaw.ru/pdf/Atmel/app/avr/AVR094.pdf
Z.B. meckert der Compiler über "out TCCR0A,r16"
Ist irgendwie klar, der Atmega8 hat ja nur einen Ausgang vom zweiten Timer etc.
Aber wie schreibe ich das um?
Geht das überhaupt, oder war der Atmega88 _statt_ dem 8er nötig?
Wäre schön, wenn mir jemand weiterhelfen würde

Code :
2 - Fehler im Programm? -- Fehler im Programm?
Hallo Leute,

in Sachen Mikrocontroller habe ich ein merkwürdiges Problem
welches ich absolut nicht nachvollziehen kann.

Heute habe ich den AD Wandler Teil hinzugefügt aber die Display
Ansteurungsfunktionierte einwandfrei und die Umrechnung auch.

Nur es scheint ein Problem bei den AD Wandler geben.
Im ersten Moment denkt man sich das alles ok ist.

Der PCO Eingang scheint soweit zu funktionieren da der maximal
Wert auf den Display 2.42A bei voller ADC Spannung ist ( sollte eigentlich
2.5A sein ) aber beim PC1 Eingang zeigt sich auf dem Display nut
misst an ( sollte eigentlich etwa 25V abzulesen sein aber es stehen maximal 12.25V bei aufgedrehten Poti) und zwischendruch je nach Stand
ist es mal total Sprunghaft.

Die Displayaktualisierung stimmt auch nicht da nur so circa alle 5
Sekunden die Werte auf dem Display verändert werden.

Nach einiger Zeit hat das Display keine Anzeige mehr ( startet wohl )
und zeigt wieder das selbe an.

Ab und zu mal habe ich dann 4 mal meinen Spannungswert auf dem Display
angezeigt und wenn ich die Spannung für die Strommessung bewege
ändern sich die Anzeige werte für die Spannung und das sogar genauso
wie es eigentlich sein sollte ( etwa 4 mal in...








3 - Real Time Clock IC an AVR -- Real Time Clock IC an AVR
So hier ist gleich das ganze Programm. Das deswegen, weil ohne die Equates die ganzen Operationen unverständlichen wären. Die I2C Routinen sind nur die zwei kleinen Teile nach der Interruptroutine. Der Rest ist eine kleine Steuerung für eine Gabelstapler an dem ein paar Funktionen gegeneinander verriegelt werden mußten. Außerdem sind noch ein paar Spielereien wir Blinklicht und Stundenzähler mit dabei (der leider aber nur im seriellen EEPROM steht und nicht ausgelesen werden kann ). Das Projekt war leider zu früh zu Ende!

Aber ansonsten kann ein Anfänger viele Sachen darin finden, neben der I2C Kommunikation ist eine einfache Interruptbehandlung für einen Timerinterrupt und die ADC-Abfrage vorhanden, genauso wie die in diesem Thread schon angesprochenene Zeitverzögerungen oder weiter unten dann ganz normale Bitverknüpfungen.

Code :
4 - Rechteckgenerator mit ATmega8 \"verschluckt sich\" -- Rechteckgenerator mit ATmega8 \verschluckt sich\
So, zweiter Versuch...

[EDIT]
Die Round-Anweisung scheint das CLI zu verursachen.
Der Bascom-Code

Code :
$regfile = "m8def.dat"
$crystal = 1000000
Dim Singlewert As Single

Do

Singlewert = Round(singlewert)

Loop

End



erzeugt den ASM-Code:

5 - Messsignalauswertung im ADU Atmega32 -- Messsignalauswertung im ADU Atmega32

Zitat :
Bitte um reichlich antworten und hilfen hierzu.


Du musst doch Vorkenntnisse in AVR-Assembler haben, wenn man dich beauftragt, sowas zu programmieren.
Habt ihr das in der Schule gelernt? Wenn nein, warum dann der Aufwand?

---
@Kleinspannung
ADU steht für Analog-zu-Digital-Umwandler, ich hätte erwartet, dass du da von selbst draufkommst.
ADC ist das gleiche und Deutsche Bezeichnungen haben was .

zum Thema:
wie von Kleinspannung angesprochen gibt es mehrere Modi des ADU ( ) und für welche man sich entscheidet hängt maßgeblich von der gewünschten Abtastfreuqnez ab.

Ich rate zu keiner sehr hohen Abtastfrequenz, sondern von vielleicht 16 Abtastungen pro Sekunde und dann der Bildung eines Mittelwertes. Die Auflösung des ADU sollte 10 Bit sein, dann wird das schon sehr genau. Genaugenommen kann man auf die Mitte...
6 - ATMega 32 INT2 löst nicht aus -- ATMega 32 INT2 löst nicht aus
Hallo!

Ich habe hier eine Schaltung zusammengebaut mit der ich eine PC AT Tastatur an einen ATMega32 anschließen möchte. Jetzt wollte ich erstmal den INT2 einschalten und mir die Flanken des Taktsignals zählen lassen. Jedoch löst das Clock-Signal der Tastatur am INT2 keinen Interrupt aus.

Schaltung ist wie folgt:

Am Controller hängt ein LC-Display an Port A, das funktioniert soweit einwandfrei.

An PORT B hängt eine Lochrasterplatine mit der Anschlussbuchse für die Tastatur und 2 LEDs und zwar folgenderweise:

PB7 = LED rot
PB6 = LED grün
PB5 = NC
PB4 = NC
PB3 = NC
PB2 = KEYBOARD Clock = INT2
PB1 = NC
PB0 = KEYBOARD Data

Ich habe jehweils einen 10kOhm Pullupwiderstand an KEYBOARD Data und KEYBOARD Clock.
Schaut auch sehr gut aus auf dem Oszilloskop. Hab auch direkt am Controllerpin PIN3 gemessen, das Clocksignal kommt bis zum µC durch.

Jetzt wollte ich den INT2 einstellen, hab mich da auch soweit ans Datenblatt gehalten.

MCUCSR Bit6 = 0 -> INT2 löst bei fallender Flanke aus
GICR Bit5 = 1 -> INT2 aktiviert
SEI Befehl um I-Flag im SREG zu setzen hab ich verwendet.
In der Interrupttabelle steht rjmp EXT_INT2 die sprungmarke existiert auch und wird mir RETI beend...
7 - AVR und PIC??? -- AVR und PIC???

Zitat : ...außerdem konnt ichs ja schon.


Und dann sind dir Interrupts unbekannt?

Na, macht nix .


Zitat :
soweit ich das richtig gelesen hab ist der unterschied zwischen dem ATmega8 und dem ATmega16 die taktfrequenz oder? wie siehts mit dem speicher aus? reich dann der 8er (ich geh mal davon aus das er weniger hat als der 16ner) für den anfang mit tastern led eventuell display etc. aus?


Sie können, ja nach Version des Chips, mit versch. Taktfrequenzen laufen, die sind als Suf...
8 - ATmega8535 AD WANDLER -- ATmega8535 AD WANDLER

Hallo zusammen,

Ich versuche seit einiger Zeit, den AD Wandler zum Laufen zu bekommen.
Ein einem Pin des A Ports ist ein Drucksensor angeschlossen, sobald ich den Atmel starte wird nur einmal eine AD Konvertierung durchgeführt, obwohl die routine sich in einer Schleife befindet. Ich muss reset ausführen damit die Konvertierung erneut ausgeführt wird also wieder nur einmal. Es ist so als ob der AD Wandler nach der ersten konvertierung abgeschaltet wird. Die Flags sind richtig gesetzt... Der MC ist in Ordnung, da er andere aufgaben weiter bearbeitet.

ich benutze folgenden Code.

int read_adc(char channel)
{
int result = 0;
DDRA &= ~ (1<<channel); // Pin als input
PORTA &= ~ (1<<channel); // Alle Pullups aus.
ADMUX = 0xC0; // interne Refernzspannung, rechts Ausrichtung
ADMUX |= channel; // Kanal wählen
asm("nop"); //kurze Pause
ADCSRA=(1<<ADPS2)+(1<<ADPS1)+(1<<ADPS0)+(1<<ADEN); //Prescale Faktor, ADC an
asm("nop");
ADCSRA |= (1 << ADSC); // Beginne mit der Konvertierung
while ( (ADCSRA & (1<<ADSC)) != 0){} //Warten bis konvertierung beendet
asm("nop");
result= ADCL; // Ergebnis die letzten 8 BIT
return resul...
9 - ATTiny26 Analogeingänge einlesen -- ATTiny26 Analogeingänge einlesen

Das Thema wird oft im Internet gefunden, allerdings nur mit HEX- und
C-Beispielen. Ich suche ein Beispiel für den Assembler. Je nach den
Schalterstatus möchte ich einzeln ADC7, 8 und 9 einlesen und digital an
PORT-A ausgeben. LL (lauflicht) ist ein anderes Programm, das ich schon fertig habe,
und eingebunden wird.
Das einlesen der Schalter ist kein Problem, nur bei mir wird´s mit den
Analogeneingängen nix. Wie liest man am besten die Analogen Eingänge
ein?






...
10 - PIC programmieren mit PICALLW -- PIC programmieren mit PICALLW
Ich behandel nur die PIC12F und PIC16F typen:

Erst eine kleine Übersicht über die PIC - Architektur:

Die PICs besitzen die sogenannte Harvard (RISC) Architektur,die besagt, daß die Speicherbereiche für Daten und Programme getrennt sind. (im gegensatz zur vonNeumann -Architektur) Das bedeutet für uns praktisch: Wir haben den Flash Programmspeicher, in den wir unser Programm speichern und einen SRAM Bereich für Daten.Dieser SRAM bereich ist in sogenannte Bänke aufgeteilt, weil wir nur 128 Speicherstellen dieses Bereiches direkt ansprechen können. Die Bank wird durch Bits in dem sog. STATUS -Register eingestellt.Jetzt wird es etwas kompliziert: Im SRAM bereich befindet sich nicht nur frei zugänglicher Speicher,den wir nutzen können wir wir wollen,sondern auch alle Register,die zum steuern der Hardware benötigt werden.Wieviel SRAM der jeweilige PIC hat, und wo dieser Speicher im SRAM bereich liegt steht im Datenblatt.(bei den meisten PICs liegt z.b von 20h bis 7Fh frei nutzbarer Speicher). Die meisten Befehle benötigen eine SRAM adresse (auch File geannt) und eine Richtung.Wir haben noch ein besonderes W Register,daß in keinem Speicherbereich liegt und als Akkumulator dient.
Nehmen wir ein beispiel:

ADDWF 20h,W
Dieser Befehl addiert die Werte aus...
11 - Countdown Uhr -- Countdown Uhr
Das ASM - Beispiel:

.include tutorial/uart/2313def.inc ;Pfad zur Include-Datei ggf. anpassen

.def temp = r18
.def counter = r17

.def fbin = r19 ;Ausgangswert
.def tBCDL = r19 ;Obere Dezimalstelle
.def tBCDH = r20 ;Untere Dezimalstelle

.org 0000

rjmp reset ; RESET =$001 ;Reset
RETI ; INT0addr=$001 ;External Interrupt0 Vector Address
RETI ; INT1addr=$002 ;External Interrupt1 Vector Address
RETI ; ICP1addr=$003 ;Input Capture1 Interrupt Vector Address
RETI ; OC1Aaddr=$004 ;Output Compare1A Interrupt Vector Address
rjmp check ; OVF1addr=$005 ;Overflow1 Interrupt Vector Address
RETI ; OVF0addr=$006 ;Overflow0 Interrupt Vector Address
RETI ; SPIaddr =$007 ;SPI Interrupt Vector Address
RETI ; URXCaddr=$008 ;UART Receive Complete Interrupt Vector Address
RETI ; UDREaddr=$009 ;UART Data Register Empty Interrupt Vector Address
RETI ; UTXCaddr=$00a ;UART Transmit Complete Interrupt Vector Address
RETI ; ADCCaddr =$00b ;ADC Interrupt Vector Address
RETI ; ERDYaddr =$00c ;EEPROM Interrupt Vector Address
RETI ; ACIaddr =$00d ;Analog Comparator Interrupt Vector Address

reset:

;Stackpointer initialisieren
ldi temp, RAMEND
out SPL, temp

Nicht gefunden ? Eventuell gibt es im Elektroforum Transistornet.de für Adc Asm eine Antwort
Im transitornet gefunden: Adc Asm


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 7 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 192463656   Heute : 1313    Gestern : 4999    Online : 178        1.8.2026    7:01
0 Besucher in den letzten 60 Sekunden         ---- logout ----su ---- logout ----
xcvb ycvb
0.0627319812775