-
Artikel
Miniwebserver
Kreditkartengröße Versorgung über Micro-USB mit 1000 mA div. Gehäuse erhältlich Weitere Webserver. Avr Webserver mit Wiznet WIZ810MJ Einfacher und billiger Webserver mit AtMega32 Arduino Uno (ca. 24 EUR) mit Ethernet Shield (ca. 35 EUR) oder Arduino Ethernet (ca. 48 EUR) private Projekte. avrETH1. winzige
ENC28J60 IO-Webserver. Platine: 74.9mm x 74.9mm Microchip ENC28J60 Ethernetcontroller Atmel Atmega32 oder Atmega644 uC Software kompatibel zum AVR Net-IO von Pollin Div. Erweiterungsboards mega-eth. Platine 100mm x 80mm Microchip ENC28J60 SD/MMC-Slot FTDI USB/RS232-Wandler ATmega128 mit 64kBytes SRAM
-
Thread
Alternative Speicheraufteilung bei µC
> Speicherkonfiguration der Heap einfach in den Stack (oder vice versa) > reinlaufen, Für einen AVR o.ä. simmt das, zumindest wenn der Speicher den Adressraum 2^n komplett füllt. Ich habe aktuell einen STM32 vor mir, der hat noch Lücken in der Speicheraufteilung...
Rick schrieb im Beitrag #8007883: > Beim AVR hilft das wahrscheinlich nicht so viel, Neu AVRs (AVR-Sx, AVR-Lx) haben rudimentären hardwarebasierten Stackschutz. Siehe CPU_SPLIM.
-
Thread
Einstieg in PIC mit MPLAB X und Snap Adapter
einzuschalten. Gab es von Conrad als Bausatz mit CMOS-Bausteinen. [noch mehr Offtopic] Mit einem AVR-basierten Arduino-Board (z.B. UNO mit steckbarem AVR) wäre mMn der Einstieg inzwischen wesentlich einfacher. Damals (2005) gab es die noch nicht. Da war es auch verpöhnt, solche Entwicklungsumgebungen
2 MHz Main Clock RTC.CLKSEL = RTC_CLKSEL_INT1K_gc; // 1024 Hz from OSCULP32K while(RTC.PITSTATUS > 0) {} // wait for synchronization RTC.PITCTRLA = RTC_PERIOD_CYC64_gc | RTC_PITEN_bm; // 62ms period, enable PIT EVSYS.ASYNCCH0 = EVSYS_ASYNCCH0
-
Thread
Programmieren mit KI
-> STM32Cube MCU Package for STM32F1 Series anwählen -> Install.
folgender Anweisung: Könntest du mir bitte den Micropython-Code auch als reines C-Modul für einen AVR Mega32A generieren? Die Quartz-Frequenz beträgt 16MHz. Das DCF-Signal liegt an Port A.0 an. Den Compileraufruf hab ich ihn auch generieren lassen. Sieht so aus: [code] avr-gcc \ -mmcu=atmega32
-
Artikel
AVR-GCC-Tutorial
1 unsigned char uint16_t align="right"| 16 0 ⋯ 65535 0 ⋯ 2 16 −1 unsigned short , unsigned int uint32_t align="right"| 32 0 ⋯ 4294967295 0 ⋯ 2 32 −1 unsigned long uint64_t align="right"| 64 0 ⋯ 18446744073709551615 0 ⋯ 2 64 −1 unsigned long long Neben den Typen gibt es auch Makros für die Bereichsgrenzen
Zugriff auszuführen ist und entsprechend länglicher und langsamer wird der erzeugte Code. Siehe auch: AVR-LibC: Data in Program Space Datenzugriff jenseits 64 KiB. Normale Zeiger beim avr-gcc sind 16 Bit breit, können somit also nur 64 KiB Datenspeicher adressieren. Darauf sind auch die avr/pgmspace.h Funktion
-
Thread
[Atmega8] NAND flash chip ansteuern
Außerdem ist der Atmega8 veraltet. Nimm einen STM32F302 oder F303, für den Anfang auf einem Nucleo64 Board. https://www.reichelt.de/de/de/shop/produkt/nucleo-64_arm_stm32f303re_mcu-363498 Loïc schrieb im Beitrag #7934797: > Ich stelle mir das so vor
Betriebsspannung. NAND-Flashes mit 5V gibts nicht oder sind zumindest sehr ungewöhnlich. Also musst Du Deinen AVR mit 3.3V betreiben. Das schließt schon mal einen der zahlreichen Arduino Mega Boards aus, die alle mit 5V laufen. Beachte das. Du könntest ein Arduino Due Board nehmen. Das hat keien AVR-Prozessor
-
Thread
Reaktionszeit MCU auf externen Interrupt
erkannten > Kurzschluss (Pin Eingang) die Treiber zweier IGBTs abzuschalten Dazu ist auch ein AVR mit AnalogComparator Interrupt schnell genug. Dirk F. schrieb im Beitrag #7944603: > Moment mal. Systemtakt 64 MHz. > Instruktionstakt ist dann = 16 MHz Ich dachte, 1 Instruktionstakt = 1 Systemtakt, was sollen sonst die 64MHz und die RISC Architektur.
-
Artikel
AVR In System Programmer
AVRISPmkII kompatiblem Programmer (AVR Studio, Linux, MacOS) JTAGICEmkII kompatibler AVR Programmer (AVR Studio, Linux, MacOS) (keine AVR32, kein Xmega) OpenOCD Interface (sehr viel ARM Controller, PLD´s, FPGA´s) STK500v2 kompatiblem Programmer
vorgenommen haben, ist das kein Problem, da der Programmer über eine Takterzeugung verfügt, mit der man den AVR wiederbeleben kann. Auch wer mit niedrigen Taktraten arbeitet (z. B. 32kHz), kann einen ATmega64 in ca. 4,8 Sekunden programmieren und vergleichen. Darüber hinaus kann mit geeigneten Makros die Programmausführung
-
Thread
DCF77 Empfangsprobleme
waren für ATMega8535 gedacht. Vollkommen egal. DCF77-Decodierung und LCD-Steuerung sind sowas von AVR-Typ-unabhängig, das einzige worauf es ankommt ist ausreichende I/O-Anzahl für die jeweilige Anwendung. Man braucht dafür nicht mal RAM -- die 32 Allgemeinregister reichen für solch einfache Dinge dicke
Programms so unglaublich egal, ob es für einen ATtiny24, 85, 2313, 1616 oder ATmega8, 48A, 328PB, AVR64DD28 geschrieben wurde. Weil weder nennenswert Speicher noch bestimmte Peripherie dafür gebraucht wird, die manche Typen nicht hätten. Karl B. schrieb im Beitrag #8047447: > Und verbindet nicht
-
Thread
bldc-controller
dann lieber selber direkt angesteuert: https://hackaday.io/project/191409-xy-bldc-bypass-jy01-stm32-bluepill
macht kluch - manchmal auch nicht. [c] #define blcd_aus PORTD&=~252; #define blcd_AT_BB PORTD|=4+32 #define blcd_AT_CB PORTD|=4+128 #define blcd_BT_AB PORTD|=16+8 #define blcd_BT_CB PORTD|=16+128 #define blcd_CT_AB PORTD|=64+8 #define blcd_CT_BB PORTD|=64+32 v u16 blcd_tim; v u8 aus_zeit
-
Thread
Byte bitweise und als ganzes zugreifen als Datentyp in c
auch in der Firma. Liegt wohl daran, dass wir da nur Controller mit dem selben Endian verwenden (STM32 und AVR). Der arm-Compiler ist inzwischen ein neues Release, und der "alte Kram" funktioniert trotzdem (wäre auch dämlich von Hitex, das einfach mal zu ändern)- Norbert schrieb im Beitrag #7946682
btn28 :1, btn29 :1, btn30 :1, btn31 :1, btn32 :1; }; struct { uint32_t byte1 :8, byte2 :8, byte3 :8, byte4 :8; }; uint8_t byte[4]; uint32_t all; }buttons_t;
-
Thread
[V] verschiedene ATtiny und ATmega
SOIC8 2 Attiny841-SSU 14SOIC 1 Attiny841-SSUR WSOIC14 1 Attiny861A-SU SOIC20 1 Attiny88-AU QFP32 1 Attiny1634R-MU QFN20 1 Attiny1634-SU SO20-W 2 Attiny1614-SSNR SOIC14 1 Attiny1616SFR SOIC20 1 Atmega: Atmega8A-AU TQFP32 5 Atmega168PB-AU TQFP32 1 Atmega328P TQFP32 1 Atmega32-16 TO
Nicht alles ist mehr aktuell (z.B 328P durch den 328PB ersetzt) jedoch eine Samlung an verschiedenen AVR wäre nicht schlecht.
-
Artikel
AVR
Butterfly AVR Raven AVR JTAG-ICE AVR-ISP-Stick RN-Control C-Control PRO (AVR32) myAVR Board Pollin-Starterkit aTeVaL-Board – Nachfolger des bekannten Pollin Evalboards. ISP-mkii-Klon & Seriell/USB-Wandler via USB
und AVR32 Fuse-Bits – Das Setzen der Fuse-Bits ist ein berüchtigter Fallstrick bei den AVRs; vor dem Rumspielen damit unbedingt diese Hinweise lesen! AVR In System Programmer – Programmierhardware Pony-Prog
-
Artikel
Avr-gcc Bugs
.. 2.23 12742 mingw32 and --enable-lto in Canadian cross build 2.23 12161 Unconforming ELF file causes SIGSEGV in avr-ld 2.23, 2.22.x avr-libc 57114 Do not #define abs / labs 57071 57071 Fix math.h and function names that
attributes address , io and io_low 13.3, 12.4 107201 -nodevicelib not working together with -mmcu=avr* devices 13.3, 12.4 109650 Wrong code with -Os (cc0 → CCmode fallout) 13.2, 12.4 105753 ICE: in add_clobbers, at config/avr/avr-dimode.md:2705 13.2, 12.4 99184 Wrong rounding in double to 32-bit and
-
Artikel
Linksammlung
fuer AVR von Imagecraft. Assembler. Atmel AVR ASM Site tavrasm - Toms Linux (Atmel) AVR Assembler gavrasm - Gerds Linux/Win/DOS AVR Assembler avra - avra ATMEL AVR Assembler für Linux, FreeBSD, AmigaOS und Win32
viewer of binary files with built-in editor in binary, hexadecimal and disassembler modes. It includes AVR/Java/i86-i386-AMD64/ARM-XScale/PPC64 disassemblers, russian codepages convertor, full preview of formats - MZ, NE, PE, NLM, coff32, elf partial - a.out, LE, LX, PharLap; code navigator and more over
-
Thread
Darlington Transistoren mit internen Widerständen
gewünschten Spannungen nutzen kann hab ich getrennte Wicklungen mit 0,5V + 1V + 2V + 4V + 8V + 16V + 32V + 64V + 128V + 256V, die an Bananenbuchsen endeten, aufgebracht. Diese konnte ich mit kurzen Verbindungen nach Bedarf zusammenstöpseln und hatte so alle Spannungen bis 512V verfügbar. Später mußte ich
gewünschten Spannungen nutzen kann hab ich getrennte > Wicklungen mit 0,5V + 1V + 2V + 4V + 8V + 16V + 32V + 64V + 128V + 256V, > die an Bananenbuchsen endeten, aufgebracht. > [...] und hatte so alle Spannungen > bis 512V verfügbar Michael H. schrieb im Beitrag #8029771: > mit einem großen Schraubendreher
-
Thread
Schulnotenbewertung eines Arduino-Programms
beim letzten Ausschieben ein Strobe-Impuls gegeben). Interessanterweise funktioniert shifOut auf AVR erwartungsgemäß korrekt, aber auf einem CH32V003 mit entsprechendem Core nicht (die "Library" hier jedoch schon). Aus diesem Grund verwende ich jetzt dann doch eher sn74hc595. Arduino F. schrieb
#8045143: > in Arduino ist ja scheinbar die <string.h> verpönt. Ist sie nicht! Leider ist bei dem AVR-GCC die libstdc++ nicht dabei. Damit gibts kein std::string Verpönt ist nicht das gleiche, wie unmöglich. Die 32Bit und 64Bit Arduinos oder auch Fremdprodukte haben std::string durchaus dabei.
-
Artikel
Gleitkommazahlen
style="text-align:right"| 11 bit double precision Achtung: Abweichend vom Standard sind double beim AVR-GCC und der avr-libc auch nur 32 Bit! long double style="text-align:right"| 80 Bit style="text-align:right"| 1 bit style="text-align:right"| 64 bit style="text-align:right"| 15 bit extendend precision
bei Rechnungen solche Fehler Hinweise. Bei alten (und oftmals heute noch genutzten) Versionen des avr-gcc (<10) wird sowohl float, als auch double mit 32bit gespeichert und gerechnet. Damit verhalten sich diese älteren avr-gcc-Versionen nicht Standard-konform, sparen aber auch Speicher und Rechenzeit
-
Thread
uC Modul Empfehlung, Tipps für den Aufbau einer Schaltung
dein Ansatz "Spannung bestimmt Solltemperatur" unzureichend sein. Wer WLAN will nimmt einen ESP32.
Klingt nach einer Aufgabe für einen ESP (8266 oder 32) mit Tasmota, ESPHome oder ähnlich.
-
Artikel
AVR Arithmetik
RAM 2 3 Bytes dynamisch, 0 Bytes statisch Laufzeit 265 310 Ticks (inclusive Zeiten für CALL+RET) sqrt32.S (sqrt32_round) Abrunden. Siehe auch AVR-LibC 2.3 sqrtu16_floor sqrtu32_floor sqrtu64_floor sowie die sqrt Funktionen in . + Ressourcen-Verbrauch, Abrunden Flash 60 Bytes RAM 2 3 Bytes dynamisch, 0
in VHDL ebenfalls VHDL 32 Bit in C 16 und 32 Bit C und AVR-Assembler Assembler für AVR-GCC bis 256 Bit 2 hoch x , wenn x kein Integer ist schnelle dezimale Division auf AVR & Co. Sinus und Cosinus. siehe AVR Arithmetik/Sinus
-
Thread
LC Messschaltung 'läuft weg'
Ding irgendwann mal eine Neufassung machen – nicht mehr in Assembler und auch nicht mehr mit einem AVR, sondern mit einem STM32 und in C-Sprache, weil die Schreiberei samt Rechnerei damit viel bequemer wird. Es ist ja auch nicht so ganz simpel, es so zu schreiben, dass der Messbereich (nH, µH, mH) sich automatisch einstellt, egal welchen Induktivitätswert man messen möchte, wenn man es in AVR-Assembler mit 32- und 64-Bit-Integern macht.
-
Thread
Stromsparende Schaltung Klimalogger auf Basis Rasp Pi Pico
Christie schrieb im Beitrag #8035199: > Es (das STM32G031 Board) scheint mir auch weniger Beginner-freundlich zu sein wie Arduino Das Board wird von Arduino unterstützt: https://github.com/stm32duino/Arduino_Core_STM32#generic-stm32g0-boards > Beim
Löschen: Da muss man mindestens einen /sector/ (16 pages) 4KiB löschen. Oder einen /block/ à 32 KiB. Oder einen /block/ à 64 KiB. Oder den ganzen Chip. Nemopuk schrieb im Beitrag #8044369: > Eventuell reicht die Lebensdauer des > internen Flash schon aus. Hatten wir schon. Sekündlich
-
Artikel
STM32
STM32F0 (2013) ARM Cortex M0 bis 48 MHz STM32C0 (2022) ARM Cortex M0+ bis 48 MHz - billig STM32G0 (2018) ARM Cortex M0+ bis 64 MHz STM32F1 (2007) ARM Cortex M3 bis 72 MHz - die älteste STM32 Serie STM32F3
JTAG und SWD (Serial Wire Debug) Interface LCD Treiber für bis zu 8x40 Segmente TFT Treiber bei STM32F429/STM32F439 STM32F469/STM32F479 und vieles mehr ... Struktur der Dokumentation. Die Dokumentation der STM32 ist im Vergleich zur AVR-Familie umfangreicher und komplexer. Sie teilt sich in mehrere Dokumente
-
Thread
Artnet-DMX-Node mit 2× DMX Out + 1× DMX In, komplett galvanisch getrennt - gibt es ähnliche Projekte
1 galvanisch getrennten DMX-Eingang besitzt. Das Ganze basiert auf einem von mir gerne genutzten WT32-ETH01 (ESP32 + Ethernet), soll aber von der Hardware her tourtauglich, störunempfindlich und elektrisch sauber getrennt aufgebaut sein. 1. Funktionales Ziel: - ArtNet per Ethernet empfangen - 1
Jahren basierend auf diesen beiden Projekten gebaut. https://shop.ulrichradig.de/Light-Control-DMX/AVR-Node-Bausatz.html http://www.digital-enlightenment.de/usbdmx.htm Sehr cool, dass es die Seiten dazu auch nach Ewigkeiten noch gibt. Meine neuste Version basiert auch auf einem ESP32, aber ohne galvanische
-
Thread
Bosch CJ125 mit AVR AT90CAN64
Grundlage zu diesem Projekt ist ein CJ125 Lambdacontroller von Bosch. Ausgewertet wird dieser über einen AVR AT90CAN64. Dieser regelt einen Mosfet mit PWM und steuert die Heizung der Lambdasonde. Der AVR kommuniziert auch über SPI mit dem CJ125. Dass ganze habe ich im KiCad designt, PCB machen lassen und die
längst mit einem solchen probiert. Aber falls jemand noch einen übrig hat (am besten in einem LQFP32 Gehäuse), kann er sich gerne bei mir melden. Wer hat in diesem Gebiet Erfahrung und kann mir helfen? Ich wäre über jeden Hinweis und Hilfe sehr dankbar. Anbei noch alle dazugehörigen Daten wie
-
Thread
Wasserstandsmessung mit RaspberryPico und Drucksensor MPX2050DP
folgender Maassen konfiguriert: ADC_CFG = 0x88 # Kanal 1, One-Shot, 16-bit, PGA x1 Jede Messung wird 32-fach gemittelt (Integer-Summation, einmalige Float-Konvertierung am Ende). Dies reduziert das Rauschen um Faktor sqrt(32) = 5,7. ADC-Auflösung: 16-bit / 62,5 uV pro LSB. *Lineare Kalibrierung:* Die
aus. Perfekt für diese Anwendung. Fuerchte nur, der zugehörige Display Treiber Code waere für einen AVR etwas zu anspruchsvoll.
-
Thread
Debounce von Tasten mit dem Candidate-Pattern (Platformunabhängig, Theorie)
RELEASED Zusatzinformation im Event -------------------------- [c] typedef struct { uint32_t pressedMask; uint32_t releasedMask; uint16_t stabilityCount; } ButtonEvent; [/c] Beispielimplementierung (Arduino) --------------------------------- [cpp] void MatrixKeys:
Hobbyanwendungen immer so realisiert: da ich meistens ohnehin einen Timer am laufen hatte (PIT bei neueren AVR), habe ich den Zustand der Taste(n) per GPIO schlicht alle 1/64 Sekunden (~ 15,6 ms) erfasst. Die durchschnittliche Betätigungsrate eines Menschen (mit einem Finger!) beträgt ~ 5/s, geübte schaffen
-
Artikel
Festkommaarithmetik
Zwischenergebnissen keine arithmetischen Überläufe auftreten, also genügend grosse Variablen benutzen (16/32/64 Bit Integer) Achtung!: Ein klassischer Fehler ist die Benutzung zu kleiner Variablentypen für den Multiplikationsfaktor oder andere Variablen. Das geht schief, weil C dann nur mit dem kleinen Zahlentyp
Größe: In der Zeile ergebnis = adc * (long)k setzt der Compiler das Unterprogramm 16 bit × 16 bit = 32 bit ein, und nicht das nächstgrößere 32 bit × 32 bit = 32 bit. Man sollte mindestens eine Variable auf der rechten Seite genauso groß deklarieren wie das Ergebnis auf der linken Seite oder einen Cast
-
Thread
Fehlersuche LM741 im Thermostat Alre ITR 71
komisch aus. Das Multimeter zeigt an V-: 0,7V V+: 5V Negierender: 3,65V Nicht Neg: zwischen 3,64 und 3,9V Out ist bei 1,8V+ Kann es sein, dass meine V- zu weit oben hängt? Erkennt jemand auf dem Bild wo die V- für den Opamp herkommen könnte? Bin für jede Hilfe dankbar.
Vervielfacher aus einer Trafowicklung kann auch eine Ladungspumpe mit einem 7660 oder einem missbrauchten RS32 Wandler-IC vorliegen. Deren Elkos können auch das Problem sein. Immer versuchen, das Schaltungskonzept hinter den verbauten Komponenten, versuchen zu verstehen.
-
Artikel
AVR - Die genaue Sekunde / RTC
, wenn irgendein Timer mit einer Überlauf-Interruptfrequenz > 1Hz arbeitet. Dann kann die ISR eine 32-bit-Konstante auf einen 32-bit-Akkumulator addieren; bei Überlauf ist eine Sekunde vergangen. Zugegeben, es gibt "lange" und "kurze" Sekunden, aber der Fehler summiert sich nicht, und der Code ist sehr
multipliziert wird. Der Faktor sollte so gewählt werden, dass: Das Ergebnis actual_value immer in 32 Bit hineinpasst. Die Multiplikation durch Schiebeopertionen ersetzt werden kann, weil der Faktor eine 2-er-Potenz ist. (Das erledigt avr-gcc) Immer wenn tsdaytim_calibrated() erkennt, dass eine Sekunde
-
Thread
Hilfestellung bei der Auswahl des richtigen PCB-Prototypen-Erstellungswerzeugs
um den Faktor 10 schnelller UND VOR ALLEM ZUVERLÄSSIGER als das neueste bunte drag & drop Windows 64-Bit Tool mit Cloudanbindung für mehrere Tausend Euro. Merke: Nur weil etwas für dich das NonPlusUltra ist, muss das nicht zwangsläufig für alle anderen auch so sein. ;-)
F. schrieb im Beitrag #8064950: > Pinabstand >=1.27mm ATmega328P SOIC? Das schließt ja STM32 usw. schon mal aus, bzw. dann muss das Dev Board im ganzen drauf.
-
Artikel
Wanderkiste (Widlar)
, mal schauen was sich ggf. noch findet... S: Retro-Home-Computer ICs (Atari/Amiga/C16,C116,Plus4,C64,VC20), STM32 Controller/Boards, praktische ICs, neue Bauteile ((FE)T,R,C...) mal schauen was so dabei ist. 7 Hobby B. 25.02.2023 06.03.23 003404344200652675 12,7 kg 8 Martin S. 45xxx S. VFD Display,
02017172001696 Hermes 3 Stefan V. 10xxx 22.01.2024 07.02.2024 02038150017171 Hermes 18,3kg B: Orange Pi Zero, PY32F00x, STM32F030K6, ESP8266 Module ESP-01/12, SMD Speicherdrosseln, SMD (Power)LEDs, ENC28J60 Module 4 Benedikt M. Süd-DE 10.02.2024 12.02.2024 02043127007598 Hermes, 20.2 kg S: Orange Pi, Pi Pico, SMD
-
Thread
Python SCPI - Keithley DMM6500 u.ä.
procfs - 0.00 GB gesamt, 0.00 GB frei zmisc/compat - 1976.90 GB gesamt, 1974.24 GB frei zjail - 857.64 GB gesamt, 828.24 GB frei zroot/tmp - 95.65 GB gesamt, 93.04 GB frei zmisc/junk - 3312.43 GB gesamt, 1974.24 GB frei zmisc/export/camel - 100.00 GB gesamt, 59.09 GB frei zroot/home - 266.90 GB gesamt
Formatierung und du wirst es zu schätzen lernen. ;-) ad1: Geht übrigens auch mit Hex-Werten, zB. ein 32Bit WORD optisch in zwei HALFWORDS zu splitten. Oder 32bit Bin-Werte in vier Gruppen à 8Bits.
-
Artikel
FIFO
Diese FIFOs sind auf so ziemlich allen Plattformen nutzbar, entwickelt wurde sie jedoch auf einem AVR. Daher ist im FIFO im Moment auch noch eine Begrenzung der FIFO-Größe auf 64kiB vorhanden, welche aber leicht per typedef in fifo.h abgeändert werden kann. Ebenso kann die Größe der FIFO-Elemente eingestellt werden (8, 16, 32 Bit, ebenfalls structs). Alle FIFO-Funktionen sind interruptsicher aufgebaut, d.h. die kritschen Zugiffe auf die FIFO-Kontrolldaten erfolgen atomar. Damit ist der Einsatz im Hauptprogramm und in Interrupts