-
Thread
suche fertiger PID-regler
mit Int auch leicht bedient! Ausserdem würde ich für den I-Anteil eine Anti-Windup Maßnahme setzen!
aber nun zur Optimierung... Die Datentypen gefallen mir nicht wirklich... Ich hab doch nur einen 10bit AD-Wandler also zurück zu signed INT (16bit)
-
Thread
gcc11 könnte das avr Backend verlieren
Voraussetzungen gelten: i) Das Target ist standardkonform. Trifft für avr nicht zu, denn double ist ein 32-Bit Typ. ii) libsupc++ wird unterstützt, das ist der minimale Kern der C++ Standard-Bibliothek und Basis der libstdc++-v3 mit z.B. bits/c++config.h, bits/os_defines.h, bits/cpu_defines, bits/locale.h
-bit nvptx64 - NVIDIA PTX 64-bit ppc32 - PowerPC 32 ppc64 - PowerPC 64 ppc64le - PowerPC 64 LE r600 - AMD GPUs HD2XXX-HD6XXX riscv32 - 32-bit RISC-V riscv64 - 64-bit RISC-V
-
Thread
Entprellen in C, schlanke Routine
2-Bit-Variablen (8 Zähler) interpretiert. Dabei ist Bit 0 jedes Zählers in ct0 und Bit 1 jedes Zähler in ct1. Die Bitposition ist dann sozusagen die Zählernummer und entspricht der Bitposition des Port-Eingangs
das schieberegister "taktet" den taster ein. es wird eine 0->1 flanke erkannt, sobald das letzte bit (in dem falle bit 7) 0 und alle anderen bits 1 sind. eine 1->0 flanke sobald das letzte bit 1 und alle anderen 0 sind. irgendwelche zwischenzustände ändern nichts am taster-zustand (was in dem falle
-
Thread
Frage zu Software-SPI
kurzem habe ich eine SPI in Software umgesetzt. Die Frage, die ich habe betrifft spezifisch das setzen/löschen der Bits auf dem Data-Port während des Sendevorgangs. Hier im Forum sehe ich fast immer die Lösung, mit einer Maske zu arbeiten, die dann in jedem Schleifendurchlauf geshiftet wird um somit
0x17, 1 ; 23 32: 98 e0 ldi r25, 0x08 ; 8 for( i = 8; i; i-- ){ // 8 bits SPI_MOSI = 0; 34: c1 98 cbi 0x18, 1 ; 24 if( b & 0x80 ) // high bit first 36: 87 fd sbrc r24, 7 SPI_MOSI = 1; 38: c1 9a sbi 0x18
-
Thread
Falsche Zeichen per UART
schrieb im Beitrag #4421829: > Mit 4800 Baud funktioniert es, aber ich schaue mir auch mal das > U2X-Bit und die Header-Datei an. Setz das Bit einfach und du hast 9K6.
Mein grosses V. schrieb im Beitrag #4421839: > Setz das Bit einfach und du hast 9K6. Jepp... läuft alles! Aber um den Lerneffekt zu erhöhen: wie komme ich auf die maximal sinnvolle Baudrate in Abhängigkeit von der CPU-Frequenz? Mal abgesehen, dass
-
Thread
PWM wird bei Watchdog Reset kurz unterbrochen ?
Ausführung des Reset zu unterbinden. Man mag es ja kaum glauben, aber auch das steht im Datenblatt: " • Bit 6 – WDIE: Watchdog Timeout Interrupt Enable When this bit is written to one, WDE is cleared, and the I-bit in the Status Register is set, the Watchdog Time-out Interrupt is enabled. In this mode the
Mal neu setzen, sonst geht der nächste Wachhund zum Reset. Wenn sich das Steinchen also aufhängt, wird auch korrekt resettet. Deshalb musst Du das WDIE-Bit in der Main-Schleife erneut setzen. Also im WD-ISR
-
Thread
Korrekte Oszillatoraktivierung bei fuse Bits
Hallo, Ich befasse mich neuerdings mit Bascom und stellte fest, dass ich bei der Aktivirung des Oszillators mit 16 MHz das Fusebit KLA987 mit einem Zahlencode von 111111 versehen muss Welcher Zahlencode wird bei einem 3MHz Oszillator benötigt? und wie funktioniert jenes System? Danke im Voraus Simon A.
-
Thread
5 eingänge 27 Ausgänge?
schon da. Du hast eine Tabelle mit 27 Einträgen. In jedem steht die zugehörige Kodierung (deine 27 Bit) Diese Bits teilst du jetzt auf die PORTs auf, da du beim AVR immer nur 8Bit je Port setzen kannst. Bsp. 1. 8Bit PortA,2. 8Bit PortB, etc. Du solltest die LEDs nicht direkt an die Portpins anschliessen
Tabelle. Deinen Wert nimmst du als Index in die Tabelle und der Tabelleneintrag sagt dir welche Bits zu setzen sind.
-
Thread
Bestimmte Ausgänge von Ausgangsport manipulieren
Bit 7 setzen: P1OUT |= 0x80; Bit 7 löschen: P1OUT &= ~0x80 Bin mir nicht sicher, prüf mal nach ob das Sinn ergibt.
= übersehen. Exklusiv-Oder ist dein > Freund! :) Ja ist er auch, aber nicht hier. Mit EXOR setze ich ja nur, unabhängig von Bit6 das Bit von Bit7, jedoch wird dadurch nicht Bit6 gelöscht.
-
Thread
8051 Assembler: LED- Blinken lassen mit Timer und Interrupt
, da mein 8 Bit Timer höchstens den Wert 255 speichern kann. 3200 / 200 = 16 Schleifendurchgänge Dann Initialisiere ich den Timer, R0 und setze die Interruptfreigaben: [c] CLR TR0 ; Timer 0 Stoppen CLR TF0 ;
Intterupts Freigeben SETB IT0 ; Timer 0 Interrupt freigeben ORL TMOD,#02h ; M1 fuer Modus 2 (8-Bit Autoreload) setzen MOV TH0, #5 ; Den Timer Reloadwert auf 5 stellen, sodass zum Ueberlauf 200 ;Schritte benoetigt werden MOV TL0,#55 ; Timer startwert (200 bis Ueberlauf) mov R0,#0
-
Thread
STM32: Wie funktioniert diese Entprellung?
Raketenwissenschaft gemacht wird, bleibt für mich unklar. Pro Taster wird eine Variable reserviert, mit 9bit (2,5s) für Zähler und 2 bits als Tasterflags. Man nimmt aber 16bit, ist einfacher. Für 16 Taster ergibt das 16 * 16 bits = 256 Bits oder 16 2Byt Vars. Um es schneller und einfacher zu machen liest
0x1FF) >= 0x177) { //* laenger als 1.5s ? Pin0_state |= 0x8000; //* setze bit fur Tastendruck lang } else { Pin0_state++; if ((Pin0_state & 0x1FF) == 8) Pin0_state |= 0x4000; //* setze bit fur Tastendruck normal } } chk1: //**
-
Thread
LCD busy flag abfragen
auch passen. Offenbar ist busy immer false. bool LCDbusy() { bool busy; RW_PORT |=(1<<RW_BIT); // enable Bit setzen und wieder loeschen E_PORT|=(1<<E_BIT); E_PORT&=~(1<<E_BIT); // LCD 7 als Input LCD_7_DDR &=~(1<<LCD_7_BIT); if (LCD_7_PIN & (1<<LCD_7_BIT)) {
Normalzustand: " LCD_7_DDR |=(1<<LCD_7_BIT);" Lesen: " // enable Bit setzen und wieder loeschen E_PORT|=(1<<E_BIT); E_PORT&=~(1<<E_BIT); // LCD 7 als Input LCD_7_DDR &=~(1<<LCD_7_BIT); if (LCD_7_PIN & (1<<LCD_7_BIT
-
Thread
Bitmanipulation vereinfachen
. Einfach wäre natürlich das ganze Hexadezimal zu setzen 0x0 - 0xF . Wenn ich jetzt 0xF0 z.b. setzen würde dann würde ich ja die Bits 4-7 verliereb. Doch wie könnte ich das Realsieren ohne die Bits 4-7 zu verlieren? Nach dem setzen soll dann der
>PORTD &= ~(0xF0); >PORTD |= (0x10); ? > >also die Bits 4,5,6,7 setzen? da werden aber die Bits 4,5,6,7 gelöscht und anschließend Bit 4 wieder gesetzt. Wenn du nur die Bits 4,5,6,7 setzen willst dann PORTD |= 0xF0;
-
Thread
Merkwürdiges Array mit 32-Bit GCC (Linux)
gemacht..." - und das ist zumindest missverständlich, denn executables entstehen durch das das setzen des X-Bits ... und sind keine Aufgaben des `Compilers oder Linkers
#6040432: > und das ist zumindest missverständlich, denn executables entstehen durch > das das setzen des X-Bits ... Das gibt nur das Recht zur Ausführung. Kann ich einem Bild (jpg) auch geben, bringt aber nichts. > ... und sind keine Aufgaben des `Compilers > oder Linkers Die machen die
-
Thread
Zeitgleiches Versenden von Nachrichten mit dem AT90CAN
wer welches Bit gesendet hat. Bei '01' oder '10' werden diese Bits sozusagen verworfen und das entsprechende Bit aus dem zu übertragenen Schlüssel gelöscht. Soviel zu der sehr kurzen Theorie. Praktisch habe ich
ein dominantes Bit senden.
-
Thread
Benötige Hilfe bei Initialisierung LCD mit Pic
// Wartezeit datenport = 0b00110000; // Interface auf 8 Bit setzen STROBE(); // Datenport einlesen __delay_us(150); // Wartezeit RS = 0; // Steuerbefehl __delay_us(50
; // Interface auf 4 Bit setzen STROBE(); // Datenport einlesen RS = 0; // Steuerbefehl __delay_us(50); // Wartezeit datenport = 0b00100000
-
Thread
Wie steige ich am besten von AVR auf PIC um?
Wie ist das beim AVR eigentlich wenn ich einen Pin setzen/löschen will? Muss ich dann den Port in ein Arbeitsregister einlesen, das bit verändern und wider zurückschreiben?
hat man das dort so aufgebaut wie auch bei vielen ARMs, also mit einem Register, über das man Bits setzen kann, einem weiteren, über das man sie löschen kann usw. usf.
-
Thread
6502 ROR auf ARM7 Emulieren / freie Bits im Statusregister?
hättest Du denn den DEC-Befehl umgesetzt? würdest Du dann den SUB(S) ohne (S) machen und entsprechend Bit7 testen und N-Flag setzen, und dann noch nach Zero testen und entsprechend das Z-Flag setzen? Was hältst Du davon, nur die betroffenen Bits von cpsr nach r9 zu "kopieren". Dann könnte ich doch weiterhin
Code reinbauen werde. Um nochmal auf das Threadthema zu kommen. Ich habe eben gelesen, dass die Bits 8-27 im CPSR "unused" wären. Kann ich die dann auch setzen?
-
Thread
Kolibri OS, vergrößerung der Community. Programmierung mit C
Ich sehe die 32bit Beschränkung auch problematisch.
Abdul K. schrieb im Beitrag #6861292: > Ich sehe die 32bit Beschränkung auch problematisch. Dann nimmst du das Original. Das ist auch 64Bit
-
Thread
Paralleler Programmer und Ponyprog
Programmer heißt nicht über die Parallele Schnittstelle, sondern das ist ein Modus in dem man spezielle Bits setzen kann.
Programmer von der Eagle-Seite + Eagle-Programm heruntergeladen: So ein kompliziertes Ding nur für ein Bit setzen?!? Das ist mir nun wirklich zu aufwendig. Gibt es keine einfachere Schaltung? Im Prinzip reicht es mir ja, die Spezial-Bits zu setzen, normal kann ich meinen AVR ja über die serielle Variante
-
Thread
ATmega mit mehr Leistung?
> Min. 10 ADC Kanäle mit min. 11 Bit Auflösung bei 5V. Schlecht und schon verloren. Der ATMega kommt über 10 Bit nicht hinaus.
so schnell ändern wie das LCD-Panel erlaubt, es entfallen alle Wrapper für den externen Bus, das Setzen eines Pixels ist äquivalent mit dem Schreiben von 24bits in den RAM (1 Speicherzugriff) - Wahrscheinlich auch noch geringster Preis - externer Controller entfällt, SDRAM ist billig Das funktioniert
-
Thread
Debounce-Makro von Peter Dannegger - MSP430
MaWin schrieb im Beitrag #6228498: > #define T_SET BIT1 müsste dass dann icht BIT2 sein?
werden? z.B. P2IFG, als ob es ein Interrupt gab? und zweitens: for(;;){ > if( debounce( P2IN, BIT 2 ) ) > P2OUT ^= 1<<BIT 3; > if( debounce( P2IN, BIT 1 ) ) > P2OUT ^= 1<<BIT 4; das ist die Logik dafür, daas wenn ein Drücken erkannt wurde, etwas passiert?
-
Thread
Auf der Suche nach Ordnung =)
spielen"-flags entsprechend zum Timecode zu setzen. Dazu brauchst du eigentlich in der Firmware auch nichts sortieren. Lege einfach zwei arrays an. Eines mit einem 32-bit Wert für den Timecode, und ein 8-dimensionales für die Tonhöhen, die zu diesem
. jeweils zu Unterschiedlichen Zeiten. Sind im Falle von 32Bit + 8Dimensioal 8Bit * 3 Tonänderungen * 8 Kanäle. 96Bit pro Tonwechsel. Oder ich hab 32bit + 8Bit * 3Tonänderungen * 8 Kanäle, komme dann aber aufs Problem, den 32bitWert mehrmals speichern zu
-
Thread
ATMEGA UART Empfang mit Verzögerung
Reinsampeln sind ? Bessere Uarts kennen Framing Errors, welche auf ein fehlendes Start-, Stopp-, Parity Bit hinweisen.
ein? Wird der Empfängerausgang evtl. hochohmig und der µC kann sich dann selber irgendwelche EMV-Bits aus der Luft herzaubern?
-
Thread
Arduino oder Nucleo
auseinander zu setzen. Die 8bit Controller sind nämlich noch lange nicht tot. Falls du kommerzielle Sachen in geringer Stückzahl bauen willst: Bedenke, dass man die originalen Nucleo Boards nur zum Lernen benutzen darf
Assembler im Zeileneditor schreiben möchte. >Ich vergleiche gerne: >- Arduino Nano Clone (ATmega328, 8bit, 16MHz, 32kB FLASH, 2kB RAM) >- Blue-Pill Board (STM32F103, 32bit, 72Mhz, 64 oder 128kB Flash, 20kB RAM) Der ATmega328 hat auch noch 1 kB EEPROM als Datenspeicher.
-
Thread
externes SRAM mit 16Bit zugriff
memory interface des controllers ein SRAM angeschlossen. Das SRAM besitzt 4MBit und ist alss 256Kx16Bit organisiert. Um also das gesamte memory nutzen zu können will ich mit 16Bit zugriffen arbeiten. Nach meinem Verständnis versteckt sich hinter jeder der 256K Adressen ein Word mit 16Bit. Das Memory
an den SRAM angebunden und auch als solches im Code eingestellt. Ändere ich den Zugriffsmodus von 16Bit uaf 8Bit im entsprechenden STR Register, dann läuft alles wie erwartet. Die 16Bit variablen liegen dann flach aufgereiht im RAM. Ich kann dann einen Byte access auf jede Adresse machen. 16Bit Wöter
-
Thread
BCD Z ählen (AVR ASM)
Dateiinformation und das ergebbnis der letzen AND "Rechnung" einfach verodern. Da Du oben mit 0x0F die oberen 4Bit's gekillt hast, sind da auch keine, die jetzt stören, also einfach 'Dateninfo' OR 'SELECT_DECODER'. Checken musste noch, ob im 'SELECT_DECODER' das Ergebins größer 0x40 ist,, dann setze es auf 0x00
wie die Aktivierungsreihenfolge sein soll - falls du nach rechts schiebst, blende die 4 unteren Bits aus (andi schieb,$f0), denn wir nutzen ja nur die oberen 4 Bit - überspringe (zum Label), wenn schieb dabei nicht leer wird (brne label1) - setze Schieb auf Startwert (ldi schieb,16 / ldi schieb
-
Thread
psoc oder stk500 zum programmieren von uC?
Dann würde ich lieber auf etwas einfaches, bewährtes, erprobtes, zuverlässiges und gut bekanntes setzen. Wilder Kater mit Schwanz schrieb im Beitrag #3201863: > als diese veraltete 8-Bit µC Da lehnst Du Dich aber sehr weit aus dem Fenster. Wie kommst Du darauf, daß länger am Markt = veraltet
würde ich lieber auf etwas einfaches, bewährtes, erprobtes, > zuverlässiges und gut bekanntes setzen. Nein, ich persönlich habe keine Lust mich monatelang mit 8 Bit AVR/PIC zu beschäftigen, um später herauszufinden, dass die richtige (sprich. moderne und industrierelevante) µC ganz anders ticken
-
Thread
Problem mit LCD EA DIP204-4
@Hannes Der KS0073 ist nicht ganz HD44780 kompatible. Um in den 4bit Modus umzuschalten bzw. 4 Zeilen Modus musst du Erweiterungs Bit RE setzen. Bsp: 2Ch für den 4 bit Modus siehe Anhang. wichtig für den 4 Zeilen-Modus ist 09h im extended Function Set.
ne Frage, was mir grad aufgefallen ist, bei Funktion Set, welches RE >ist gemeint? Damit ist RE Bit 2 gemeint. RE auf Bit 0 heisst eigentlic REV
-
Thread
canbus mit SN65HVD230D und FlexCan
Wenn ich richtig gezählt habe, ist eine CAN-Message mit 11bit Identifier und 8 Byte Payload 111 Bit lang (inklusive Interframe Space). Von der Übertragungsrate her solltest du also nicht in Schwierigkeiten kommen. Normalerweise gibt es doch bei CAN Sende- und
Jens E. schrieb im Beitrag #4189433: > Wenn ich richtig gezählt habe, ist eine CAN-Message mit 11bit Identifier > und 8 Byte Payload 111 Bit lang (inklusive Interframe Space). > Von der Übertragungsrate her solltest du also nicht in Schwierigkeiten > kommen. das war auch meine annahme >
-
Thread
Fuse Bit
Hallo, eines gleich vorweg, ich steige gerade erst ein.... Ich hab da noch ein problem mit den Fusebits und dem Mega8. Es soll ein Externer Quarz verwendet werden der irgendwo zwischen 4 und 8 mhz liegen soll. Dazu hab ich mir das Datenblatt genommen und gelesen. Ist es richtig, das ich CKOPT=1 und die drei CKSEL=1 setzen muß, und den rest so lassen kann ? Danke !!!
-
Thread
Suche Empfehlung für Mikrocontroller
Hm, also ich habe mir das Referenz-Handbuch gezogen und laut dem können Timer2 und Timer5 als 32bit Timer konfiguriert werden. Wenn ich mir dann die RCC-Register anschaue, dann kann ich weder Timer2 noch Timer5 auf APB2 setzen. Die Taktverteilung mache ich natürlich auch mit stmCube und wenn ich
hinten nicht hinbekommen. Dann habe ich entdeckt, dass man bei Configuration bei RCC das entspechende Bit setzen kann. Nennt sich "TIM Prescaler Selection" Klasse, das hat mich jetzt ein großes Stück weiter gebracht :)
-
Thread
Problem bei bit shifting
Verschiebung stoße. Und zwar handelt es sich dabei um einen Standart Identifier mit einer Länge von 10 bit, dessen Bits 3-10 ein eigenes Register für sich beanspruchen und den Bits 0-2, die sich ein anderes Register mit weiteren Daten teilen. Nach dem einzelnen Auslesen (da das auslesen korrekt funktioniert
3 nach links? Kann dieser Typ das Ergebnis aufnehmen? Bedenke: erst NACH dem schieben wird auf 16 bit gecastet. Das Thema sollte geklärt sein.
-
Thread
Ist die obligatorische Endlosschleife am Ende der main Funktion nur Aberglaube?
Zugegebenermassen habe ich mich auch veraendert, also z.B. Assembler aufgegeben, und den Sprung von 8bit zu 32bit gemacht. Wenn ich Assemblerprogrammierung miteinbeziehe programmiere ich seit Ende 1990er Jahre. Allzu dramatisch ist es garnicht mit ISR, also in den meisten Faellen, insofern der Programmierer
dass die Pin-Klasse nur die Funktionalität zur Verfügung stellt, die ein Hardware-Pin kann: Auf 0 setzen, auf 1 setzen, Eingang abfragen, vielleicht noch elektrische Parameter wie Pull-Up/Down setzen. Aber nichts mit Blubb über UART senden. Bei OOP kann man durchaus globale ("freie") Funktionen verwenden
-
Thread
ATMEGA88 + Sleepmode + Timer + Taster --> wie geht das
Pegel-Wechsel weckt auf! Dann ggf. noch abfragen wer geweckt hat (Timer oder Taster). Fertig. Wie welches Bit für den Pegelwechsel-Interrupt zu setzen ist verrät das Datenblatt. Das Aufwecken per Tastendruck funktioniert mit dem ATMEGA88, setze es selber ein.
weckt auf! > Dann ggf. noch abfragen wer geweckt hat (Timer oder Taster). > Fertig. > Wie welches Bit für den Pegelwechsel-Interrupt zu setzen > ist verrät das Datenblatt. > > Das Aufwecken per Tastendruck funktioniert mit dem ATMEGA88, > setze es selber ein. Hallo das klinkt einfach bei
-
Thread
STM32 Pin-Toogle!
möchte, dass eine LED getoogelt wird. Nun hab ich in der StdLib geschaut, aber ich kann dort nur ein Bit setzen oder rücksetzen. Wie geh ich nun am besten vor? Hab es dann so versucht, dass ich zuerst auslese und es dann einfach von eins subtrahiere. [c]GPIO_WriteBit(GPIOA, GPIO_Pin_2, (BitAction
UND-Verknüpfung. DeinPORT->BSRR = ((DeinPORT->ODR ^ GPIO_PIN_xx) & GPIO_PIN_xx) | (GPIO_PIN_xx << 16); BitSet hat gegenüber BitReset eine höhere Priorität, womit man sich ein paar Operationen spart.
-
Thread
Zündkurve verstellen beim 2Takter
Ich weiß ehrlichgesagt nicht wie der Arduino-Kerl zu diesen Werten kommt. Timer 1 hat 16 Bit und damit 2^16 = 65536 Schritte. Wie er in diesen 16 Bit jetzt 65536µs/0,5µs = 131072 Schritte speichern will ist mir schleierhaft. Vielleicht teilt er in der lib ja irgendwie nochmal die Interrupts
C3%A4hler_des_AVR Und hab gleich meine erste Frage: Wie kann ich das TCCR auf Prescale 64 setzen? TCCR1 = ?? Lg
-
Thread
Schaltparameter Fernbedienung
Code richtig interpretiere ist es diese Stelle: [c] uart_putc(Data); //entsprechende Ausgänge setzen PORTB ^= BitMask; [/c] Um nun 1,5 sek. Pause zu haben und danach wieder abzuschalten kann man dann doch so erweitern: [c] uart_putc(Data); //entsprechende Ausgänge setzen PORTB ^= BitMask
richtig interpretiere ist es diese Stelle: > > [c] > uart_putc(Data); > //entsprechende Ausgänge setzen > PORTB ^= BitMask; > [/c] > > Um nun 1,5 sek. Pause zu haben und danach wieder abzuschalten kann man > dann doch so erweitern: > > [c] > uart_putc(Data); > //entsprechende Ausgänge setzen
-
Thread
Byte an PORTS ausgeben
So z.B. werden die unteren 6 Bit von Port B und die unteren 2 Bit von Port C gesetzt. Die nicht benötigten Pins werden nicht verändert. [c] void SetzeAusgaenge(unsigned char ucData) { PINB = (PINB & 0xC0) | (ucData & 0x3F)
Christian schrieb im Beitrag #2087971: > So z.B. werden die unteren 6 Bit von Port B und die unteren 2 Bit von > Port C gesetzt. Die nicht benötigten Pins werden nicht verändert. > void SetzeAusgaenge(unsigned char ucData) > { > PINB = (PINB & 0xC0) | (ucData & 0x3F
-
Thread
Modelbau
nicht mehr verkaufen als Baugruppe. Nicht böse gemeint....... Sarkasmus !!! So denn. Laßt ein Bit übrig
So denn. Laßt ein Bit übrig hihi, der dicke Mann vonm WDR. Wie hieß der doch gleich?
-
Thread
ATmega8 nicht mehr zu löschen
selber ausgeschlossen :-(( Also wenn einer ein Tip hat diesen Chip ohne grossen Aufwand zurück zu setzen würde ich mich freuen. ODER hat einer einen Schaltplan für einen ECHTEN PARALLEL PROGRAMMER + Software um die FUSE Bits über den parallelen Modus zu ändern ????
Programming verstehen. Offiziell gibt es das ja nicht als spezifikation im Datasheet zum ATmega8. Setz ich einfach nur die Spannung am PC6 (ehemals RESET) auf 12V und lösche das RSTDISBL Fuse Bit ganz normal ?
-
Thread
uC from Scratch
habe mal einen Watchdog-Timer der eine ISR aufruft auf einen Arduino implementiert. Dafür musste ich Bits in bestimmten Registern setzen. Da lacht ihr jetzt bestimmt drüber aber vielleicht ist das ja schon was. Mit KiCad komme ich klar. Wäre nicht die erste Platine, die ich mache. Nur die erste mit einem
wurden. Bei PIC24 sind die Peripherieregister Teil des Kerns, d.h. der Prozessorkern kann dort atomare Bit-Operationen ausführen. Bei PIC32 sind die Peripherieregister nicht mehr Teil des Kerns, sondern laufen asynchron. Wenn der Prozessor ein Bit setzen will, muss er das Register lesen, Bit setzen und Register
-
Thread
Multichannel PWM bei Atmega128
H.Joachim S. schrieb im Beitrag #4502380: > Fast-PWM geht auch mit 16bit, top ICR1. Oh, natürlich. Gerhard: Guckst Du "Table 20-5 Waveform Generation Mode Bit Description", Seite 163 im Datenblatt vom 128A. Dort stehen alle Modi und wie Du die WGM-Bits setzen musst
> OCR1C = 0x000f; // PB7 Keine Aenderung !! voll hell > [/c] Must auch die anderen COM1xy Bits setzen um die Compareausgänge auf auf PB6 und PB7 durchzuschalten.
-
Thread
Atmega128 USART Interrupt
>Offenbar kann man das TXC0 Bit in UCSR0A nicht setzen. Genaueres sollte man in Datenblatt finden. Manche Register/Flags sind nur lesbar. Sobald du ein Zeichen in den Puffer geschoben hast, solltest du das UDRIE setzen. Dann
alle anderen Bits auf 0 setzen soll, wenn man auf UCSR0A zugreift). Mit dem Data Register empty Flag ist es ganz genauso, nur mit dem Unterschied, dass sogar im Datenblatt steht, dass man es nicht in Software setzen
-
Thread
Quarz-Wert 32.0C6Y
Werte stehen? >Meistens um Linien zu zeichnen oder ähnliches (also um 1 Pixel in einem >Byte zu setzen.) Kannst du mir das noch etwas genauer erklären? Man liest eine Adresse aus dem Speicher aus, und schreibt dann mit MWRITE ein Bit z.B. an diese Adresse? Welchen Vorteil erlange ich, wenn man zuerst
stehen? > >>Meistens um Linien zu zeichnen oder ähnliches (also um 1 Pixel in einem >>Byte zu setzen.) > > Kannst du mir das noch etwas genauer erklären? Man liest eine Adresse > aus dem Speicher aus, und schreibt dann mit MWRITE ein Bit z.B. an diese > Adresse? Welchen Vorteil erlange ich, wenn
-
Thread
LCD und atmega328p -> Timingprobleme??
einiger Zeit an einer Schaltung auf der ein LCD und ein atmega8 war. Das Display ist über einen 8-bit schieber via SPI im 4-bit Modus angeschlossen. Das hat soweit immer funktioniert Nun habe ich den Atmega8 durch einen Atmega328p ausgetauscht, weil ich eine SD-Karte dranhängen will. Seit dem will
im Makefile das Display zum funktionieren bringen kann. Meine Beobachtung ist: * Wenn das CKDIV8 Bit in den Fuses aktiviert ist, gehts überhaupt nichts. * Wenn das CKDIV8 Bit deaktiviert ist und ich die CLK auf 2MHz stelle (obwohl intern eigentlich 8Mhz anliegen) geht das Display (in der Tat kommen
-
Thread
PIC Assembler auf- abzählen
rückwärts zu zählen und hin und her. Ich habe probiert mit BTFSC/BTFSS zu arbeiten, kann man auch 8 Bit gleichzeitig abfragen? Außerdem habe ich schon probiert mit dem CARRY Bit im Statusregister zu arbeiten... Bitte um unterstützung. [avrasm] Main incf 0x20,1 movf 0x20,0 movwf PORTB
Ralf G. schrieb im Beitrag #3220438: > btfsc STATUS,C ; Wenn Carry-Bit=0 überspringe nächsten Befehl So wird das nix. Druck Dir TABLE 7-2: PIC16CXXX INSTRUCTION SET aus und lege es Dir auf den Tisch. Und dann schau nach, welcher Befehl das C setzen kann. Tip:
-
Thread
PIC16F688 EEPROM speichert nicht nach ausschalten
Disable Ints _asm MOVLW 0x55 MOVWF EECON2,0 MOVLW 0xAA MOVWF EECON2,0 _endasm EECON1bits.WR=1; INTCONbits.GIE=1; //Enable Ints //Poll EEIF Flag um zu sehen wann EEPROM Write vorbei ist while(PIR2bits.EEIF==0); PIR2bits.EEIF=0; //Clear EEIF Flag EECON1bits.WREN=0; //Disable
möglich void Write_EEProm(unsigned char adr, unsigned char data) { RP1=1; RP0=0; //Bank 2 setzen EEDATA = data; // Data in data register EEADR = adr; // Write to adr RP0 = 1; // Bank 3 setzen EEPGD=0; //Daten EEprom (sicherheitshalber falls Bit 1 war) WREN = 1; //
-
Thread
Suche Empfehlung für zukunftssicheren ATMEGA Gesperrt
aufgekauft? ;-) Vermutlich wird man sich aber nach einem "Request Quote" dann auf den Hosenboden setzen ...
AVR war gestern schrieb im Beitrag #3036566: > Nein, Atmel setzt bei 32 Bit auf ARM und nur bei 8 Bit auf AVR. Genau das stand obendrüber. Warum also "nein"?
-
Thread
~1€ ARM-Cortex-M0 (STM32)-Bord selbstgestrickt
viele Firmen auf ARM-based µCs wechseln. Laut unseren FAEs zeichnet sich der Trend ab, dass 16-Bit-µCs aussterben und 8-Bit-µCs in Nischenanwendungen gedrückt werden. Und auch nur das, wenn der Preis günstiger ist, als der günstigste Cortex-M0 (was schwer wird!). Die ARM-based µCs überrollen
Library. Niemand wird gezwungen dieses Ungetüm zu nutzen. Der µC lässt sich auch klassisch mit dem Setzen von Bits in Registern steuern: [c] //enable green LED PG13 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN; //enable GPIOG clock GPIOG->MODER |= GPIO_MODER_MODER13_0; //output mode //push-pull //low speed