-
Thread
Atmega8 als Servo Switch
80 81 ld r24, Z cc: 8b bb out 0x1b, r24 ; 27 besteht. [C] #include <avr/io.h> #include <avr/interrupt.h> #define SERVOPORT PORTA unsigned char Daten[200]; unsigned int ServoUp; ISR( TIMER1_COMPA_vect ) { ServoUp++; if ( ServoUp == 1000U ) {
ganz gemütlich Stück für Stück machen. |-|__________ Servo1 ___|-|________ Servo2 usw. Beim Einlesen ebenfalls, die kommen nacheinander.
-
Thread
Taster mit externe Interrupt ansteuern
so vorgestellt: ich mache ein Spannungsquelle mit mehre Ausgangsports. Mit 2 Taster kann ich die Port wählen und mit 2 andere Taster kann ich dann die auszugebende Spannung ändern (hoch und runter). Gruß, Nam
einfacher EXOR-Befehl. http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Peter
-
Thread
Verbesserungsvorschläge gesucht
memory-Element zuzugreifen (ich setze mehrere unterschiedliche Elemente über einen Multiplexer an den out-port, bzw. in-port, brauche also die Adressen). >> habe es geschafft zu reduzieren, indem ich tmp vergrößert und wie ein > Jezt hast du aber nicht mehr dein Forderung > 'so the asynchronous read never
auch so gemacht, dass du eine bestimmte Reihenfolge > einhalten mußt (z.B. bei den 16-Bit-Timern des AVR). Yepp - das wusste ich z.B. auch von der AVR-ADC-Schnittstelle und wollte etwas ähnliches realisieren. > Eine 'variable' ist nur von begin bis end des Prozesses gültig! D.h. dir > geht die Funktionalität
-
Thread
Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain
=PORTE -DSTX=PE1 -DSRX_PORT=PORTE -DSRX=PE0 added/bootload.S -o bootload.o avr-gcc -c -Wa,-adhlns=stub.lst -mmcu=atmega2560 -DF_CPU=16000000 -I . -I ./added -I ./converted -I/usr/local/avr/include -ffreestanding
-DSTX_PORT=PORTD -DSTX=PD1 -DSRX_PORT=PORT D -DSRX=PD0 added/bootload.S -o bootload.o avr-gcc -c -Wa,-adhlns=stub.lst -mmcu=atmega32 -DF_CPU=14745600 -I . -I ./added -I ./converted -I/usr/local/avr/include
-
Thread
PIC Port Pins namen geben und strukturieren
wieder verwenden, will was umändern und es fällt mir auf, uff, da muss man sich ja erst wieder einlesen. Also hab ich mir gleich gedacht, ich strukturier die Bezeichnungen meiner Portpins neu, mit denen ich arbeite. Problem diesmal ist, dass eben an einem Port nicht nur mein LCD (im 4 Bit Mode) hängt
sind dann die Zugriffe nicht mehr atomar, d.h. schreibt ein Interrupt auf andere Pins des gleichen Ports, dann krachts. Peter
-
Thread
Einführung in Octal 3-State Noninverting Transparent Latch gesucht
Kaffeesatzraten. Wenn er aber z.B. das setzen der Portdaten und den Wechsel der LE Leitung auf out PORT,DATEN sbi PORT,LE cli PORT,LE zusammenoptimiert, wird es dem Kram zu schnell sein. Gruß aus Berlin Michael
BasCom ja auch geben... Die Ausgabe ist ja immer identisch: 8Bit Muster zerlegen in 2 Bit für PortB und 6 Bit für PortD Daten von PortB einlesen, die beiden genutzen Bits auf 0, die neuen mit oder dazu und raus. Das gleiche für Port D. Hauptschleife liest die Daten aus einer Tabelle und schickt
-
Thread
Probleme mit mehr als sechs DS18S20 am ATMEGA32
dass der Port-Pin mit so vielen DS18S20 nicht klar kommt? Gruß Holger
draht abgeschlossen mit > 30m leitung ohne probleme. http://birne.altmuehlnet.de/hp/px5/logger/avr.php mfg orfix
-
Thread
Rechteck-Signal pollen (ohne Timer u. Interrupt)
wie ich möglichst genau die Anzahl der Pulse/s auswerten/ausrechnen kann? Das ganze ist für das Einlesen von Tachosignalen gedacht. Danke+Gruß Bronko
Sachen ein und Du willst sie nicht nutzen. Die AVRs haben z.B. Pin-Change-Interrupts auf vielen Ports. Damit könntest Du z.B. 8..24 Tachosignale einlesen, auf 0,01Hz genau und trotzdem würde sich die CPU nur langweilen. Eine Frequenz von 0Hz kann aber keiner messen, Du mußt schon einen realen
-
Thread
µCke Microcontroller Mücke (Atmel Tiny13)
Mal eine kurze Frage: Die Mücke erzeugt das Tonsignal ja nun eigenständig..., aber, ...mit welchem AVR könnte ich z.B. das Miauen meiner Katze, welches ich vorher aufnehme, rippe und als mp3 abspeichere, einlesen und per Zufallsgenerator ca. alle 20 Min ausgeben?
eine kurze Frage: > Die Mücke erzeugt das Tonsignal ja nun eigenständig..., aber, > ...mit welchem AVR könnte ich z.B. das Miauen meiner Katze, > welches ich vorher aufnehme, rippe und als mp3 abspeichere, > einlesen und per Zufallsgenerator ca. alle 20 Min ausgeben? Das hat nix mit diesem Thread
-
Thread
Nötige Elko-Kapazität berechnen
wenns für dich zum Basteln ist, kannst du es auch versuchen mehr aus dem USB Port zu holen (Wobei die Spannung sicher <4,2V liegen wird). Ansonsten könntest du auch zwei USB Ports nehmen.
Wow! Hier gehts ja los, ist ja super! @Kondensator: "500mA liefert ein USB-Port (laut Spezifikation) übrigens nur an angemeldete Geräte..." Das ist kein Problem, das läuft über einen FTDI-Chip, der meldet das Gerät an und schaltet erst danach den AVR ein. Zum Thermodrucker
-
Thread
Wieder mal Tastenabfrage geht das auch so?
optimaler. Aber dennoch gut auch sowas als Idee zu haben. (Ich programmiere nur Assembler mit AVR Studio)
ob einfach nur die normale Aktion wiederholt wird. Sollten die Taster mal nicht alle an einem Port hängen, so kann man auch beide Ports (in Temp-Register) einlesen und ein paar Bits mittels BST/BLD ins zu verwendende Register kopieren. Dieser Overhead fällt bei Flash-Verbrauch und Prozessorbelastung
-
Thread
port brav nach c Standard setzen
, bit, invert) \ PORT##port #define __IO_SET(port, bit, invert, state) \ if ( (invert) ^ ((state) ? 1 : 0) \ PORT##port |= _BV(PORT##bit); \ else \ PORT##port &= ~_BV(PORT##bit); \ }
Befehl zu deiner Funktion. Wirklich effektiv ist das nicht. [c] #define LED_PIN 3 // Pin 3 an Port x #define SET_BIT( BIT_ , PORT_) \ PORT_ = (PORT_ | (1 << BIT_)) void main (void) { SET_BIT(LED_PIN,PORTB); } [/c] Und jetzt die Quizfrage: Wieviel Code wird wohl hier erzeugt? ;-)
-
Thread
Präprozessor verschachteln
komplexen, schwer durchschaubaren Makros. Die Portzuweisungen für's jeweilige Projekt sind in ports.h: [c] #include <avr/io.h> #include "avr-port-macros.h" #include "avr-port-enum.h" enum { PORT_POWER = PORTD_6, PORT_DREHTAST = PORTB_3, // MOSI PORT_DREHA = PORTB_0, PORT_DREHB = PORTD_7, PORT_DAC_CS = PORTD_2, // 0=Enable PORT_DAC_AB = PORTD_3, // 0=A, 1=B ... [/c] Den Makro-Wahn findest du in avr-port-macros.h und avr-port-enum.h in http
-
Thread
Analoge Ports auslesen
kann mir jemand helfen. Ich suche ein Programmbeispiel in > Assembler mit dem ich mehrere Analoge Ports hintereinander auslesen > kann. Was ist ein 'analoger Port'. Auf welchem Prozessor?
Hallo, ok ich nenne die Ports in Zukunft ADC! Soweit so gut, wann weiß ich denn zu welchem Zeitpunkt die Wandlung fertig ist?
-
Thread
Rechteckgenerator Warteschleife
Hier ist das eigentlich gut beschrieben: http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM Du brauchst den MODUS 14. avr
Hier wurde sowas mal gemacht: http://www.avr-asm-tutorial.net/avr_de/rechteckgen/rectgen_m8.html
-
Thread
AVR, 3 analoge Ports nacheinander lesen
Hallo, arbeite mit einem Atmega8 (AVR) und möchte 3 analoge Kanäle nacheinander einlesen. Mit einem Kanal geht das super aber mit mehreren finde ich leider keine Lösung . Interruptverarbeitung wäre bevorzugt. In den Beispielen habe ich
Hallo, mein Problem ist wie ich die ausgelesenen Werte den Ports zuordnen kann. Das ADCH und ADCL Register ist doch Puffer für jeden Port. Könntest du mir ein Beispiel geben ? Danke
-
Thread
Geeignetes controller board gesucht
handeln an dem alle erforderlichen Signale abgegriffen werden können. Die Aufgaben umfassen: -Einlesen von ca. 4 Analogsignalen (min. 10 bit) -Ausgabe von 2 PWM-Signalen -CAN-Bus Interface (Variablen sind "on the fly" zu ändern) -mindestens 8 GPIOs (Einlesen eines 3-Kanal Encoders, Steuern von Leistungselektronik
dksus.dll?Detail&name=EVAL-ADUC7020MKZ-ND]] Um es nochmal auf die requirements zu beziehen: -Einlesen von ca. 4 Analogsignalen (min. 10 bit) -Ausgabe von 2 PWM-Signalen -"""CAN-Bus Interface (Variablen sind "on the fly" zu ändern)"""* -mindestens 8 GPIOs (Einlesen eines 3-Kanal Encoders, Steuern
-
Thread
7-Segmentanzeige über usb ansteuern Gesperrt
oder über einen seriellen/paralellen port?? ist es de einfacher???
assembler ist und bleibt die AVR Sprache!
-
Thread
ATmega128 und LEDs bzw Schalter
; Richtungsregister DDRD als Eingang konfigurieren loop: in r16, PIND ; an Port D anliegende Werte (Taster) nach r16 einlesen out PORTB, r16 ; Inhalt von r16 an Port B ausgeben rjmp loop ; Sprung zu "loop:" -> Endlosschleife [/avrasm] Hier werden
;µC ist der mega128 ldi r16, 0xF0 out DDRD, r16 ; Pins 4-7 am Port D als Ausgang konfigurieren ; Pins 0-3 am Port D als Eingang konfigurieren loop: in r16, PIND ; an Port D anliegende Werte (Taster) nach r16 einlesen
-
Thread
alphanumerische Anzeige Ansteuern
Mikrocontroller machen, irgendwelche Zusatzspeicher braucht man nicht, hat der uC schon drin. Siehe AVR.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
-
Thread
RFM12 868MHz
als wenn ich erst den Port einlesen und dann den Pin ausmaskieren müsste. ;) Ciao, Rainer
Beim Soft-SPI ist es eigentlich prinzipiell merklich langsamer, aber man schafft es schnell, daß 2 Port-Befehle zum setzen/löschen direkt hintereinander geraten. Dann ist der effektive Takt zwar durchaus nur ein paar 100kHz, der Pegelwechsel beider Signale in dem Moment eigentlich 5MHz bei 10MHz AVR-Takr
-
Thread
WINAVR produziert falschen Code
unterschreiben. > Es kommt z.B. häufiger vor, dass Main und Interrupt unterschiedliche > Pins am selben Port benutzen. naja ein Port ist bei mir keine Variable. Bei einem Port gibt es ja extra SetPortBit und ClearPortBit dafür muss man ja den Port nicht erst lesen und dann zurückschreiben. (auch wenn der
SetPortBit und ClearPortBit dafür muss > man ja den Port nicht erst lesen und dann zurückschreiben. (auch wenn > der C Code das vermuten lässt) Und wenn der Port nicht im von SBI/CBI erreichbaren Bereich
-
Thread
Problem beim Einlesen eines Drehgebers
; Alt auf "alten" Zustand setzen in temp, DrehPort ; DrehPort einlesen com temp ; Invertieren -> Bessere Anschaulichkeit andi temp, maske ; Ausmaskieren der Drehgeber Bits mov merker, temp ; Sichern mov merker2, temp
, zahl main: in temp, DrehPort ; DrehPort einlesen com temp ; Invertieren -> Bessere Anschaulichkeit andi temp, maske ; Ausmaskieren der Drehgeber Bits mov merker, temp ; Sichern cp alt, merker
-
Thread
ersatzsteuerung fernbedienung
an den avr anklemmen.
. Da der AVR "weiß" daß er nun grade deise Taste drücken (simulieren) soll, legt er auf der passenden Spalte eine simulierte 0 oder 1 an. Schon denkt sich die FB-Einlese-Elektronik "holla, da ist ja eine 0 oder
-
Thread
AVR32 I/O Geschwindigkeit; MPEG dekodieren
also maximal kann er pro taktzyklus 1 mal schalten ... nur macht der avr dann nichts anderes ... gleiches gilt fürs einlesen, deswegen verstehe ich die frage nicht ganz.
gilt für Bus-basierte Microcontroller, dass man mindestens einen Schreibzugriff benötigt, um den Port zu setzen, und einen weiteren, um ihn wieder zu löschen. Soweit mir bekannt ist, basieren AVR32 MCU auf dem selben Busstandard (AMBA) wie so ziemlich alle ARM basierten MCU. Hier ist es nun mal
-
Thread
8051 Befehl in avr umsetzen
Achtung, Falle. Wenn mich meine Erinnerung nicht trügt, wird auf dem 8051 dieselbe Port-Adresse für Input und Output genutzt. Beim AVR sind das zwei verschiedene (PIN vs. PORT). Darauf musst du bei der Umsetzung auch achten. Gruß, DetlevT
Macht eigentlich keinen großen Unterschied. Mußt halt nur eine 1 schreiben wenn Du einlesen willst. Im Gegenteil. Bei 8051 ist es eben nicht notwendig die Direction des Ports zu deklarieren. Port zur Laufzeit mit FF beschreiben und schon ist er als Eingang definiert. Mach das mal mit
-
Thread
PIC18 -> NUR AN1 Analog sonst alle digital
der PIC18 25K20 das Problem nicht mehr. Alternativ: wenn AN0 ein Eingang ist: Einfach den Pegel einlesen ;-). Gruß H
heisst das entsprechende Register ADxPCFGx Aus Datenblatt PIC24HJ64GP202 bit 12-0 PCFG<12:0>: ADC Port Configuration Control bits 1 = Port pin in Digital mode, port read input enabled, ADC input multiplexer connected to AVSS 0 = Port pin in Analog mode, port read input disabled, ADC samples pin voltage
-
Thread
Logamatic 2107 Schnittstelle
Soweit ich weiß habe ich den externen Quartz genommen. Habe mal das Hex-File und die Fuses aus dem AVR-Studio angehangen. Im Moment ist es so Das an Port C5 die LED nur so lange leuchtet wie Nutzdaten empfangen werden. Beim Polling nicht. Port C4 toggelt immer wenn die Schaltung eine Polling für
Interrupts den Comparator-IRQ zum Starten des Empfangs zu verwenden und dann natürlich anstatt des IO-Ports den Ausgang des Comparators zum Empfang zu verwenden.... und natürlich ggf. den IAR-Code an z.B. gcc (WinAVR) anzupassen.
-
Thread
AVR Timer + ADC
nützlich! Nun habe ich auch selbst ein Problem, an dem ich schon eine Weile grüble: Gegeben ist ein AVR-Board(http://ti.tuwien.ac.at/ecs/teaching/courses/mclu/manuals/atmega16) und ein Erweiterungsboard (http://ti.tuwien.ac.at/ecs/teaching/courses/mclu/manuals/i-o-board), das wir auf der Uni verwenden
zugelegt und möchte nun eine Aufgabe erweitern: Über den ADC möchte ich den Wert von einem Poti einlesen und dann den Wert auf 4 Stk. der 7Segment Anzeigen ausgeben. Nun zu meinen Problemen: Ich rechne den Wert von ADC in 0-5V um, und gebe das auf den Anzeigen aus. Um die einzelnen Stellen bestimmen
-
Thread
Power-down mit Taster
Schalter abfragt damit die LED leuchtet. Das müßte doch den Schalter abfragen ob 0 anliegt. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> #include <stdint.h> #include <avr/sleep.h> int main(void) { DDRB |= (1 << PB1); PORTB |= (1 << PB1); DDRB |= (0 << PB2); PORTB
Kommentare in deinem Programm an, besonders wenn du "exotische" Sachen machst. [C] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> #include <stdint.h> #include <avr/sleep.h> int main(void) { /* The ATtiny24/44/84 system clock can be divided by setting the
-
Thread
UP - DOWN Taster Entprellung mit Timer
wenn hier jemand seinen C Code posten könnte. mfg t3sla PS.: Beide Taster hängen an einem Port (Port D)!
Peter Dannegger schrieb: " Wenn man nicht darüber nachdenkt, dann ist Tasten einlesen schwierig. .... Wenn man aber einmal richtig drüber nachgedacht hat, dann ist Tasten einlesen popel einfach .... " Also wenn man es kann ist es einfach, dann nehme ich das mal als Kompliment.
-
Thread
Mega8: VQC10 LED-Matrix 5x7 Zeitmultiplex - Bestimmte Bits eines unsigned char auf Ports ausgeben
Du kannst die auf den Ports ausgegeben Daten auch wieder einlesen. In deinem Beispiel wären das PINB und PIND. Am Decoder für die Select-Signale solltest du auch unbedingt ein Enable-Signal benutzen. Beim Wechsel der Eingangssignale
Mike schrieb: > Du kannst die auf den Ports ausgegeben Daten auch wieder einlesen. In > deinem Beispiel wären das PINB und PIND. Laut Simulation in AVR-Studio passt der Inhalt der Ports. Ich arbeite über eine lokale Variable um Änderungen
-
Thread
#define Ports
Port einmal etwas einlesen und dann wieder was auslesen muß, also so eine Art Bus. - sbi ist obsolet
[c] #define ADDR_0_PORT PORTB #define ADDR_0_PIN PB5 //A0 #define ADDR_1_PORT PORTB #define ADDR_1_PIN PB3 //A1 #define ADDR_2_PORT PORTD #define ADDR_2_PIN PD6 //A2 #define ENABLE_0_PORT PORTB
-
Thread
AVR-Pin als Eingang+Ausgang beschalten
an euch, hoffe zwar, dass ich da keinen Denkfehler drin hab, aber zu Sicherheit... ;) Will einen AVR-Port zu Testzwecken so beschalten, dass ich ihn sowohl als Ausgang als auch als Eingang nutzen kann ohne ihn kaputt machen zu können. Genauer gesagt, ich will ihn schalten können, aber ebenso auch
Wieso kann ich mir da nen Widerstand sparen, und welchen? Über die sonstige Ansteuerung eines AVR-Ports bin ich im Bilde ;)
-
Thread
Transistor: Forward Transconductance
Der Pin soll ein Eingang sein. Wenn von der Steuerleitung ein Signal kommt will ich eine 0 am Pin einlesen, wenn kein Signal kommt eine 1.
so mache wie im Bild im Anfang und dann wie folgt konfiguriere [c] DDR &= ~(1<<PinNo); // Input PORT &= ~(1<<PinNo); // Kein internen Pull-Up // Einlesen var |= PIN & (1<<PinNo); [/c] und entsprechend häufig einlese, dann kann es sein das durch die Ladezeit die Leitung immernoch als Low interpretiert
-
Thread
Speichinhalte aus Fritzbox lesen und auf LCD-Display darstellen
Mein Vorschlag: (ich kenne die Frizbox nicht; alles nur grobe Ideen) AVR oder ähnliches mit a) einem TCP-Stack plus Ethernet-Interface Dieser kann dann einfache HTTP-GET-Anfragen absetzen, die Antwort analysieren und das Ergebnis auf einem Display (2x20/4x20) ausgeben. b) angeschlossen am seriellen Port der Box (falls das überhaupt klappt) Dieser meldet sich auf der Box an, geht ins zugehörige Menü und liest dort die benötigten Werte aus. Für beide Varianten muss keine Hard- oder Softwareänderung
-
Thread
Bauteil gesucht: 4 Taster zu 3 Port
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Porterweiterung_f.C3.BCr_Eing.C3.A4nge
"Für mich eine Super Lösung mit 2 Benutzten Ports." na, hoffentlich nicht :) Klaus.
-
Thread
Warten und Verzögern ohne zu Blockieren (avr/delay.h)
Hauptprogramm Makefile Ein Makefile eben Das Hauptprogramm initialisiert den Controller (einen AVR ATmega88) und blinkt mit 2 LEDs: * Eine LED an PortC3/VCC blinkt im Takt von 1 Sekunde. * Eine LED an PortB2/GND blinkt im Takt von 1.1 Sekunden. Die main-Loop ist natätlich ohne Blockierung
schlafen legt. > Die Mainloop macht dann nur den Assemblerbefehl "SLEEP". Auch dafür hat die avr-libc ein Makro. ;)
-
Thread
AVR per USB als HID-Gerät
Hi, in Zukunft werde ich immer wieder Projekte haben bei denen der AVR mit dem PC verbunden werden muss und das möglichst über USB. Diese Geschichte mit den Virtuellen COM-Ports klingt für mich aber nach ziemlichem Murks, da ich aus einem Programm heraus somit nicht erkennen
Also ich habe das so auf meinem AVR-Demoboard. Und es läuft ohne Probleme, nutze aber den COM-Port, aber das ist ja nur eine Treiber sache. Die Einstellungen werden über MPROG gemacht, hier das PDF dazu http://www.ftdichip.com/Resources
-
Thread
geistertasten
nicht alle Portpins lustig durcheinanderwürfeln, damit machst Du Dir nur selber das Leben schwer. Der AVR ist ein 8-Bitter und Du hast 8 Zeilen, da sollte man schon möglichst alle Zeilen auf den gleichen Port legen. Das vereinfacht die Auswertung erheblich. Das Verwürfeln von Portpins ist dann schon höhere
Tasten. Es geht auch mit 10ms, denn kaum eine Taste prellt 10ms. Wenn du nun noch die richtigen Ports ansprichst, denn dein Schaltplan passt nicht zum Code.
-
Thread
paralleler Programmablauf (zeitkritische) in C (AVR-Studio)
hallo! möchte gerne mehrere dinge auf einmal erledigen.... zb: tastatur (matrix) einlesen,TWI lesen/schreiben,LCD-ausgabe....) d.h.: die durchlaufzeit darf nicht länger als 30 ms betragen. wie realisiert man so etwas in C (AVR-STUDIO). programmiere momentan auf einen mega 32L. gibt
hat auch eine Firma gegründet: http://www.micrium.com/ Dort bekommst Du den SourceCode für den AVR-Port. Das Buch brauchst Du aber trotzdem. Ein anderes Betriebssystem ist von Adam Dunkels: http://www.sics.se/contiki/ oder auch www.freertos.org Selber entwickeln würde ich nur im Ausnahmefall
-
Thread
Hilfe bei ATmega 16
MCUCR = 0x0c; // INT1 auf steigende Flanke } /* int main (void) { DDRA = 0xff; // PORT A komplett Output DDRC = 0x00; // PORT C komplett Input PORTC = 0xff; // PORT C Pullup's aktiv DDRD = (0<<PD2) | (0<<PD3); PORTD = (1<<PD2) | (1<<PD3); GICR = (1<<INT0);// |
das so funktionieren (oder zumindest dicht drann sein :-) [C] #include <inttypes.h> #include <avr/interrupt.h> #include <avr/io.h> #define F_CPU 16000000UL // Quarz mit 16 Mhz volatile uint16_t value[16]; volatile uint8_t kanal = 255; uint16_t prevCapture; ISR( TIMER1_CAPT_vect