-
Thread
Ausgang auf "1" schalten, wenn Eingang auf "0" ist
HildeK schrieb im Beitrag #5721702: > Wobei es mit PORTC verknüpft werden muss! > > Der Befehl müsste lauten: > if ( !(PORTC & (1<<PINC6))) Mal wieder irren lassen: es muss doch PINC statt PORTC heißen. Also: if ( !(PINC & (1<<PINC6)))
#5721801: > DDRC &= (1 << PC6); // damit ist dann PC6 ein Eingang Da stimmt was nicht. Geht zufällig trotzdem. > if ( !(PORTC & (1<<PINC6))) // Wenn am Port C Pin 6 = "0" ist, > wird PB0 gesetzt Am Eingang muß PINC Register und nicht PORTC abgefragt werden.
-
Thread
Schrittmotor nicht linear ansteuern
TCNT0=0xFF; InPort = (((PIND & 0b00111100) >> 2) ^ 0b1111) ^ Cfg_InversIn; OutPort = (PORTC & 0b00111111) |((PORTB & 0b00000011)<<6); if (Step) { PORTC = portc;// ^ InversC; // Jetzt geht alles raus
TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=0xFF; if (Step) { PORTC = portc;// ^ InversC; // Jetzt geht alles raus if (portc & P_Step) // wir haben einen Schritt gemacht
-
Thread
PORT/Register Beschreibung in AVR
euch wirklich sehr verbunden wenn ihr mir bei meiner Problemloesung zuseite stehen koenntet. Es geht schlichtweg um die PORT Register und PIN Adressierung und BIT Manipulation, z.b DDRC &= ~(0 << PC5); PORTC=0b00000000; Ich habe mittlerweile herausgefunden wie ich die PINS uber die PC0-6 bezeichnung
mitunter aus einem PORTC |= 1<<PC5 ein sbi PORTC, PC5 machen, weil sie merken dass Du nur einen Portpin änderst.
-
Thread
Attiny85 Pin als Eingang
Außerdem: was soll ich denken, wenn ich ein für den Tiny85 geschriebenes Programm sehe und dort von PORTC, PINC und DDRC die Rede ist? Außerdem, ähnliche Definitionen und Vorgehensweisen nutzt man ja auch bei den Registern und da passt es häufiger mal nicht. Es empfiehlt sich, die Schreibweise
Finger gekommen sind. sogar Fakt für alle ist, sonst würde der Teil wenig sinnvoll sein. Demnach geht genauso [c] DDRB &= ~(1 << DD3); PORTB &= ~(1 << PORT4); PINB = ( 1 << PIN4 ); [/c] Scheint für jeden Gusto was vorhanden zu sein. Ich nehme immer, weil so mit dem Thema begonnen (z.B.
-
Thread
Fragen zu Arduino und Interrupt und direktes Port lesen
ist alles Sch***. Ich nutze es und bin zufrieden! Und ich werde nicht mehr wechseln. Entweder es geht damit oder eben nicht. Worum gehts. Ich möchte ein Arduino Uno als IO Gerät (nur lesend hier!) an ein 8085 Computer/Bus dran bringen. Wenn /IOW (IO-write) auf Low geht, soll ein Adress Nibble
Danke. Schau ich mir an werde mal probieren, was geht. Peter
-
Thread
16 Bit Timer mit Atmega 1284p
TIMSK0|=(1<<OCIE1A); // Interrupt erlauben } ISR (TIMER1_COMPA_vect) // ISR { PORTC ^= (1<<PC6); // toggelt PC6 tcount ++; } [/c] Wenn ich das richtig verstanden habe, arbeitet mein Prz mit 16MHz, teile es mit 64 runter und setze den Wert auf 12499. Damit erreiche ich
reset condition becomes active, even if the clock is not running. Demnach sollten die Pins von PORTC nach dem Einschalten im Tristate Zustand sein, d.h. wohl als INPUT und ohne Pullup Widerstand.
-
Thread
Noch ein Taschenrechner auf ATMega Basis
einer 88888888 in der Anzeige etwa 150mA, das ist natürlich der Tod jeder kleinen Batterie. Deshalb geht die Anzeige in einen "Schlafmodus", es wird nur ein Dezimalpunkt angezeigt. Dabei geht dann die Stromaufnahme auf etwa 40mA zurück. Immer noch viel. Die Stromsparmodi des ATMega verwende ich noch
folgenden Eingaben eines weiteren DP sperren. Das Regelwerk dazu ist jedoch deutlich komplizierter. So geht es auch :-)
-
Thread
Beruflich für ARM CORTEX fit machen
PORTB = PORTB & (~(1 << iPin)) | (((uint8_t) value) << iPin); case 2: PORTC = PORTC & (~(1 << iPin)) | (((uint8_t) value) << iPin); } } int main (void) { setPin (0, 3, 1); setPin (1, 2, 0); }[/c] Auf einem STM32F103 Cortex-M3 könnte man das so ändern: [c]void
: > PORTB = PORTB & (~(1 << iPin)) | (((uint8_t) value) << iPin); > case 2: > PORTC = PORTC & (~(1 << iPin)) | (((uint8_t) value) << iPin); > } > } > > int main (void) { > setPin (0, 3, 1); > setPin (1, 2, 0); > } Alles klar ja das ist gut, da spart man sich dann schon
-
Thread
2 PINS an dem PORTC besitzen ein dauerhaftes High Signal
programmieren aber das Problem ist, dass der Mikrocontroller an den PINS PC2(TCK)und PC3(TMS) trotz PORTC=0x00; ein High Signal liefert. Weis zufällig jemand an was dies liegen könnte ???
, darauf > zu reagieren, nicht wahr? Ja, solange es nicht in Beleidigungen ausartet. Momentan geht es noch.
-
Thread
7 Segment Multiplexing und USART Kommunikation(Baudraten)
die auf einer Platine platzsparend unterzubringen. Deswegen nutze ich 2x 74HC595 und 2x Pins vom PortC Register. Die Ausgänge des ersten Registers liegen über 510 Ohm Widerstände an den Anode der Segment LED an. Q0 bis Q6 sind dabei für die einzeln Segmente und Q7 ist für den Dot Punkt. Das zweite
noch komfortabel mit PWM am > OE-Pin der 595er steuern Bin mir gerade nicht ganz sicher ob das geht. Sollte aber am zweiten Register möglich sein, so das dann der Transistor als Spannungsregler wirkt. chris schrieb im Beitrag #5669052: > Nein, du schreibst alle Daten in einen Puffer und die ISR
-
Thread
Atmega Dynamische Portzuweisung in Schleife
Was so nebenbei nicht geht ... PORTA |= (....); Bedeutet Read - modify - write Und das geht so nicht. Denn wenn man das Port A lesen moechte muss man PINA lesen. Also eher : PORTA = PINA | (..)
Name H. schrieb im Beitrag #5658342: > Bedeutet Read - modify - write > > Und das geht so nicht. Na klar geht das. Der AVR hat sogar extra Befehle dafür (SBI, CBI).
-
Thread
Atmega328p ISR Maske ohne Funktion?
void){ //Set pull-ups for inputs active = 1, disabled = 0 (default) PORTB |= 0b00000000; PORTC |= 0b00000000; PORTD |= 0b00000000; //Set direction output = 1, input = 0 (default) DDRB |= 0b11111011; DDRC |= 0b11110000; DDRD |= 0b11110011; } // function name: init_timers
Debugger beim Atmega328p geht über so ziehmlich jedes übliche Atmel Tool. Stichwort Debug Wire. F_CPU kann man auch als Symbol fürs Projekt festlegen. Die Quarzfrequenz ändert sich in der Regel ja nicht, außer man wechselt die
-
Thread
XMEGA, DMA, synchrone parallele Eingabe
nutze dieses Event als Trigger für den DMA. Das was du versuchst habe ich schonmal umgesetzt, es geht.
weiterhin mehrere identische Bytes hintereinander in den Speicher geschrieben. Egal, im Prinzip geht es nun, es hat sich aber leider gezeigt, daß der DMA-Transfer trotz aller Optimierung langsamer ist als die Methode "zu Fuß". Also lege ich das DMA-Thema erstmal ad acta.
-
Thread
ATmega8 Interrupt wird zwei Mal ausgeführt
Setzen Output DDRB |= (1 << PB1); // Setzen Output DDRB |= (1 << PB2); // Setzen Output PORTC |= (1 << PC1); // Setzen PulUp Eingang PORTD |= (1 << PD2); // Setzen PulUp Eingang MCUCR &= ~((1 << ISC01) | (1 << ISC00)); // INT0 fallende Flake sei(); while(1){ PORTB
So geht es... Nach dem Aufwachen wird der Interrupt nur einmal ausgeführt. Mir ist noch nicht so ganz klar warum. Auf jeden Fall wird cli() erst in den darauffolgenden Tackten ausgeführt und die Interrupts
-
Thread
Parameterübergabe in Zusammenhang mit Unterprogrammen
Jedenfalls steht im Programm dann irgendwas wie: [c] ... = PORTD; [/c] oder [c] ... = PORTC; [/c] oder ähnlich je nachdem wo Deine Taster angeschlossen sind. Richtig? Es könnte auch: [c] ... = PORTD; ... = PORTC; [/c] Wenn die Taster an unterschiedlichen Ports angeschlossen
int, char, ...) und 2. Tue dies "+" oder jenes "=" und 3. dass Du Konstanten beschreibst. Das geht mit const. Oder Textersatz; dem "#define") Funktionen in C sind in _gewisser_ Weise in _einiger_ Hinsicht ähnlich wie Funktionen in der Mathematik. Wenn Du in Mathe liest, a = b^2 + c, dann ist
-
Thread
AVR GCC: Problem mit Variable in Main und ISR
Register kann ja sowohl in der Main als auch in der IRQ-Routine zugegriffen werden. Der Compiler geht allerdings davon aus, dass die Variable y=0 ist, das sie ja global initialisiert und dann in der Main nicht mehr geändert wurde. Also spart er sich den Vergleich. > Noch eine Anmerkung: Die Zuweisung
delay.h> #include <avr/interrupt.h> int y; uint32_t x; int main(void) { DDRC=0x03; PORTC=0x00; sei(); TCCR1B = 0x01; TIMSK|=(1<<TOIE1); while (1) { y=1; sei(); } } ISR(TIMER1_OVF_vect) { if (y==1){ PORTC=(1<<PORTC0);
-
Thread
Wie am besten meine Taster Verriegeln ?
Flag1 = 0; int Flag2 = 0; int Flag3 = 0; int Flag4 = 0; int Flag5 = 0; #define Kanal1_HIGH PORTC |= (1<<PC0) #define Kanal2_HIGH PORTC |= (1<<PC1) #define Kanal3_HIGH PORTC |= (1<<PC2) #define Kanal4_HIGH PORTC |= (1<<PC3) #define Kanal5_HIGH PORTC |= (1<<PC5) #define Kanal1_LOW PORTC &= ~(1<<PC0) #define Kanal2_LOW PORTC &= ~(1<<PC1) #define Kanal3_LOW PORTC &= ~(1<<PC2) #define Kanal4_LOW PORTC &= ~(1<<PC3) #define Kanal5_LOW PORTC &= ~(1<<PC5) int main
-
Thread
delay Funktion mit IRS ersetzen
C++ ist C++, schon klar. -- (hört mal auf, euch da anzugiften - menno. Tauscht eure PLZ aus und geht was trinken! [14478, Cuba-Libre nehm ich]) 73, DG1RTO
PC5 ausgeben if (PINB & (1 << 0)) { // pin is high PORTC |= (1 << 5); } else { // pin is low PORTC &= ~(1 << 5); } // Blinken der LED 2 (rot) an Pin PC0 unter Verwendung der
-
Thread
[ATMEGA328p] - Induktivität an AVCC
atmega328 möchte ich ein Testgerät bauen und mit dem internen ADC 2 verschiedene Spannungen messen (PORTC0 / ADC0) + (PORTC1 / ADC1). An die restlichen Pins des ADC-Ports (Port C) möchte ich zwei LEDs und ein Schieberegister 74HC165 hängen. Nun bin ich mir unsicher bei der Auswahl der Induktivität
auch drin. Erleben wir hier nicht zu oft Aufbauten ohne Abblockkondensatoren mit der Begründung geht auch ohne?
-
Artikel
AVR Checkliste
) verdient besondere Beachtung: Wenn sie eingeschaltet ist, ist auf einem bestimmten Port (z. B. PORTC beim ATMega32) die JTAG-Unterstützung aktiviert. Dann funktionieren vier Bits dieses Ports nicht wie gewohnt, da sie für die JTAG-Schnittstelle reserviert werden. In dem zum STK500 gehörenden Entwicklungstool
nur einmal möglich?. Es kann vorkommen, dass ein AVR nur einmal programmiert werden kann, danach geht es nicht mehr (z. B. wird der Typ nicht mehr erkannt). Erst nachdem die Versorgungsspannung getrennt und wieder verbunden wurde, geht es erneut. In diesem Fall ist meistens der Reset-Pin kurzgeschlossen
-
Thread
stm32f103-bluepill-peripherie
Tutorials dazu: https://www.youtube.com/channel/UCZ5tf8T8odmacEAOpw68guA Tja, und ohne Englisch geht nun mal bei dem Thema gar nix.
trotzdem fix und fertigen Code frei Haus geliefert bekommen der das unbekannte Problem löst? Aber sonst gehts Dir noch gut?
-
Thread
Interrupt wird ständig aufgerufen
Programm nicht mehr? Ist die Anweisung im Interrupt dann zu lange und der nächste steht bereits an? Mir geht es dabei nur um das Verständnis, warum das Eine funktioniert und das Andere nicht. [c] void SysTick_Handler(void) { TIM6->DIER &= ~TIM_DIER_UIE; /* USER CODE BEGIN SysTick_IRQn 0 */
für den AVR:#include > <avr/io.h> > > #define DIGITPORT PORTB > #define SEGMENTPORT PORTC > #define DIGITNUM 8 // 2 .. 8 > > uint8_t muxram[DIGITNUM]; > > uint8_t *muxptr = muxram; > > void muxer( void ) > { > SEGMENTPORT = 0xFF; // segments off (low
-
Thread
Senderenschalten vor der Sendung per Uart
dem Senden automatisch eingeschaltet und ausgeschaltet nach den Senden, mit einem 3ten Portpin. Wie geht den das? Zur zeit mache ich noch: [code] PORTC |= (1 << PC4); delay_ms (1); sendecode(werte); delay_ms(1); PORTC &= ~(1 << PC4); [/code] Gruß Paul
Paul J. schrieb im Beitrag #5489069: > Wie geht den das? Gar nicht, Warum auch ? Der uC ist programmierbar. Paul J. schrieb im Beitrag #5489069: > Zur zeit mache ich noch: Vernünftig und geht. Reicht jedenfalls zum freischalten eines
-
Thread
UV LED Belichter
Philips TLD 15W/05 geht viel entspannter.
#define DDR_KN_O DDRB #define KN_O PB4 #define T_O (PIN_KN_O & (1<<KN_O)) #define PORT_KN_M PORTC #define PIN_KN_M PINC #define DDR_KN_M DDRC #define KN_M PC0 #define T_M (PIN_KN_M & (1<<KN_M)) #define PORT_KN_SP PORTC #define PIN_KN_SP PINC #define DDR_KN_SP DDRC #define KN_SP PC1 #
-
Thread
Was beachten bei Umstieg AVR --> Arduino
Was willst du denn jetzt? Wenn Avrdude geht benutz es doch und fertig
gerne ein. Nur programmieren würde ich die Teile weiter unter einer guten IDE mit Debugger, dann geht der Bootloader aber nicht mehr! Uli
-
Thread
8x8 Matrix Laufschrift
Hallo Georg, das geht schon mit einer Matrix Lauftext anzusehen, Zielführend war bei mir die für mich passende Scrollgeschwindigkeit zu wählen. Do kann ich einfach 5 Zeichen + 1 Leerzeichen anzeigen. georg schrieb im
Spalte aktivieren switch (spalte) { case 0: PORTC |= (1<<PC3); break; case 1: PORTC |= (1<<PC4); break; case 2: PORTC |= (1<<PC5); break; case 3: PORTC |= (1<<PC6); break; case 4: PORTC |= (1
-
Thread
VHDL: UART State Machine
inout STD_LOGIC_VECTOR (7 downto 0); PORTB : inout STD_LOGIC_VECTOR (7 downto 0); PORTC : inout STD_LOGIC_VECTOR (6 downto 0); PORTD : inout STD_LOGIC_VECTOR (7 downto 0); PORTE : inout STD_LOGIC_VECTOR (7 downto 0); PORTF : inout STD_LOGIC_VECTOR
Das geht doch gleich viel besser!! Habe hier mal nur den Empfang der Daten AA 55 00 03 00 00 eingebaut: [vhdl] process (CLK_LFC) is begin if rising_edge(CLK_LFC) then if state /= idle
-
Thread
Sharp GP2D02 Sensor auslesen mit CodeVisionAVR und einem AT90S8515
8 mal. > 4. Halte VIN für mindestens 1,5ms high, um den Auslesemodus zu beenden. > Der Sensor geht in Power Off. Okay, danke schon mal. Aber ich hätte da noch ein paar Fragen: Wenn Laut Sensor VOUT das Bit 7 ist, dann ist das doch PORTC.7 oder? Das Gleiche dann für VIN: Bit 4 ist dann PORTC
macht es einfacher, dass später vielleicht mal auf einen anderen Port/Pin zu schieben. #define VIN PORTC.4 . VIN=0; . VIN=1; Entweder falsch gedacht oder nur der Kommentar falsch? >PORTC.4=0; //VIN auf high Das ist auf jeden Fall falsch: >wert=r_rotate(PORTC.7); //
-
Thread
Code(SRAM steuern) verbessern. Arduino mega 2560
Harry L. schrieb im Beitrag #5441839: > Was faselst du da von Flash? > Es geht um RAM - kennst du den Unterschied? Es geht um externe Speicher. Interne und externe - kennst du den Unterschied? Das sind verschiedene Arten. Verschiedene Philosophie. Will man sie verwechseln
vorauisgesetzt, der Speicher ist linear im Adressraum der CPU abgebildet. Und genau Letzteres geht eben mit seriellen Speicher bei der CPU um die es hier geht nicht.
-
Thread
MSP430 Binäre Zufallszahl generieren und darauf LEDs aufleuchten lassen
die nächste Zahl erstellen. Ich habe das für den MSP430 einmal in Assembler programmiert. Das geht gut! Gruß Bernd
Dich bitten, Dich mit dem Code selbst auseinander zu setzen und NUR wenn es wirklich nicht anders geht noch einmal zu rufen. Danke und happy coding Bernd
-
Thread
Lcd Datenleitungen verkehrt angeschlossen
korrigieren und hänge die an Stellen, wo gelesen oder geschrieben wird in den Code der Library ein. Geht ziemlich simpel mit z.b. einer Lookup-Tabelle.
Anfang definiert als "PD0". Die Ersetzung macht der Preprozessor bevor der Sourcecode in den Compiler geht. > #define LCD_DB PD0
-
Thread
Mega644P ADC Ref Change Absturz
ich jetzt ein nächstes Problem: Ich nutze ja 3 ADC-Kanäle. 1. Strom 2. EMK 3. Poti Strom geht jetzt, da wo das Poti dran ist (was vorher ging) geht jetzt nicht mehr. Sobald ich am Poti drehe, stürzt der Controller wieder ab. Es ist verflucht.... Woran liegt der Quatsch bitte?? Ist der immer
halb. Problem an der Sache, oben im Text stehen auch noch 500 ms, das dürfen max. 12 sein!! Damit geht das dann gar nicht mehr. Jetzt habe ich den Kondensator weggemacht (komplett offen). Jetzt geht es mit 10 ms problemlos auf den Kanälen, abgesehen von EMK der liefert mir immer 1023. Ich denke
-
Thread
SPI "transmission complete" SPIF Flag
Wohl doch nicht, das geht beim allerersten Byte schief. Nun, vor dem SPDR=LSB muss irgendwie SPSR gelesen werden (ohne dass der C-Compiler es wegoptimiert).
SPSR = (1<<SPIF) o.a. Natürlich geht das nicht, im Datenblatt ist SPIF als 'R'= /readonly/ angegeben. Es wird also nur von der Hardware gesetzt/rückgesetzt.
-
Thread
interrupt will nicht
lcd_on(); lcd_clear(); lcd_write_s("Drahtmessung"); DDRC= 0x00; //Alles Eingänge PORTC= 0xFF; DDRB=0b11111110; //Alles Ausgänge PORTB=0b11111110;
jemand > an interrupts probiert der nicht im Ansatz verstanden hat, um was es bei Interrupts geht. aswqaswqa
-
Thread
Tastenentprellung läuft nicht
/* bei 0 */ } } [/c] Probier mal, was dann passiert. Wenn's immer noch nicht geht, probier nochmal ohne Entprellung : [c] while (1) /* nur um Tastenrueckgabe zu testen */ { if ((PINB & (1<<PB2)) != 0) { LED_HL_ON; /* bei 1 */
Beispielanwendung int main(void) { DDRB |= 1<<PB2; DDRB |= 1<<PB3; DDRC &= ~(1<<PC1); PORTC |= 1<<PC1; // Pullup für Taster for(;;){ if( debounce_C1() ) // nicht: debounce(PINC, PC1) PORTB ^= 1<<PB2; if( debounce_C1() ) // nicht: debounce(PINC, PC1) PORTB
-
Thread
Wie schlimm sind Wartezyklen auf ARM-Prozessoren?
Horst schrieb im Beitrag #5394033: > Ductus cochlearis (Gast) schrieb: >> In diesem Thread geht es darum, > daß Du Dich auf Kosten anderer amüsierst. Nope. Es geht darum, daß ein anderer Thread, in dem es darum geht, wie man Wartezeiten sinnvoll implementiert, nicht mit dem völlig anderen
Ductus cochlearis schrieb im Beitrag #5394135: > Das ist aber nicht hilfreich. Es geht immer noch darum: Warum sind > Wartezeiten auf einer ARM-MCU um jeden Preis zu vermeiden? Nein. Es geht um "Wie schlimm sind Wartezyklen auf ARM-Prozessoren?". Die Antwort lautet: "Nicht sehr
-
Thread
328P im powersave immer noch 1.8 mA
Es geht mir erstmal darum zu entscheiden, ob es an der Hard- oder an der Software liegt, und das geht mit obigem Dreizeiler.
> sleep_enable(); > sleep_mode(); > } > [/c] > S. Landolt schrieb im selben Artikel: >Es geht mir erstmal darum zu entscheiden, ob es an der Hard- oder an der >Software liegt, und das geht mit obigem Dreizeiler. Hallo S. Landolt, okay, habe ich verstanden. Leider muss ich das auf morgen
-
Thread
Kapazität messen, 400-700pF
Portisch (portisch) >Rohr leer (0mm Wassersäule): ~400pF >Rohr voll (1500mm Wassersäule): ~610pF Geht so. >Nun bin ich auf der Suche wie man das am besten und genau messen kann. RC-Oszillator mit NE7555 oder TLC555, das ist die CMOS-Version des NE555. >Jetzt habe ich erste Versuche mit einem
void) { // all pins output DDRB = 0xFF; DDRC = 0xFF; DDRD = 0xFF; PORTB = 0; PORTC = 0; PORTD = 0; /* disable pull up on analog channels */ cbi(DDRB, PB0); // switch to input PORTB &= ~(1 << PB0); // no Pull-up } // Wait for a signal on pin ICP1 and
-
Thread
Attiny85 Problem mit digital Input B0 u. B4
verschoben sondern C-üblich maskiert. Das Problem erinnert an den Jtag-Port bei manchen Atmegas, der PortC Blockiert. Muss beim Attiny85 irgendwas freigeschaltet werden?
im Beitrag #5376512: > Damit ist doch alles klar - oder? Mir ist nicht klar, warum PB0 nicht geht. grundschüler schrieb im Beitrag #5376490: > Außenbeschaltung gibt es nicht, nur die Taster an ground. Wie wird die Platine versorgt? Doch nicht aus einem USB-Port, oder?
-
Thread
Portexpander PCF8574
Problems habe ich keine schlüssige Erklärung. Ich betreibe den PCF8574 an der TWI Schnittstelle (PORTC) eines XMEGA32 Mit folgendem Code lese ich den PCF8574 ein. // Read byte uint8_t PCF8574_IO_Read(uint8_t address) { // prepare PCF8574 for read Write_byte(address, 0xff); // Wait for
funktioniert es (siehe Anhang BF.jpg) Auf dem Logikanalyser sieht man, dass SDA nicht wieder auf "1" geht, wenn P7 bei der Einlesung auf "0" lag. Was ich nicht verstehe, wieso hat der Status eines Portpins überhaupt Einfluss auf die Bussignale. Wie gesagt, nur das Bit 7. Hab es mit mehreren ICs ausprobiert
-
Thread
ATmega32u4 zieht zuviel im PowerDown
dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/Pro_Micro_v13.pdf) das Stromschlucken auszutreiben. Im PowerDown geht's runter auf ca. 15 uA, das ist zwar nicht schlecht, aber immer noch locker eine Größenordnung über dem typischen Verbrauch laut Datenblatt. Ich habe alle LEDs runtergenommen, der Spannungsregler ist
r16 out DDRF,r16 ldi r16,-1 ;PullUp an allen Ports aktivieren out PORTB,r16 out PORTC,r16 out PORTD,r16 out PORTE,r16 out PORTF,r16 cbi PORTE,2 ;/HWB, liegt auf Masse ;alle Funktionseinheiten abschalten ldi r16,1<<PRTWI|1<<PRTIM0|1<<PRTIM1|1<<PRSPI|1<<PRADC sts
-
Thread
Funktion aufrufen, Wert nicht in anderen Funktionsaufruf verwenden
Stichwort: Objektorientiert programmieren. Geht grundsätzlich auch in C indem man der objekt-spezifischen Funktion einen Zeiger auf die Datenstruktur des Objektes übergibt. C++ und Java machen das unter der Haube ebenso.
Taster0); OMG Wenn das kein lupenreines Argument wider die C-Seuche ist, was denn dann? Das geht in Assembler nicht nur mit weniger Rechenzeit (das wäre ja sowieso erwartbar), nein es geht auch noch mit deutlich weniger Zeilen Code. Wo genau ist also hier der Vorteil des Einsatzes einer (sogenannten
-
Thread
Atmel Studio: "Standard" SW-Routinen aus einem Pool verwenden
geht das nicht mit .include C:\Pool\...
[3] = 0x00000003; PORTC->PCR[4] = 0x00000003; PORTC->PCR[5] = 0x00000003; PORTC->PCR[6] = 0x00000700; PORTC->PCR[7] = 0x00000700; PORTD->PCR[4] = 0x00000100; PORTD->PCR[5] = 0x00000100; PORTD
-
Thread
IR LED Arduino how to send signal
überlegt dieses interrupt zeug von arduino zu nutzen. Der UNO hat aber nur 2 dafür vorgesehene PINs, geht also nicht. Wie kann ich also feuern und empfangen?
den ganzen PortB, PortC und PortD unterstützt.
-
Thread
Anfängerprobleme mit STK500
dem stk500 sind LEDs und Schalter Low-aktiv. Hast du das kabel verdreht gesteckt (das zu den LEDs geht)?
direkt RS232 mit PC-RS232. ohne USB-Adapter. Versuche es einmal mit einer anderen MCU. Vielleicht geht es dann. ciao gustav