-
Thread
Fragen zu AVR C
nach GND verbunden. Jedes Segment hat quasi seinen eigenen Transistor und die werden durch die einzelnen uC Pins gesteuert. Die Anzeigetechnik ist Multiplexing, der uC ist ein Attiny2313. Ich hab 2 konkrete Fragen zum avr-C, folgende Situation: 1) Ich wollte Taster per Interrupt einsetzen. Dazu
reseted. Dann hab ich die Loesung ohne Interrupts wie im Anhang verwendet mit der direkten PIN abfrage. 2) Ich wollte die 7Segmentanzeige an und ausmachen wollen per Taster. Also hab ich in meiner Pinabfrage folgenden Code ausprobiert, hier mal als Ausschnitt ausm Kopf zusammengereimt: [c] int
-
Thread
Probleme und Anregungen mit USART auf ATMega32
write_idx] = UDR;" in die IF-Abfrage rein nimmst, wird UDR beim Überlauf des Schreibindexes nicht in das Array übertragen! Schreib es besser so: [c] ISR(USART_RXC_vect) { if (write_idx < 200) { write_idx++; }
im gegensatz zum µC (16MHz) mit 19200baud recht langsam ist (19200/10Bit Wortlänge = 1920 Zeichen pro Sekunde). Daher warte ich je nach eingestellter Bautrate min. die Zeit von einem Zeichen + 20% bis ich zurück gebe ob
-
Thread
64Bit Senden, funktioniert zwar, aber wie kann mans effizienter gestallten?
ich versuche mir gerade eine Uhr zu programmieren. Im Augenblick steuer ich die LEDs für jede einzelne Sekunde über eine einzelne switch case Abfrage an. kleines Beispiel: [c] switch (sekunden) { case 1: SPI_MasterTransmit(0x01); SPI_MasterTransmit(0x00); SPI_MasterTransmit(0x00
Der folgende Code sollte die Anforderungen erfüllen: [c] uint8_t temp; uint8_t s = 1; for (uint8_t byte = 0; byte < 8; byte++) { temp = 0; for (uint8_t bit = 0; bit < 8; bit++) { if(sekunden >= s) temp += (1 << bit);
-
Thread
Einen ATmega 16 zum Arduino Standalone benutzen
ist super ;). Dazu noch 2 oder 4 Taster zusätzlich an den µC. Diese könnte ich über die anderen 4 analog-Eingänge auslesen.. Dann würde alles passen. Ich werde jetzt bei zeichelt nen neuen µC bestellen + ein bisschen Kleinkrams. Bin gespannt ob das alles funktioniert
über I2C erfolgen, nicht mehr mit der LiquidChrystal Library. Siehe auch: http://arduino.cc/playground/Code/LCDi2c > Außerdem möchte ich ein 4 Wege Joystick anschließen. > Die gegenüberliegenden Richtungen
-
Thread
Ideensuche für getriggerte Zwischenzeitmessung
danke schon mal. ich sitze jetzt gerade wieder dran... ich verwende ja den 90s8515. er hat einen 8bit-timer0 und einen 16bit-timer1. aber beide sind doch zu klein, um damit eine zeitmessung mit ms und s aufzubauen? wenn ich den 16bit-timer nehme, habe ich ja nur 2^16 verschiedene zeitstempel, oder?
ok, und was macht man am besten, wenn man eine 16bit oder eine 32bit-zahl über den uart schicken möchte? ich hab die zahl ja als unsigned int im c-code. wie bekomme ich die in 8bit-teile und danach auch wieder zusammen?
-
Thread
ADC direkt an den PC
PC einen UART. >Das kann nicht funktionieren. Natürlich funktioniert das. Man kann doch die einzelnen Leitungen der RS232 per Software setzen bzw. abfragen. Da braucht's auch keinen MAX232. Die meisten Schnittstelleneingänge erkennen 0 oder 5V als H oder L. Die Ausgänge musst Du halt für den ADC
einen UART. >>Das kann nicht funktionieren. > > Natürlich funktioniert das. Man kann doch die einzelnen Leitungen der > RS232 per Software setzen bzw. abfragen. Da braucht's auch keinen > MAX232. Die meisten Schnittstelleneingänge erkennen 0 oder 5V als H oder > L. Die Ausgänge musst Du halt für
-
Thread
STM32 I2C Probleme
_7bit; I2C_InitStruct.I2C_Timing = 0x00201D2B; I2C_Init(I2C2, &I2C_InitStruct); // init I2C2 // enable I2C2 I2C_Init(I2C2, &I2C_InitStruct); I2C_Cmd(I2C2, ENABLE); RCC_AHBPeriphClockCmd
mein STM32 tatsächlich ein I2C-Signal aussendet. Da die Bibliothek so abstrakt ist, kann ich nicht nachvollziehen welche genauen Signale überhaupt versendet werden, und wie ich einzelne Bits schicke etc. Ich arbeite auch nicht
-
Thread
HDD Festplatte ATA IDE an AVR µC Mikrocontroller ATmega1284p Assembler - viele Fragen
Register schreiben 6. Den Command Code ins Command Register schreiben 7. Das Status-Register abfragen 8. Wenn BSY = 1, gehe zu 7 9. Das Daten-Register lesen (16 Bit!) 10.Das Status-Register lesen 11.Wenn DRQ = 1 ist, dann gehe zu 9 12.fertsch! Nun zu den ersten Fragen: - wie muss Sector
keinen Geschwindigkeitsverlust haben. So machst du dir nur das Leben schwer. Bit Bang geht auch in C gut und schnell. Ja dein "wait BUSHY" ist auch sehr lustig.
-
Thread
Brauche logische Hilfe bei Problemansatz
Schon mal was von Bitfeldern gehört. also z.B. [c] typedef struct { uint8 Bit0:1; uint8 Bit1:1; uint8 Bit2:1; uint8 Bit3:1; uint8 Bit4:1; uint8 Bit5:1; uint8 Bit0:1; uint8 Bit0:1; }Bitfeld1; [/c] kann ma auch ganz
auch die notwendigen Umrechnungskonstanten für die einzelnen ADC Kanäle unterbringen. Nur mal so als Hinweis, wozu man die Struktur zu noch so allem ausnutzen kann um das Programm zu vereinheitlichen. [C] struct ChannelDescription { char Caption[20
-
Thread
Nachhilfe in C
aber ungewöhnlich scheint die Erfahrungen nicht zu sein) folgende Erfahrungen gesammelt: Die einzelnen Befehle, selbst Konzepte wie verschiedene Schleifen, Abfragen usw. sind kein großes Problem und recht schnell für sich erlernt und viel wichtiger auch verstanden. Das ganze aber zu einem Programm
man sich zur Not helfen lassen, den Rest am besten selber üben, oder (wegen der Motivation) an einem C-Lernkurs (gibt es auch Online) teilnehmen. Vorschlag: C in Linux üben, oder mit dem Watcom Compiler (32 Bit, Protected Mode) in aktuellen Windowsversionen. Jörg W. schrieb im Beitrag #7729840:
-
Thread
STM32: Bitbanding für Arrays?
)) | (value << bit); }[/c] Ist dann sogar portabel und hängt nicht vom Bit-Banding einer spezifischen Hardware ab. Wenn du C++ nutzt, kannst du auch einfach std::bitset nehmen.
) #define bb_offs(array) ((unsigned)(array) - RAM_BASE_BYTES) #define bb_bit(array,bit) bb_ram[bb_offs(array) * 8 + (bit)] bb_bit(ee_fat,123) = ... if (bb_bit(ee_fat,123)) ... [/c]
-
Thread
Java auf AVR Gesperrt
automatisch abhängige Klassen mitübersetzen? > Ich bin in der Tat kein Java-Profi, sondern eher der C-Guru. Ich hab keine Ahnung. Ich würde auch lieber Suns JDK nehmen, aber es gibt davon keine 64Bit-Version. > Und wegen des Bootloaders: Ich ersetze den Asuro Bootloader, der ist > das speziell
Warum vier Bit? Naja, ich hatte die Pins frei und wusste wie's geht. Es ist aber überhaupt kein Problem, auch 4 Bit vorzusehen und dann in native_io.c per #ifdef LCD_4BIT auch passenden 4-Bit-Code vorzusehen. Das
-
Thread
STM32F4 Taster
SystemInit(); initApplication(); do{ if (GPIOA->IDR & 0x0001) { GPIO_ResetBits(GPIOD,GPIO_Pin_15); } else { GPIO_SetBits(GPIOD,GPIO_Pin_15); } } while (1); return 0; }[/c] Keine Vermutung ist, das irgendetwas mit GPIOA->IDR & 0x0001 falsch
Hallo 12V DC, hier Auszug aus Code: [c] if (GPIOA->IDR & 0x0001) { debug_printf("PIN PD15 ON\n"); GPIO_SetBits(GPIOD,GPIO_Pin_15); } else { debug_printf("PIN PD15 OFF\n"); GPIO_ResetBits(
-
Thread
Eisenbahnsteuerung mit Atmega16
einen AVR als >Slave zu verwenden! Komisch. Atmel AppNotes: AVR311: Using the TWI module as I2C slave AVR312: Using the USI module as a I2C slave AVR315: Using the TWI module as I2C master Am besten erstmal an der Quelle suchen. MfG Spess
>>Slave zu verwenden! > > Komisch. Atmel AppNotes: > > AVR311: Using the TWI module as I2C slave > AVR312: Using the USI module as a I2C slave > AVR315: Using the TWI module as I2C master > > Am besten erstmal an der Quelle suchen. > > MfG Spess Vielen Dank. Das habe ich
-
Thread
Problem AM-Empfänger konstruieren
/* wait */ } data_received_1 = SPDR; PORTX |= _BV(SELPIN); /* deactivate /SEL */ [/c] U. U. musst du mehr als nur diese 16 Bit rausschieben, beispielsweise zum Lesen des FIFOs. In dem Falle interessiert sich der SPI-Slave typischerweise nicht dafür, /welche/ Daten du ihm schickst
Sorry, ich programmiere vor allem deshalb in C, weil ich keinen Assembler mehr debuggen möchte. ;-) Eins fällt mir sofort auf (und das ist einer dieser typischen Fehler, die einem der C-Compiler abgenommen hätte …): [avrasm] SPIS: ;Abfrage
-
Thread
interrupt-reihenfolge und timingproblem für pic16fxxx
In diesem Fall wird 65536 zu anzahl0 addiert. zu INTCONbits.T0IF: Wie man bei deinem Compiler einzelne bits abfragt musst du wissen, mein Code ist für den C18
pic_ler schrieb im Beitrag #3548941: > Wie ich das Bit abfrage muß ich natürlich noch > rausfinden, aber ich weiß jetzt, was ich machen > muß. [c] if((INTCON&0b00000100)&&(timerwert < 30)) [/c] So sollte es ziemlich sicher funktionieren.
-
Thread
assember
temp, LOW(RAMEND) out SPL , temp ldi temp, HIGH(RAMEND) out SPH , temp ;Port C zum Eingang machen: ldi temp,port_als_eing out DDRC,r17 ;PORT D zum Ausgangmachen: ldi temp,port_als_ausg out DDRD,r17 Abfrage: ;Abfrage der PINs an Port C sbis PINC
Warum soll "jmp Abfrage" beim Mega16 falsch sein? Bei Portc beachten, dass das JTAG-Interface einzelne Bits des Ports blockiert. Dafür gibt es aber das Bit JTD in einem der MCU-Steuerregister. Übrigens: Doppelklick
-
Thread
Einfacher Check ob mehrere Tasten gedrückt sind
Port ? Was ist das......... Tatzenparallelschaltung ? Sind dann alle gleichberechtigt und nicht einzeln bestimmbar. Lösung : Tatzenmatrix mit mehereren Ports oder Abfrage der Tatzenauswirkung(en)
Du die Tasten am Mikrocontroller angeschlossen hast. Er wäre noch interessant zu wissen, welchen µC Du einsetzt. Bei der Abfrage mittels Interrupt solltest Du unbedingt darauf achten, das der IRQ-Pin flankengesteuert und pegelgesteuert konfiguriert ist. Sonst kommt der µC aus dem Interrupt nicht
-
Thread
ADC Channelauswahl
liegt hier der Fehler? Ähm. Wenn du nur den Kommentar änderst, wird das den Compiler bzw. den µC nicht sehr beeindrucken. Ausserdem: Im ADMUX Register sind auch noch andere Bits. Unter anderem auch die Auswahl der Referenzspannung. Es wäre daher sehr günstig, wenn du beim Setzen der Kanalselektion
> while (!(ADCSRA & (1<<ADIF))) Das ADIF Bit abzufragen ist nicht so toll. Denn: Du musst dieses Bit auch wieder löschen, wenn du keinen Interrupt verwendest. Von alleine setzt es sich sonst nicht zurück. Besser ist es, das ADSC Bit abzufragen
-
Thread
Fragen zur Rekursion
Min-Wert und den Max-Wert soll ich dann in einem Long ausgeben. In diesem Long soll in den oberen 16Bit der Max-Wert und in den unteren 16Bit soll der Min-Wert stehen. Ich hab hier mal angefangen zu programmieren: [c] #include<iostream> using namespace std; //minmax long minmax(short array
[c]if( SchrittNach[x+1][y] )[/c] soll wohl eher heißen [c]if( SchrittNach(x+1, y) )[/c] oder kann man in C jetzt auch schon Funktionen als Array ansprechen? o.O
-
Thread
I2C (TWI) Sniffer mit AVR
Hi Peter, wenn ich das ganze richtig verstehe, dann liest der Sniffer den Datenstrom auf dem I2C-Bus mit. Da gibt es Start-, Stop- und andere "Bedingungen", also klare Steuerzeichen. Dazwischen kommen die Daten. Sofern ich weiß ob 8 oder 10Bit kommen, kann ich am Ende sagen: Hier haben wir folgende
Hab es nun selber geschafft! anbei die Version GCC für den ATTiny2313. Auch habe ich die I2C Erkennung etwas erweitert: Nach dem Start wird die Adresse um 1 bit nach rechts geschoben. Das "alte" erste Bit ist ja das Read/Write Bit. Dies wird nun auch angegeben. Schaut so schon ganz gut
-
Thread
SPI für verteilte Systeme
> Bei I2C wird die slew-Rate begrenzt und die Eingänge gefiltert. I2C zählt nicht, ist schnarchlangsam. Auch UART (grade bei den meisten uCs) ist sehr langsam.
die aus der Telegrafensteinzeit stammenden "Standard-Baudraten" verwenden, sondern solche, die der µC gut kann. Und dann waren z.B. schon mit den alten 8051 bei DMX512 lockere 250kBit/s drin.
-
Thread
ATtiny85 als ws2812b LED daten Weiche
So machens die WS2812-LEDs ja auch, nur daß deren serielles Protokoll extrem schlecht mit einem µC decodiert werden kann.
bei 16MHz > gerade mal 2 CPU-Zyklen. Ja. Und zufällig braucht das Codekonstrukt, was man zur Abfrage eines Pegelwechsels benötigt, auch gerade zwei Takte. > Ein µC jenseits der 200..300MHz schafft es vielleicht in handoptimiertem > Assembler. Nö, bei 200MHz braucht man sicher keinen handoptimierten
-
Thread
Hilfe bei Parallel-IO dringend (AVR)
[c] int main() { initport(); putSelPattern(getKeyNum (waitforKey())); while(1); return 0; } [/c] Was macht Dein Programm da? 1. Ports initialisieren 2. Auf Tastendruck warten, in
Nummer der gedrückten Taste um, so wie sie auf dem Evaluationsboard bezeichnet sind (niederwertigstes Bit entspricht der Taste 0, höchstwertiges Bit der Taste
-
Thread
Bascom Unterbrechung Befehl
ins Hauptprogramm. Aber ich möchte während dieser Prozedur einen Eingang bzw. eine Variable immer abfragen um diese (den Alarm) sofort zu beenden.
Capture-Interrupt, um den Beginn des Startbits zu erkennen und dann einen Compare-Interrupt, um die einzelnen Bits abzufragen. Den anderen Compare-Interrupt nimmt man für den Transmitter. Dann kann man in den Interrupts auch noch Puffer einrichten und dann mit einem Flag der Mainloop signalisieren, daß
-
Thread
Problem mit Variable in C
Vergleiche die einzelnen Elemente einfach separat: [code] if (tm.Hour = 12 && tm.Minute = 0 && tm.Second = 0) { ... } [/code]
c] So müsste es besser gehen
-
Thread
BASIC-Computer mit Mega32
Habe gerade dieses Projekt endeckt: http://www.ulrichradig.de/home/index.php/cpld/8bit_c_graka Vieleicht könnte man dieses Ding irgedwie and den Einchip-Computer anschließen. Hat nähmlich ne Menge Farben.
Sorry nicht ISP I²C meine ich
-
Thread
Binär Uhr Selbst Bauen
mit 47HCxxx Logik ICs > -in welcher Sprache macht man das am besten (habe schon kleine Erfahrung C oder ASM, da du Erfahrung mit C++ hast würde ich C sagen.
Register weiter, > dass es die Sekunden hochzählt? Das geht nicht. Zählen mußt Du in Software. [c] if( Bedingung ) sekunde++; [/c]
-
Thread
AVR braucht 7us-12us bis in Interrupts ausgelöst wird??
bedingten Sprüngen. Da ich es gerne genauer wissen möchte, wo kann ich deine Aussage für Atmel AVR 8-Bit µC wiederfinden ?
d.h. so lange die Register ausreichen. Bis auf die Temperaturumrechnung ist das auch nahezu reiner 8-Bit Code, entsprechend übersichtlich. Die Verwendung von Assembler war Vorsatz, ich wollte es so. In C wärs vielleicht klüger, keinen 2313 zu nehmen, wird sonst vmtl. knapp. Die Zentrale war in C/C++
-
Thread
Probleme bei der Usart initialisierung mit dem ATmega8515
AtMEGA: USART_Transmit: sbis UCSRA,UDRE rjmp USART_Transmit out UDR,r16 rjmp loop //16-Bit-Zähler mit Flankenerkennung... ... //Motorsteuerung //Abfragen der Schalter ... .. . ERZEUGT MIR FOLGENDEN FEHLERCODE: X:\Bla\BlaBla\AtMEGA8515\Programmname\Programmname.asm(65): error:
Spess53 schrieb im Beitrag #3308970: >> sbis r16, 0x03 ;If (R16, bit1 == 3) > > Ein Bit kann nicht 3 sein. Der nächste Befehl wird übersprungen, wenn > Bit3 von r16 1 ist. und der Befehl muss dann auch sbrs/sbrc heissen, wenn man auf einem Bit im Register prüfen
-
Thread
ATmega 8 hängt sich auf
zu machen brauchst. Lass es dir noch einmal eindringlich gesagt sein: Auf einem 8-Bit µC, wie einem Mega8, ist der Datentyp uint8_t oder int8_t immer deine erste Wahl! * das ist der Datentyp mit dem der µC am besten umgehen kann * alles andere erfordert mehr Aufwand als notwendig
nicht wirklich logisch) Das t ist für die Zehnerstelle das n für die Einerstelle.Ich brauche die einzeln um die Dtaen hinterher in den Uhrenbaustein zu schieben, will die Stellen leider einzeln haben. Meine Tastur habe ich jetzt wie folgt realisiert: [c] // --------------------------------------
-
Thread
Induktiver Positionssensor - Fragen dazu
habe, > wollte ich mich auch damit beschäftigen. Ich persönlich würde da zwar eher mit einem I2C-Temperaturfühler statt direkt mit einem 16 Bit I2C ADC Wandler anfangen - aber es gilt ja bekanntlich: viel Feind, viel Ehr ;-) By the way: auf Deinem Blockschaltbild hängt der Arduino an 5V. Wo
aber scheint wohl mit dem Speicher zu tun zu haben. Denn ob ich das innerhalb oder außerhalb der Abfragen anzeigen lasse, der Effekt bleibt. Das alles kann sowieso nicht so bleiben, weil ich sonst sicher nicht mit dem Speicher hin kommen werde. Natürlich unter 40%. [c]if (progress < 40) [/c]
-
Thread
Problem mit delay.h und Optimierungsstufe v. AVR Studio 4
einem Überlauf keine Angst, muss ich ehrlich gestehen :)! Ok, das mag passen. Hab jetzt nicht im einzelnen nachgerechnet. >> Hast Du die Fuses dafür auch richtig geändert? > Die Fuse CKDIV8 Genau die meinte ich, das sollte also auch passen. PS: Was mir grad noch auffällt: [c] if (Hour <= 4
auch durchblickt :)! Ebenfalls geändert :)! Komisch, dass ich es hier richtig gemacht hab^^: [c]if (_20_ms == 50) { Second++; _20_ms = 0; }[/c] ... schrieb im Beitrag #2265161: > Nur tust Du genau das nicht, Du togglest alle anderen Bits in > PORTB! Uh, da hab ich wohl den Vogel
-
Thread
Wie überwacht man die Einzelzellenspannungen aus in Serie geschalteten Akkus ?
Datenblatt richtig interpretiere. Kann natürlich sein das dies nur für das DIP-Gehäuse gilt. Um die einzelnen Zellen direkt zu überwachen ist wohl wirklich die beste Methode für jede Zelle einen eigenen Low-Voltage µC zu benutzen. Da ich mittlerweile auch der Meinung bin das LiFePO4 mit der Zeit driften,
3 18Bit-ADs ? Die sind dann so hoch auflösend, daß du gegen Masse messen kannst. 3x LiFePo sind max. 12V (geschätzt) bei 18Bit eine Auflösung von 0.0000457764V. Beispiel für AD wäre z.B. der MCP3421 bei Reichelt
-
Thread
Marderschreck Softwareproblem
"The Output Compare Register B - OCR1B from ATtiny15 is replaced with the output compare register C - OCR1C that is an 8-bit read/write register. This register has the same function as the Output Compare Register B in ATtiny15." aus dem Datenblatt würde ja dann eigentlich keinen Sinn machen - oder
Marders. :) Hey, gab es das nicht auch als deutschen Artikel? http://s2.quickmeme.com/img/2b/2b801c8b1404aff14b61e9432c86fb9aa43a20b5083b787d62d1570ded4bcaf3.jpg
-
Thread
Atmega kurzzeitig aus Kondensator betreiben - geht das ?
wie kommst du auf 70ms Zeit? Wenn ich rechne: Q= C*deltaU wobei delta U = 5V-2,7V = 2,3V ist und C=47uF, dann erhalte ich eine maximal zur Verfügung stehende Ladung von 1,08*10^-5C. Ich gehe mal davon aus, dass du während dem Betrieb mindestens 5mA
2 * C * Uc^2 = EL => C = EL * 2 / Uc^2 => C = 0,00025 VAs * 2 / (5 V)^2 => C = 0,00002 As/V => C = 20 uF Mir ist dabei völlig klar, daß ich einige Modellvereinfachungen vor- genommen
-
Thread
2x Atmega8 SPI Schaltung / Raspberry Pi - Atmega8 SPI Schaltung
led_blink(LONG_TIME); } _delay_ms(500); } } [/c] [c] ###### Slave ###### #ifndef F_CPU #define F_CPU 16000000UL #endif #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "lcd.h" #define ACK 0x7E
, buffer, 10); _delay_ms(20); } } [/c]
-
Thread
Tiny2313 Probleme beim Compilen
hilfreichen antworter, ja ich habe mir schon gedacht das es an vista64 liegt.... wir hatten mit dem 89c5131 ein ähnliches problem das atmel keine vista64 bit treiber zur verfügung stellt... nunja ich hatte das in dem fall durch nen alten ISA slot embedded pc mit 266mhz gelöst... ich werde wohl mein
4 den wert 01h setze und zum ausschalten wieder 00h und den PINB nehme dann und dann über 20h abfrage also bit 5 ich vermute mal das PINx und PORTx aufem gleichen port nicht gehen @ Peter Stegemann ja nur mal soviel man bekommt ne kiste mit nem board in die hand gedrückt, dort ist ne anleitung
-
Thread
6502 Emulation auf AVR ?
Hallo, @Uhu Uhuhu: sicher? ;) Der 6502 (6510) wird im C64 mit rund 1MHz getaktet. Es stehen also maximal 16 Takte pro Befehl zur Verfügung. Der 6502 hat 3 8Bit-Register, davon 1 Akku und 2 Index-Register. Der Befehlsumfang läßt sich wohl zu 80% mit AVR-Befehlen
extMem abgeschaltet ist und man auf die Vorbelegungen des Ports aufpasst, allerdings muß ich für den "C64" sowieso 64k Ram ranhängen und dann müßte ich die SID-Adressen in Hardware ausdekodieren...). SID_E hängt am Toggle-Pin des 8Bit-Timers dran. SID_Reset braucht man nicht zwingend (PowerOn-Reset
-
Thread
Grafik LCD Ansteuerung funz nicht??
Unterprogramm nicht mehr der Fall. Ich rufe als erstes Unterprogramm die Statusabfrage auf, die die Bits STA0 und STA1 aus dem Display ausließt. Um die Steuerleitungen Read, Write, CE, CD einzlen setzten zu können und das im Programm später nachvollziehen zu können, habe ich den Steuerport am µC (z.B.
herauszufinden, ob der AVR am Rücksprung hängt, oder in den reset geht, kann man doch mit einem anderen µC den Reset-pin abfragen. Der erste Hardware-Reset (durch RC-Strecke) wird vom zweiten µC erkannt und dann wird solange der Reset-Pin abgefragt, bis evtl. eine zweite zum reset ausreichende "Low-Zeit"
-
Thread
USB Signal über 2 µCs seriell Übertragen
Dann darf "in der Mitte" aber kein USB-Device sitzen, sondern das Signal > muss auf unterster Ebene Bit für Bit getunnelt werden. Gibt es eine Möglichkeit den µC genau das machen zu lassen?
Dieter W. schrieb im Beitrag #5121445: > Wie läuft das denn bei I2C Da ist die Datenrate ganz erheblich geringer als bei USB. I2C arbeitet meistens mit 400 kBit/sec, im Extremfall mit 1 MBit/sec. Hier geht es um etwa das 500fache davon.
-
Thread
Counter ATmega8
Hallo, kann mir jemand sagen, ob ein Counter die 256 Schritte eines 8-Bit Timers zählen kann?
Befehlsliste aus dem Datenblatt des AVRs als Informationsquelle. Selbstverständlich kann man das auch in C machen. Dazu muss man aber C recht gut können und die Eigenheiten des Compilers kennen. Es schadet auch nix, den vom C-Compiler erzeugten ASM-Code zu verstehen. In BASCOM kann man das auch umsetzen
-
Thread
Hilfe! LCD-Ansteuerung
und dritten zeile jeweils einen schwarzen balken. Das Display trägt die Bezeichnung: WINTEK WD-C2704M-1HNN Vielen Dank! Bernd.
(1) Data/Command Abfolge falsch: E rauf 4-Bit Daten anlegen 1usec warten E runter 1usec warten E rauf 4-Bit Daten anlegen (die anderen) 1usec warten E runter 1usec warten und jetzt erst auf Busy testen. (2) Timing von E in wbf
-
Thread
Beispiel "Entprellun" Verständnissfrage
da mal brav wieder Einsen rein ∗hüstel∗ Was Du machen musst ist die Logik umdrehen, nicht die einzelnen Bits.
Dieser Code ohne Entprellung [C] if (!( PIND & (1<<PIND4))) { //Aktion } [/C] wird mit Hilfe der Routinen aus dem Artikel [[Entprellung]] so ersetzt [C] // Anpassungen der Defines an die tatsächliche Hardware
-
Thread
Arduino Uno R4: Besonderheiten und Abhilfen
Beitrag #7943439: > Vielleicht hast du "const" vergessen oder an die falsche Stelle gesetzt. Da es C++ ist sollte man besser constexpr nutzen um ganz sicher zu gehen: [c]constexpr int melody[] = { 1, 2, 3 };[/c] Ist es sinnvoll den Datentyp "int" zu nutzen? Der ist auf ARM 32bit groß. Wenn deine
zugewiesen. [c]int val = (int16_t) eeprom_read_word (addr);[/c] hingegen wird der 16-Bit Wert sign-extended (wobei man da formal u.U. ein signed Overflow hat). Zu long: Seit über 25 jahren gibt es uint32_t.
-
Thread
7 Segment Multiplexing und USART Kommunikation(Baudraten)
Meine Funktion die ich im Moment fürs Senden nutze sieht so aus: [code] void sendToSerial(char c[]) { for (int i = 0; i < strlen(c); i++){ if(c[i] != 0) { while (( UCSR0A & (1<<UDRE0)) == 0){}; UDR0 = c[i]; }else{ break; } } } [/code] Mfg
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
-
Thread
Schieberegister IN/OUT an SPI
Schnittstelle zur Verfügung. Aber wie mache ich das mit drei Stück? Und dann hab ich das Byte im MC, jedes Bit sollte dann in anderen einem Array an einzelnen Stellen abgespeichert werden. Wie kann ich das in C machen? Also ich bekomme z.B.: 00110100 in den Buffer. Das Bit 0 sollte dann in z.B.: Eingang[0],
, dann müsste doch folgendes klappen, oder?? [c] Ergebnis[2] = ((Input >> 2) & 0b00000001) [/c] So sollte ja das dritte Bit an die Stelle des Bit0 gerückt werden, danach wird logisch zusammengezählt. Hatte das Bit 3 die 1, so ist das Ergebnis auch
-
Thread
Prototyp Elektronischen Last (7A@15V)
kleines Geld gibt.. > > Gute Idee > > Wie sieht denn dein aktueller Schaltplan aus? R4 und C1 könnte man entfernen. Da ich mir jedoch die Option freihalten möchte anstelle des 2. MCP4726xx die MCU interne 8-bit PWM als "I"-Soll zu verwenden habe ich die Komponenten mal in der Schaltung belassen
Noch was: Wozu soll C2,C6 und C7 dienen? Die belasten deinen OP direkt kapazitiv. Das ist gefährlich! Wenn du nicht willst, dass die Sache schwingt, dann lass das weg! Gruß, jens
-
Thread
24 V Signal aus einer Parallelschnittstelle
ich erreichen kann, meinen parallel-port am Drucker als Datenausgang zu nutzen? Ich will also nur einzelne Bits abfragen können. Wer hilft mir weiter?
nutzen ..." - die SW im Drucker ist meist in einem Mikrocontroller drin, wird also schwierig. "... einzelne Bits abfragen ..." - Huu, das wäre aber dann DATENEINGANG, nicht Datenausgang? Und das am Drucker? "24V aus einer Parallelschnittstelle" - Also gar keine Signale, nur Spannungsversorgung? Wer
-
Thread
Junkers CAN-Bus Protokoll
Ich wette das tut sie nämlich nicht. Was zu prüfen ist: - Initialisiere mit 8MHz und 10Kbit: [c] static const uint32_t QUARTZ_FREQUENCY = 8UL * 1000UL * 1000UL; ACAN2515Settings settings(QUARTZ_FREQUENCY, 10UL * 1000UL); // CAN bit rate 10 kb/s [/c] Dann prüfe ob die Initialisierung überhaupt
" umzusetzen, zumindest müßte man wissen, wie die einzelnen Abschnitte dann aussehen müßten. > i2C Schnittstelle: Sehe hier evtl. zwei verschiedene Ausgänge der I2C > Schnittstelle, evtl. intern bzw. extern, auch zweckentfremdet (TA211). > Müsste untersucht