-
Thread
tuidude - Textuserinterface für AVRDUDE unter Linux
vorhandenen Unterschiedlichkeiten der Bitpositionen, vor allem wenn man nicht nur die Bits bspw. CKSEL1 / CKSEL2 / CKSEL3 eines Atmega anzeigen möchte, sondern per Text anzeigen möchte dass: [code] CKSEL0 = 1 CKSEL1 = 0 CKSEL2 = 1 CKSEL3 = 1 der Einstellung: Int. RC Osc. 8 MHz; Start-up time
Benedikt M. schrieb im Beitrag #7353107: > im Gegensatz zu Electron-Apps :-))
-
Thread
Counter für Reedkontakt - was mache ich flasch?
Autobatterien. Und > von diesen Zählern (an Kippwaagen zur Niederschlag/Abflussmessung) > werden dann ca. 16 Stück gleichzeitig laufen und auch noch einer oder > mehrere Arduinos. Durch 4k7 ist bei 5V Versorgung der Strom durch den Reedkontakt gerade mal gut 1mA und auch nur dann, wenn der Kontakt geschlossen
m.n. schrieb im Beitrag #7348246: > HildeK schrieb: >> Aber die RC-Schaltung benötigst du trotzdem. > > Die nutzt ihm nichts. Wie soll er denn die 16 x LS163 auslesen? Ich bin an der Stelle nicht
-
Thread
Bitte um Hilfe mit Verständnis, ISR von Timer usw.
1ms + 1),r24 pop r24 out 0x3f,r0 pop r0 reti [/code] [c]// timer0.c #include "timer0.h" volatile u16 flag_1ms = 0; [/c] [c] // timer0.h #ifndef TIMER0_H #define TIMER0_H
vermutet, das Problem kommt, da ISR gelegentlich zwischen Lesen und Schreiben von einzelnen Bytes von 16-bit-Variable kommt. [c] while(1){ volatile u16 tmpflag; cli(); tmpflag = flag_1ms; sei(); tmpflag -= 1000; if(!(SREG & (1<<0))){ flag_1ms = 0; usw. [/c] Diese Variante arbeitet
-
Thread
Wer kennt dieses AVR-Board?
zwei 32 KiB-RAMs & SN74HC04 (huckepack) draufgesetzt; benutze das aber praktisch nicht mehr, da für ATmega8515 & ATmega162.
angefangen. Der Quarz ist auswechselbar, sonst habe ich wenig modifiziert. Links der Anschluss für ein 2*16 Textdisplay, meine alten Typen brauchten noch -5V, daher ein zusätzlicher ICL7660 mit zwei Elkos Der Controller in DIL-28 ist hier ein ATmega48-20 Baujahr 2008
-
Thread
atmega328pb - Maximum Frequency vs. VCC
Ich habe über längere Zeit einen ATmega328P-PU an 3,3 Volt mit 16 Mhz Quarz geteilt durch 2 betrieben. Hat problemlos geklappt. Aber eine offizielle Angabe dazu konnte ich auch nicht finden.
around 10MHz). Therefore you can use 16Mhz with clock prescaler of 2 at 2.7V Vcc." Damit ist die Frage nun auch offiziell geklärt. Aus der Antwort entnehme ich weiterhin das Oszillator und Prescaler bis runter zu 1,8V bei 20Mhz voll funktionsfähig
-
Artikel
AVR Net-IO Bausatz von Pollin
die HFuses auf 0xC2 gesetzt werden, d. h. CKOPT-Fuse programmiert (dies ist in der Software Version 1.03 bereits vollzogen). Das sorgt für einen stabilen Betrieb des AVR-Oszillators im "full rail-to-rail swing"-Mode bei 16 MHz. Atmel garantiert ansonsten nur stabilen Betrieb bis 8 MHz. Siehe ATmega32
Bausatz August 10 gekauft: komplett und sofort funktioniert Bausatz Juli 10 gekauft: 2 Quarze mit 16 MHz geliefert, statt 1x 16MHz und 1x25MHz. Bausatz September 10 gekauft: hat sofort funktioniert. 1x 3,3k und 1x 10k Widerstand zuviel. Statt 100nF Kondensatoren wurden 1µF geliefert -> Platzprobleme
-
Thread
AVR-NET-IO PlatformIO Arduino Bauumgebung
build/avr_net_io/firmware.hex` ``` // ATMEL ATMEGA32/32A // // +---\/---+ // (D 0) PB0 1| |40 PA0 (AI 0 / D24) // (D 1) PB1 2| |39 PA1 (AI 1 / D25) // INT2 (D 2) PB2 3| |
/INT1 (D 11) PD3 17| |24 PC2 (D 18) TCK // PWM (D 12) PD4 18| |23 PC1 (D 17) SDA // PWM (D 13) PD5 19| |22 PC0 (D 16) SCL // (D 14) PD6 20| |21 PD7 (D
-
Thread
Keine Verbindung zu mySmartUSB light in Arduino IDE
Mit avrdude gehts aber anscheinend, wenn ich eine *.hex hochladen will: >>>: avrdude -c stk500 -p m328p -P /dev/ttyUSB1 -U flash:w:"/home/oem/Dokumente/(...)ARD/main.hex":a avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading
-
Thread
ATMEGA32A: korrupte Daten im EEProm nach Spannungsverlust
So habe ich es auch immer gehalten (& BOD) und nie EEPROM-Probleme gehabt bei den kleinen Brüdern ATmega16 und ATmega16A; zumindest wurden mir keine gemeldet, und rund tausend Anwendungen sind immerhin draußen.
> Bei >= 16 MHz und nicht gesetzter CKOPT gibt es > jedoch die merkwürdigsten Fehler. Was daran liegen mag, dass der ATmega32A nur bis 16 MHz spezifiziert ist.
-
Thread
Spannung messen
Strom zwischen 0,2 A und 0,55 A. Die armen > Schutzdioden... Ist so einer: Spannung 3.5 Volt 16 Ncm Haltemoment NEMA 17 bipolar 42*42*20mm4-Draht 1,8 Grad Schrittwinkel (200 Schritte / U) Nennstrom 1,0 A & Widerstand 3,5 Ohm
offenen Kontakten geht es viel > leichter. Woran liegt das? Direkte Antwort auf deine Fragen: 1. Damit du den Eingang des Arduino nicht überlastest solltest du mindestens den Strom auf Werte unter 1mA begrenzen. Die internen Eingangsschutzdioden sorgen dann für den Rest, solange die Stromaufnahme
-
Thread
ADC über SPI
and n Stopp-Bits USART1->CR1 &= ~USART_CR1_M; // Oversampling 16 USART1->CR1 &= ~USART_CR1_OVER8_Msk; // Baudrate einstellen: USART1->BRR = 0x8B; // Aktiviere/Starte Sender USART1->CR1 |= USART_CR1
SPI1->DR; /* wait for Busy flag not active */ while ((SPI1->SR & SPI_I2S_FLAG_BSY) != 0); return ret_val; } /* --- SPI_TransferByte --- */ uint16_t Read_ADC (void) { uint8_t byte_low
-
Thread
Inkrementalgeber an CMOS Dekadenzähler CD4017
documents/data-sheet/74HC40103.pdf https://www.ti.com/lit/ds/symlink/cd74hc40103.pdf bei Reichelt 1,60€ https://www.reichelt.de/counter-8-stage-2--6-v-dil-16-74hc-40103-p3215.html?&trstct=pol_2&nbc=1
obwohl er nur in Standard-TTL produziert wurde: https://www.ti.com/lit/ds/symlink/sn7497.pdf f_out=M*f_in/64 Damit hätte man wenigstens 64 verschiedene Teiler, die nicht mit 1/x gestuft sind. Die 1,8 kHz am Eingang ergeben gleichmäßige Vielfache von 28,125 Hz, auf Kosten der sauberen Schwingung. Das
-
Thread
Langzeittimer per RC-Glied?
da mir der Stromverbrauch "gefühlt" zu hoch sein würde. Oder irre ich mich da? Immerhin halten 700mAh Akkus aus uralten Handys etwa 14 Tage. BTW: der µC läuft da nur mit 1MHz internen Osc.
/(7yr*365d/yr*24h/d) = 120mAh/61320h = 1,9µA [/pre] Also: wenn schon unbedingt eine Betriebsspannungsanzeige nötig ist, dann lass die LED einmal pro x Sekunden für eine oder zwei ms kurz aufblitzen.
-
Thread
ISR Aussetzer durch Volatile-Variablen-Polling ?
Wilhelm M. schrieb im Beitrag #7339879: > auch wenn es unter speziellen > Annahmen zufälligerweise funktioniert Unter diesen speziellen Annahmen (Atmega, volatile, uint8_t) funktioniert es zufälligerweise
count++; flag = 0; } } } [/c] Es kann durch Setzen des Makros VARIANT auf 1, 2 oder 3 in drei Varianten übersetzt werden: [code] for ((v=1; v<=3; v++)) do avr-gcc -mmcu=atmega8 -Os -DVARIANT=$v -S -o irqtest$v.s irqtest.c done [/code] Variante 1: Allgemeine Memory
-
Thread
Zeigt her eure Kunstwerke (ab 2023)
später eins für mich. MP3 Player mit SD-Kartenleser: DFPlayer - Mini MP3 Player Arduino pro mini ATMEGA328P 5V / 16MHz 0.96 Inch I²C Serial 128X64 OLED SSD1306 rotary encoder Lautsprecher 32 Ohm Inzwischen umgebaut auf 1S LiPo & USB-LiPo Ladegerät (intern).
SONORAMA-HQ - wie oben mit DSP-Hall vom MSP3400C 3D-SPATIAL - aktiver Raumklang mit TDA3810 und MSP3400 16 Programmplätze sind mit 4 PINs herausgeführt 0=PROG1 ... 15=PROG16. 1 LOW-aktiver MEMORY AUSGANG 1 LOW-aktiver SUCHLAUF AUSGANG 1 LOW-aktiver STBY AUSGANG 1 LOW-aktiver EXT-AUDIO AUSGANG 1 NF-EINGANG
-
Thread
Wie wichtig ist eine Mini-USB-Buchse zum Laden für die Kundenakzeptanz
überlisten. Wenn man über so einen Kontakt (oder zwei parallel) 5A rüber schickt, dann fallen an den max. 50mOhm dann eben 250mV ab und damit dann 1,25W. Das wird dann warm, das Material verändert sich und gerade wenn es da etwas Dreck zwischen den Kontakten gibt, dann beschleunigt sich der Prozess noch mal
Wenn man über so einen Kontakt (oder zwei > parallel) 5A rüber schickt, dann fallen an den max. 50mOhm dann eben > 250mV ab und damit dann 1,25W. An zwei parallelen Kontakten mit jeweile 50mOhm fallen keine 1,25W ab. Das mit der Physik üben wir nochmal.
-
Thread
ATtiny1604 - Fuses unter Linux
-P /dev/ttyUSB0 -U fuse1:w:0x17:m [/code] und einem anschließenden Lesen [code] avrdude -c jtag2updi -p attiny1604 -P /dev/ttyUSB0 -U fuse1:r:-:i [/code] die Ausgabe: [code] :0100000017E8 :00000001FF [/code]
keinerlei Alternative. bloom (+ SNAP) scheint den tiny1604 zu unterstützen. Habe selbst auf den Atmega16 damit erste Erfahrungen gesammelt. Konsolenbasierend der Einäugige unter den Blinden.
-
Thread
Empfehlenswerte Literatur zum Erlernen von C
solltest https://www.amazon.de/Lions-Commentary-Computer-Classics-Revisited/dp/1573980137/ref=mp_s_a_1_1?adgrpid=69429517417&gclid=Cj0KCQiA54KfBhCKARIsAJzSrdqFogTRdvvEi3b_uSv_eB-FrOMB-khoNvMYSbNUDyzWv0Mo-Qh-G-caAvcHEALw_wcB&hvadid=606880222937&hvdev=m&hvlocphy=9041805&hvnetw=g&hvqmt=e&hvrand=4042124887765880146&
Deklaration von Ganzzahlvariable i mit dem Wert 15 i++; //destruktives Überschreiben des Wertes von i mit 16 Besser, aber noch nicht gut ist da: i=i+1; Wobei man häufig sogar ganz darauf verzichten kann, wenn man sein Programm sinnvoll strukturiert. Was ich aus Erlang gelernt habe ist, dass man Eingabevariablen
-
Thread
7-Segment-Ansteuerung
SEGMENT-ANZEIGE Multiplexbetrieb mit drei 7-Segment-Anzeigen, CA, Ansteuerung an PORTB0, PORTB1 und PORTB2 mit PNP Transistoren ATMega48 */ #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> uint16_t display_value; uint8_t einer, rest, zehner, hunderter; const
SEGMENT-ANZEIGE Multiplexbetrieb mit drei 7-Segment-Anzeigen, CA, Ansteuerung an PORTB0, PORTB1 und PORTB2 mit PNP Transistoren ATMega48 */ #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> uint16_t display_value; uint8_t einer, rest, zehner, hunderter;
-
Thread
Beispielcode: ATMega16 8 bit LCD-Ansteuerung von ChatGPT
beauftragen kann. [c] ; Includes #include "m16def.inc" ; Constants .equ LCD_RS, PD0 .equ LCD_E, PD1 .equ LCD_D7, PD7 .equ LCD_D6, PD6 .equ LCD_D5, PD5 .equ LCD_D4, PD4 .equ LCD_PORT, PORTD ; Function prototypes .global lcd_init .
> kommt das dabei raus. Wen willst Du hier veralbern? Schreibe einen AVR ASM Code für den ATMEGA16 zur Ausgabe von Hallo World! auf ein LCD im 8 Bit Modus [avrasm] .nolist .include "m16def.inc" .list .org 0x0000 rjmp reset .org 0x0100 reset: ldi r16,0xFF ; Configure Port B as
-
Thread
Kleiner Arduino-MC für UART zu SN74HC595
32U auch schön klein. https://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf
an UART > Idealerweise: geht über Arduino oder eine ähnlich einfache > Programmierumgebung PIC16F1454/1455. 14 Pins in DIL/SOIC/TSSOP, 16 Pins in UQFN 4*4mm, Hardware-USB-Device. Hardware UART. Hardware SPI/I2C. 3V3 und 5V-Betrieb möglich fchk
-
Thread
Zabex Ohmmeter mit Atmega 88 Funktion ?
Einfluß der endlichen ADC-Auflösung immer größer. Nimm einfach an, der Vergleichswiderstand wäre 1K. Dann kann der 10-Bit ADC eines ATMega Widerstände Rx im Bereich 1Ω bis 1MΩ prinzipiell erfassen. Denn einmal ergibt sich ein Spannungteiler 1000:1 und das andere Mal 1:1000. Der ADC liefert einmal
Das könnte schon stimmen. Wenn ich dabei einen R von 1,5k als Rx einsetze bekomme ich 1,9k angezeigt. Wieso??? Habe in das Programm eine Pause von 1mS eingebaut, leider mit dem gleichen Ergebniss.
-
Thread
Strings mit AVR - aber richtig
UDR2 = c; //send data } void print_flashstr(PGM_P str) { u8 c; while((c=pgm_read_byte_near ((u16)str))) { send_byte_usart0(c); str++; } } [/c] benutzt wird, sollte [c] print_flashstr(BUILDTIME); [/c] beim ATMega328 und auch bei den größeren Varianten (z.B. ATMega2560) sicher
progmem in .progmem.data *vor* ausführbaren Code lokatiert wird. Und dann gibt's auch noch __flash1 etc., die auch in der obigen Wiki-Seite beschrieben werden, die aber eine Ergänzung zum Linkerscript erfordern für Sections .progmem1.data etc. Dann gibt es nocht Devices wie ATmega4808, die Flash
-
Thread
AVR®DD family, low pin count devices
zwischen beiden Varianten umgeschaltet, sondern auch das Routing für die Programmierpins. Beim ATmega128RFA1 (der den MCU-Core des ATmega1281 benutzt) mussten wir uns dann entscheiden, welche der Varianten wir nehmen wollen. Wir haben uns gegen die ATmega103-Kompatibilität entschieden :-), d.h. er
Die M103C Fuse haben aber nur der ATmega64, ATmega128 und der ATmega128A.
-
Thread
DAB Shield Frage zu Arduino Code
M_Pichler schrieb im Beitrag #7326727: > Meister Lustig schrieb im Beitrag #7323986: >> 80 GBP für so'n simples shield ist schon heftig DAB-Shield + M0-Shield + LCD-Anzeige. Es sei denn, die Preise
Glauben hilft hier nicht weiter! Schau mal die Beschaltung des U3 an, Bauteil im SO08 Gehäuse. Pin 1 und 7 über C14, C16 zum Ausgang. Pin 4 GND, Pin 8 VCC. Eine Typische Beschaltung eines Dual OPVs. Wenn Du das Shield hast schau doch mal bitte drauf was für ein Bauteil das ist. Interessant wäre
-
Thread
Manson HCS-3602 HCS-3600 Reparatur
Ricardo M. schrieb im Beitrag #7320290: > sowohl die 5V, als auch die 12V liegen auf der Sekundärseite an. Guck mal, ob S1 noch da ist und der 741 funktioniert (sockeln). Dann ob der 494 Betriebsspannung
Es gibt ein altes und ein neues Board bei der Frontplatte. Ich habe noch ein altes und da ist ein Atmega 16A AU verbaut. Danke!
-
Artikel
AVR Bootloader optiboot Assemblerversion
. make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert. >>> Starte optiboot
auf atmega328p und setze die Lock Bits avrdude -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m avrdude: AVR device initialized and
-
Thread
Atmega Uart - Falsche Byte Übertragung
M. K. schrieb im Beitrag #7317740: > AtmegaNoob schrieb: >> void uart_init(void) >> 11{ >> 12 UCSRB = (1 << TXEN); >> 13 UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); >> 14 UBRRL=0x05; /
receiver and transmitter ; ldi r16, (1<<RXEN)|(1<<TXEN) ; out UCSRB, r16 ; Set frame format: 8data, 2stop bit ; ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0) ; outUCSRC, r16 ; ret ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
-
Thread
I2C und LCD mit der Pollin.Lib in Bascom
******** Initialisierung *********************** Config Lcd = 16 * 2 'nicht unbedingt nötig Config I2cdelay = 1 Waitms 300 'warte bis LCD-Initialisiert ist! '******************** Hauptprogramm *********************** Cls Lcd " Hallo Dresden! " Wait 1 Lcd_backlight = 0 Locate 2 , 1 Lcd "-- 16 Zeichen --" Wait 2 Lcd_backlight = 1 Locate 1 , 1 'Backlight-Zustand an LCD übermitteln Do 'Sinnlose Schleife
-
Thread
PL9823 blitzen bei anlegen der Stromversorgung sofort hell auf
das > ich mit dem Arduino schalte. Es reicht, wenn am Anfang (bei Reset) DIN auf "0" bleibt. ATMega hat während Reset alle Ausgänge hochohmig, das wirkt auf LED wie "1". Relais - das ist zu groß... Es reicht, zwischen Eingang und Erde einen Widerstand zu schalten (und evtl. noch Puffer, damit "0"
Lothar M. schrieb im Beitrag #7364807: > Wenns daaruf ankommt, dass die Spannung nach 1 Schaltbefehl 1 einziges > Mal ansteigt, dann nimmt man einen Halbleiterschalter. Ja das meinte ich natürlich mit "rough
-
Thread
Auswerteelektronik Quatratursignal
https://ww1.microchip.com/downloads/en/Appnotes/doc8109.pdf
2000/ 2016 / 2020. Sowas gibt es heute unter dem Namen "IC-MD" vom IC-Haus in Mainz. Wahlweise 1x48bit, 2x24bit oder 3x16bit Zähler. Anbindung über SPI (das habe ich benutzt) oder ein mir unbekanntes Interface mit dem Namen Bliss. Habe 5 Stück als Evaluationsmuster für 5Euro/Stück erwerben können
-
Thread
AVR (ATmega644) Signatur & Serialnummer auslesen
Z.B. in Assembler, weil nur *drei* CPU-Zyklen zwischen SPMCSR und LPM erlaubt sind: .INCLUDE "m644pdef.inc" ldi r0, 0b00100001 ;SIGRD, SPMEN Bitmaske für SPMCSR ldi r31, 0 ;ZH ldi r30, 0 ;ZL=0 für Signature Byte 1 in r1 out SPMCSR, r0 lpm r1, Z ldi r30, 2 ;ZL=2 für Signature
Da ich gerade nichts anderes zu Hand habe, hatte ich versucht bei einem ATmega32-16PU nur die Signature Bytes auszulesen. [c] void cpu_get_sig(uint8_t *sigarray) //muss 4 Bytes haben { uint8_t tmp; tmp = SREG; cli(); SPMCR |= (1<< SPMEN); sigarray[0] = boot_signature_byte_get
-
Thread
AVR Atmega64-A ISP funktioniert nicht
Attiny85 geholt um zu testen ob ich das Prinzip verstehe, mit dem klappt das ohne Probleme. Der Atmega64-A ist mit einem Labornetzteil bei 5V versorgt, der zeiht zwischen 10mA-11mA. An den Fuses hab ich noch nichts verändert und so wie ich das Datenblatt verstanden habe ist der 1MHz interne Oszillator
://www.reichelt.de/quarzoszillator-16-00-mhz-oszi-16-000000-p13686.html?&trstct=pol_0&nbc=1 Auch der möchte einmal 100n direkt zwischen seinem VCC und GND haben, und auch hier möglichst dicht an den Pins und nicht 5cm weit weg. Der Ausgang
-
Thread
Bessere Poti Schaltung für Arduino?
einem 100k mehr > Akkulaufzeit wie bei einem 10k? Ja, schon, aber wenn der Rest der Schaltung 50 mA aufnimmt, spielen 1 mA mehr oder weniger keine Rolle.
verwendet werden, zeigt das: 1. am ADC 1 wird ein Spannungsteiler aus zwei 1M Widerständen zwischen Vcc und GND angeschlossen 2. am ADC 2 wird ein Poti mit 10k zwischen Vcc und GND angeschlossen Und jetzt wird in der Software
-
Thread
RISC/V kommt in Schwung
> braucht) mit jedem (Rechen)Befehl erzeugt und gespeichert. Eine Frage der Perspektive. Beim ATmega88 oder dem Cortex M3 sind Flags sehr einfach zu implementieren. Beim Intels Raptor Lake oder Apples M1 sind sie höllisch komplex. Wenn man also eine Architektur konzipiert, die in der Minimalversion
medium.com/swlh/risc-v-assembly-for-beginners-387c6cd02c49 https://debugger.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2
-
Thread
1 Befehl pro Zyklus
Lustig ist in dem Zusammenhang evtl., dass der ATMega328P Nachbau namens MD-328D und seine Brüder, an vielen Stellen 1 Takt fixer sind, als das Original. Wenn ich mich richtig erinnere, war die Begründung, dass da drin ein zurecht gestutzter 16 Bit
A. K. schrieb im Beitrag #7316470: > Wobei man eine Pipeline auch darauf einrichten kann. Cyrix's M1/M2 > Prozessoren der x86 Szenerie taten dies Natürlich kann man das. Aber es geht hier im Thread um RISC. Dort geht das eben nicht.
-
Thread
Überlauf in AVR mit C
3x30.000 verwenden kann, ist ein L (für eine der beiden Zahlen zumindest) erforderlich. Und (0xffff+1 == 65535+1) ist nur dann true, wenn links ein L oder bei 65535 ein U steht. Dass im zweiten Fall beide Seiten 0 ergeben, macht es nicht einfacher (Alle Beispiele mit 16 Bit ints)
#7309897: > denn ich weiß, dass |= nicht atomar ist Wen man damit ein einzelnes Bit in SFR <= 0x1F setzt, macht er eine atomare SBI Operation: [c] #include <avr/io.h> int main() { PORTB |= 1; } [/c] avr-gcc -mmcu=atmega328 -O1 test.c avr-objdump -h -S a.out [pre] 00000080 <