-
Artikel
Temperatursensor
problematisch Interrupt C für ATmega8 auch problematisch fertiger Code zum Einlesen des Zacwire-Protokolls für PIC in ASM RN: Bascom TSIC206 Thermometer mit Uhr und Kalender. Komplette Bauanleitung mit ASM Quellcode für AT-Tiny2313 TSIC
Datenblätter/Herstellerinformation: BME280: BME680: Projekte/Code [ASM] BME280 mit OLED Display am ATmega808 [ASM] BME280 mit OLED Display am ATtiny85 Preis: BME280 / BME680 Reichelt 5,20€ / 9,45€, Conrad 8,33€ / xxx, Aliexpress ~2,50€ / ~15,-€ HDC1080. Der HDC1080 von Texas Instruments kombiniert einen
-
Thread
"Arduino kompatibler" MC für 2025
pillepalle-Anforderungen ist er allemal kompatibel. Zumal du ja wohl mit Arduino programmieren willst. Da wird der ATMega328PB jetzt schon unterstützt. Warum nimmst du nicht gleich ein Arduino-Board deiner Wahl mit dem ATMega328PB?
Headerfiles beider Controller. Wahllos verglichen, paar Bsp. [code] P: #define SPCR _SFR_IO8(0x2C) PB: #define SPCR0 _SFR_IO8(0x2C) P: #define PRR _SFR_MEM8(0x64) PB: #define PRR0 _SFR_MEM8(0x64) P: #define TWCR _SFR_MEM8(0xBC) PB: #define TWCR0 _SFR_MEM8(0xBC) P: #define
-
Thread
AVR removed in GCC 16 ?
nicht default weil es noch mindestens einen Fall gibt, wo LRA falschen Code erzeugt (mit -Os -mmcu=atmega8 -mlra): [c]__attribute__((noipa)) void func2 (long long a1, long long a2, long b) { static unsigned char count = 0; if (b != count++) __builtin_abort (); } int main (void) {
-
Thread
ADC-Kanäle sukzessive abfragen
Hallo, Johann L. schrieb im Beitrag #7880848: > In den Datenblättern steht dazu nix. Datenblatt ATmega8/L (2486AA-AVR-02/2013), Kapitel "ADC Input Channels", Seite 194: "In Free Running mode, always select the channel before starting the first conversion. The channel selection may be changed one ADC
; uint8_t adc_mux; uint16_t adc_sum[ANZKANAELE]; uint8_t adc_kanal_nr; uint8_t nr_messung; bool adc_werte_bereit; void reset (void) { adc_werte_bereit
-
Thread
CH32V003: Selbstbauprogrammer und "Getting started"
einem > Atmel/ST/usw irgendwie klueger? Warum sollte das klüger sein? Mit Atmel gibt es den für ATmega88 bis 328p und ATtiny2313, nennt sich wie oben genannt ArduLink .. und ist schnarch lahm. Ob es etwas für STM32 gibt weiß ich nicht (glaube ich allerdings auch nicht). Also, warum sollte es klüger
und ich bin immer mehr entsetzt): - CH32V003: 9572 Byte (riscv-none-elf-gcc 14.2.0) - UNO R3 (ATmega328): 2040 Byte (avr-gcc 7.3.0) - UNO R4 (RA4M1): 52576 Byte (arm-none-eabi-gcc q7-2017, für mich absoluter negativ-Wahnsinn) - STM32F401: 12836 Byte (arm-none-eabi-gcc 13.2.1) - STM32F103: 12136
-
Thread
Verständnisfrage zu Assembler bei PIC und ATMEL
GSM-Alarmanlage, glaube das waren am Ende um die 340kB Text und mehrere tausend Zeilen (für einen ATMega1284)...
: Im linken Menü unter „XC8 Global Options“ den Punkt „XC8 Linker“ auswählen. Zusätzliche Optionen einstellen: In der Kategorie „Additional options“ (Zusätzliche Optionen) das Feld für benutzerdefinierte Linker-Parameter
-
Thread
TIMER0 "fast PWM" Frage zu höherer Frequenz bei geringerer Auflösung
unterschiedlichen Auflösungen und Frequenzen zu > erzeugen? Nur für die Timer1/3 der klassischen AtMega oder für die D-Type-Timer der neueren Baureihen. Da sind auch gepufferte Frequenzänderungen möglich.
MHz erzeugt (PCK) um Timer1 zu takten. Damit sind 500 kHz PWM-Frequenz (bei 7 Bit) machbar. Mit 8 Bit Auflösung reicht es noch für 250 kHz...
-
Thread
HT16K33A mit CH32V003
Chip zum Einlesen von Tasten noch zusätzliche Widerstände benötigt), Ergo: Anzeigen sind machbar bis 8-stellige 7-Segmentanzeige - verwendet Bitbanging I2C-Routinen, damit das ganze leicht auf andere Mikrocontroller portierbar ist (natürlich auf STM32 und auch auf einem ATmega schon getestet). Sollte
ein CH32V003 zum Programmer wird und dieser Chip einmalig von einem Arduino Uno/nano oder einem ATmega mit USB2UART Bridge geflasht werden muß. Prinzipiell kann auch ein Arduino alleine als Programmer dienen, ist aber nicht empfehlenswert, da dieser für die max. 16 kByte Flash die der CH32V003 besitzt
-
Thread
Suche Beispiel oder wenigstens Manual zu Arduino Bibliothek
Ahh, da ist alles static und der ctor ist private. Also müsste es so klappen: [c] uint8_t data = 0x12; EEPstore<uint8_t>::set(data, 0x0000); [/c]
daher nicht erlaubt. Beachten muß man aber, daß das Schreiben Zeit kostet, je nach AVR-Typ etwa 8ms je Byte. Größere Arrays können also dauern. Z.B. schreibt man beim ATmega2560 alle 4kB EEPROM, dauert das ~33s.
-
Thread
Codecontrolle und Fragen zu Microchip Studio
befindet. Es soll Grundlegend so funktionieren: über einen MCP2221A kommen Serielle Daten zu einem ATMEGA32. Dieser hat einen Software UART implementiert, welcher die Daten zu einer Externen schaltung weitergibt. Es werden über 2 seperate Pins auf Kurzschluss auf der Seriellen Schnittstellean den
108 Was will mir das Programm mitteilen? Ich sage doch dem Programm, das die Geschwindigkeit 8 Mhz beträgt (Zur Verbesserung der Timer und USART/UART Kommunikation), über einen Externen Quarz. EDIT2: Kommando zurück, habe den Fehler gefunden. Die Definition der CPU geschwindigkeit muss vor
-
Thread
Analoges Projekt auf MC umrüsten. Frage zu PIN Zuweisungen.
einen Anfänger ein nicht zu unterschätzender Vorteil. https://www.reichelt.de/de/de/shop/produkt/8-bit-atmega_avr_mikrocontroller_32_kb_20_mhz_pdip-28-119685
Manfred P. schrieb im Beitrag #7874923: > https://www.reichelt.de/de/de/shop/produkt/8-bit-atmega_avr_mikrocontroller_32_kb_20_mhz_pdip-28-119685 Die neuen AVRxxEA z.B. gibts auch in DIP und die können wesentlich mehr (Timer, ADC/DAC u.a. Peripherie, Speicher) zu sogar etwas günstigerem
-
Artikel
Speicher
enable) und /CS (chip select) angeschlossen. Der Datenbus für einen Speicher der Organisation 32k x 8 Bit hat eine Breite von 8 Bit, der Adressbus ist dann 15 Bit breit. Um den Speicher zu aktivieren, muß /CS auf LOW (Masse) gelegt werden. Das kann verwendet werden, um mehrere Speicher- oder andere Bausteine
auf mehrere Zellen oder Bits vermieden werden: Beispielsweise kann eine Uhr eines Arduino Uno mit ATmega328P, die Versorgungsausfall durch Stehenbleiben wie eine mechanische Uhr „überleben“ soll, minutenweise jeweils 1 Bit in einem 60 Bit (8 Byte) großen EEPROM-Abschnitt löschen. Oder sekundenweise in
-
Thread
LCD-Adresse im C-Programm
[/code] Wobei zu mindestens die Ausgabe vom RA8875 nicht stimmt. Die sind laut Datenblatt nur 8-Bit breit. ChatGPT behauptet 8/16Bit.
, wird auch nur dafür Code erzeugt. Hier mal ein Beispiel für ein VFD: [c] #define vfd_data ((u8 volatile xdata*) VFD_ADDR) bit DisplayOut( u8 c ){ u8 i = VFD_MAX_BUSY; // 250 * 8 cycle do{ if( 0 == (*vfd_data & VFD_BUSY)){ *vfd_data = c; // byte to diplay return
-
Thread
Strom Opferanode Warmwasserpuffer messen
Strom, der zwischen Opferanode und Warmwasserspeicher fließt, zu messen. Das Signal soll mit einem ATmega32u4 (Vcc=3,3V) verarbeitet werden. Messungen an der Opferanode haben folgendes Verhalten gezeigt: [code]Leerlaufspannung = 0,17V 1000 Ohm : 0,16V -> 0,16mA 100 Ohm : 0,10V -> 1,0mA 10 Ohm
Somit deutlich mehr als ausreichend. Korrektur: Hatte fälschlicherweise mit 12bit gerechnet. Der ATmega hat aber nur 10bit. Sind somit 0,012mA/LSB.
-
Thread
Arduino Nano Störungen und Durchbrennen
der Oberseite führen. Viele deiner Signale sind viel zu dick. 0,25-0,3mm reichen locker. VIAs 0,6-0,8mm sind OK. [[Richtiges Designen von Platinenlayouts]]
uncharted territory. Details will be added if the situation changes. (UPDATE: this is still true with v8 and v9.)"
-
Thread
Mehrere CAN Teilnehmer
zumindest mit 10. > Aber auch ab dann geht keinerlei Kommunikation mehr. Mal so nebenbei: Mit einem 8-Bit Atmega328 mit 16MHz und einem externen MCP2515 CAN-Controller verarbeite ich 1000 CAN-Botschaften pro Sekunde. Ohne Probleme oder irgendwelche verspäteten Botschaften. Ein STM32 mit internen CAN
mit 10. >> Aber auch ab dann geht keinerlei Kommunikation mehr. > > Mal so nebenbei: Mit einem 8-Bit Atmega328 mit 16MHz und einem externen > MCP2515 CAN-Controller verarbeite ich 1000 CAN-Botschaften pro Sekunde. > Ohne Probleme oder irgendwelche verspäteten Botschaften. > > Ein STM32 mit
-
Thread
Vier Gewinnt für CH32V003 und Linux-Toolchain
Spieleprogramm auf den Chip portiert, der im Ursprung einmal als JavaScript kodiert, danach auf einen ATmega portiert war. Jetzt habe ich das weiter auf eben einen CH32V003 portiert. Hier ging es mir erst einmal nur darum, die "KI" des Spiels auf den Chip zu portieren um zu sehen, wie groß das Compilat
steht. Haben IMHO relativ schoene Peripherie, also adc, uart usw. Interessant ist das sie beim SOT8 mehrere Pins zusammen gebondet haben. Doof ist das sie beim SOT16 das nicht gemacht haben und man so eines der SPI Signale nicht zur Verfuegung hat. :-( Die einzig echte Schwaeche ist IMHO das sie
-
Thread
Suche programmierbare Lüftersteuerung
H. H. schrieb im Beitrag #7871743: > 2, 3 oder 4-Pin? Nach über 5 Stunden und 8 unkonstruktiven Beiträgen kommt die wichtige Frage!
#7871746: > H. H. schrieb im Beitrag #7871743: >> 2, 3 oder 4-Pin? > > Nach über 5 Stunden und 8 unkonstruktiven Beiträgen kommt die wichtige > Frage! 3 Pin
-
Thread
i2C TWI Slaves 7Segment ATmega8 Assembler
Der Hinweis, daß das für einen Atmega8 ist, sollte noch in die Beitragsüberschrift ...
Theoretisch lassen sich, ohne großen Aufwand, *12* 7-Segment Stellen ansteuern. Mehr Pins hat der ATmega8 leider nicht.
-
Thread
Neuer ReAVR in Aussicht
ich auch noch zu neu dort. > Ansonsten finde ich, dass der Tiny28 - der erste Tiny mit mehr als 8 > Pins - und der Tiny15, der noch nach den 11/12/28 kam und als erster mit > interner x4 PLL "richtig" schnelle 8bit-PWM ermöglichte, durchaus auch > einer Erwähnung bei den RAM-less AVRs wert sind. Historisch halt, genauso wie AT90S1200 und ATmega103, der dann ziemlich schnell einen ATmega128 als Nachfolger bekam. Dieser wiederum wurde zum „Dauerbrenner“, der wird als ATmega128A sogar zwei Jahrzehnte später noch produziert.
-
Thread
=== GCC v15 ===
size = 6 */ $ avr-gcc-15 getint.c -Os -S -mmcu=atmega8 && grep 'size =' getint.s /* frame size = 4 */ /* stack size = 8 */ $ avr-gcc-15 getint.c -Os -S -mmcu=atmega8 -mlra && grep 'size =' getint.s /* frame size = 0 */ /* stack size = 6 */[/pre] Das schlägt natürlich durch auf die Codegröße: [pre] $ avr-gcc-8 getint.c -Os -c -mmcu=atmega8 && avr-size getint.o text data bss dec hex filename 76 0 0 76 4c getint.o $ avr-gcc-13 getint.c -Os -c -mmcu=atmega8
-
Thread
DCF77 Modul Vergleich
Das Modul wurde, zusammen mit einem ATmega16, aus einem Spannungsregler LP2950 CZ 5.0 versorgt; dieser hatte an seinem Ausgang (die üblichen) 10 uF (Elko) sowie 100 nF. Modulausgang ging direkt auf Port C1 des uC.
Der Takt wird mit beiden Flanken zueinander invertiert ausgewertet. Quelle: Funkschau 1979 Heft 8 ciao gustav
-
Thread
E-Bike legalisieren (PAS+Speed->Gas)
abgibt, die Geschwindigkeit steuern kann. Drei, viet mal treten, "Surrrrr", Nachlauf abwarten =8-9km/h, ect... Ich kenne halt jede schraube, Kratzer und Eigenheit meines Pedelec.
passende Tools und du kannst ihn entsprechend programmieren. Die Beschriftung ist schwer zu lesen: X8M06... (es gibt wohl einen XCM X8M06 ?!?) In der zweiten Zeile dann 1428EB493 oder 1428EB493x?3 Hilft das was? @alle: Können wir aufhören über die Regeln für Pedelecs zu reden? Sooo viele sind
-
Thread
Problem mit Funktion
LedControl) für die Ansteuerung des MAX7219-ICs für die Verwendung in C mit Microchip Studio (µC: ATmega88PA) umgeschrieben. Jetzt habe ich eine Funktion geschrieben, die Daten aus einem 2D-Array auf einer 8x8 LED-Matrix in einer Dauerschlaufe wiedergeben soll. Die Funktionsparameter sind das Zeit-Intervall
einen Compiler gejagt zu haben): [code] // Funktion void display_frames(uint16_t interval, uint8_t start, uint8_t end) { static uint8_t x = 0; static uint32_t previous_ms = 0; if (millis() - previous_millis >= interval) { previous_millis += interval; for (uint8
-
Thread
PicoMon für CH32V003 oder STM32F0xx
Pixelauflösung von 128x128, 160x80, 160x128 und 320x24 mit Schriftstilen in 4 unterschiedlichen Größen: 5x7, 8x8, 10x16 und 12x16 Pixeln. Aus der Kombination von unterschiedlichen Displayauflösungen und Schriftgrößen ergeben sich viele Kombination hinsichtlich der dargestellten Zeichen auf dem Display. Die
4800 Bd verschicken kann (also von allen, getestet habe ich das mit MCS-51, AVR, Padauk PFS154, STM8, STM32 und CH32V003). Zur Demonstration habe ich dem Archiv ein Demoprogramm für AVR ATmega mit eingepackt (bei mir ist das ein abgespeckter Arduino-Nano, dem die Chinesen damals den Mega328p entfernt
-
Thread
Trapez-Ansteuerung von KFZ LEDs
/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcAmALNZA2VAOMmB2SBVATlIQJFSqQUhAQFMBaMMAKADcRtr9eqEMhw4ow8LykMYCDgCdBw0UuRpx9SBwAqwgsmHqAzAgMixDIRBlRo5UhwDuesyuT6QRo5igd8Bsh8TANIgnCEDABMmADMAQwBXABsAFxYkpkjJGxh8P0wQoORLUM9TCWj45LSMrOtxXMx8wuUxQM9iitjE1PTM7IboPOd3Ay8fVDhPb19nSYZx6im1IS1nYMMhec3Z6lKVstcLDiyETAYwUjMPS7MQSp6Up0Zzz3CXi6vd0fAvn4O1h83ltSkZ3oD2qgBO0watnpCBAcoT4tGACGJ8AwDpjPJgxD5rBhBsRwPB4LZIGYZLAwEgYIhfDwwKgtgJmUJvBZxJNwOhVoM5M4+NiRDtAXxkSgxJzvupJez+CjnjiDv91KiCnsfMgzlrWl0qr1agNqXl-HqkftdVFutU+nUGrY8kA
-
Artikel
UV-Belichter-Timer mit AVR
maximalen Taktfrequenz des verwendeten Controllers (20 MHz bei den neueren Typen ohne V-Suffix oder z. B. 8 MHz beim ATmega8L) sind grundsätzlich alle Werte möglich. Die Firmware muss dann selbstverständlich angepasst werden (Symbol F_CPU, evtl. erhöhtes Prescaling der Timer 0/1 und 2). Teileliste und Bezugsquellen
Reichelt L1 MICC-100K-02 (s. Anm.) Fastron Reichelt T1 VB 2,8/1/6 Block Reichelt U1 ATmega48-20PU Atmel/Microchip Reichelt U2 LF50CV ST Microelectronics Reichelt U3 TSOP31236 Vishay Reichelt Y1 (4 MHz, HC49U-S, C L =20 pF) (?) Reichelt Schaltplan und Layout (KiCad
-
Thread
AVR ATtiny Serie 1: Input Capture TCD0
immer ähnlich aufgebaut. Paar Bsp. hintereinander gibts hier. https://forum.arduino.cc/t/nano-every-atmega4809-am-anfang-stand-der-anfang/701185 Viele Zusammenhänge was wie möglich ist mittels Eventsystem kann man übrigens im Headerfile rauslesen. Anhand der Bitkonfigurationen und Aufteilung der Abschnitte
Gegen teilweise obszönen Peripherie-Benennungs-Wallungen bei anderen Architekturen ist das bei den AVR8 doch immerhin noch wenigstens halbwegs konsistent und einheitlich. Gegenüber dem doch mitunter recht heftigen Wildwuchs bei den Classic-Teilen (vor allem bei den Tinys) ist es bei den modernen auf jeden
-
Thread
Wettkampf Opa(MOS6502) gegen Frischling(ATmega)
einfache und geradlinige Befehlssätze. - **AVR ATmega32u4 (2008):** - Taktfrequenz: 16 MHz (oder mehr, abhängig von der Konfiguration). - 8-Bit-Architektur mit erweiterten Funktionen und Optimierungen. - Hardware-Divider und viele Optimierungen
Mairian schrieb im Beitrag #7863593: > - **AVR ATmega32u4 (2008):** > - Taktfrequenz: 16 MHz (oder mehr, abhängig von der Konfiguration). > - 8-Bit-Architektur mit erweiterten Funktionen und Optimierungen. > - Hardware-Divider und viele Optimierungen
-
Thread
ATmega328P nagelneu und dennoch defekt!?
neuem Chip. > Schade. dass die geheim bleiben. > Denn der Auslieferungszustand ist 1MHz und nicht 8 Ich habe beim Boardmanager "DIY ATmega*8" von James Sleeman installiert. - als Board "ATmega328/P/PB" ausgewählt - Processor Version "Atmega328P" - Processor Speed "(8 MHz intern) - Use Bootloader
Norbert schrieb im Beitrag #7861712: > Ich habe beim Boardmanager "DIY ATmega*8" von James Sleeman installiert. > - als Board "ATmega328/P/PB" ausgewählt > - Processor Version "Atmega328P" > - Processor Speed "(8 MHz intern) > - Use Bootloader "No" > - LTO "enabled" >
-
Thread
CH32V003, float wirklich langsam?
Ralph S. schrieb im Beitrag #7861914: > F. schrieb: >> Der ATMega ist eine extrem gut ausgestattete moderne 8-Bit-CPU, die >> recht gut optimiert ist. Das lässt sich der Hersteller aber auch >> bezahlen. Der CH32V003 ist ein absolutes Lowcost-Produkt. Der ATMega328
Ralph S. schrieb im Beitrag #7968242: > ATmega328p / 16 MHz : 18 Sekunden > CH32V003 / 48 MHz : 6.2 Sekunden d.h. der Atmega wäre bei 48MHz fast genauso schnell aber mit 8 statt 32 Bit.
-
Thread
Fehlermeldung: near initialization for
)\n", cmd); #else lcd_waitbusy(); lcd_write(cmd,0); #endif } void lcd_data(uint8_t data) { #ifdef AVRTEST_H printf ("lcd_data(%d)\n", data); #else lcd_waitbusy(); lcd_write(data,1); #endif } [/c] Um auszuschliessen, dass es am Atmega liegt, habe ich einen
flash uint8_t ctrl_key[][8] = { static const uint8_t __flash ctrl_key[][8] = { [/c] Das Ganze funktioniert auch einwandfrei. Eigentlich hatte ich erwartet, dass der Compiler mindestens eine Warnung raus gibt