-
Thread
mehrere Fragen zum Thema EEPROM im AVR
hat. Wenn man 8 Bit, also ein Byte, nimmt, ergeben sich folglich 256 verschiedene Zustände (alle Bits 0, erstes Bit 1 Rest 0, erstes Bit 1 und zweites Bit 1 Rest 0, usw... kannst ja mal durchzählen ;) , oder du rechnest
Zustände hat. Wenn man 8 Bit, > also ein Byte, nimmt, ergeben sich folglich 256 verschiedene Zustände > (alle Bits 0, erstes Bit 1 Rest 0, erstes Bit 1 und zweites Bit 1 Rest > 0, usw... kannst ja mal durchzählen ;) , oder du
-
Thread
TEKWAY DST1xx2B Oszilloskop
wie bei FTDI Herstellertreiber? Es gibt nur 32bit treiber für Win 7, der ist auch bei der Hantek version von TTScope dabei. Der verbaute chip ist ein Samsung SoC S3C2440 mit integrierten USB host/client. Der treiber selber kann nicht einfach durch
den status vom FPGA (125MHz oder 100MHz clocked) kann man auslesen, benutze dafür die die "range" abfrage da die abfrage von einzelnen register irgendiwe nicht das liefert was ich will (deckt sich nicht mit range ausgabe, warum auch immer): 43 05 00 00 01 01 01 4B die antwort für 125MHz: 43 06
-
Thread
Heizungs-Datenerfassung (HT3)
auslesen, um im Web > den Status anzuzeigen oder müsste ich dafür auf die SQLite Datenbank > abfragen? Zur Zeit geht eine Abfrage einzelner Werte nicht und man muss die RAW-Daten selber dekodieren und den benötigten Wert rausfischen. Es ist jedoch ein Zusatzmodul in Arbeit welches genau dies realisiert
;) https://github.com/norberts1/hometop_HT3/blob/016b1899661b3414089c5d4799c0c6f46e4153d1/HT3/.mqtt_setup.sh#L69 nicht ausgereicht hat.
-
Thread
Daten + Versorgung über 2 Leitungen
@Mathias Wenn Du wirklich nur 1200Baud brauchst (bedenke aber auch die Pausen zwischen den einzelnen Paketen und den sonstigen Overhead, Parity-Bits tät ich mir sparen wenn Du dafür eine richtige Prüfsumme einsetzt) dann sollte die Variante mit der H-Brücke am besten funktionieren und auch sonst
gewünschten Nutzbits bestimmt zusammen mit der Leitungsqualität die benutzten Längeunterschiede der einzelnen Pegel. Das System soll seine Übertragungsgeschwindigkeit, in Bit/s gemessen, also an der vorgefundenen Leitungsqualität anpassen. Für die verschiedenen Zustände werden verschiedene Codierungsmöglichkeiten
-
Thread
1 Wire manche Teilnehmer antworten nicht
DS18B20 daran hängen. Aktuell habe ich 6 Sensoren in Verwendung. Alle Sensoren lassen sich einzeln angeschlossen abfragen. Dabei funktioniert es einzeln auch mit den Sensoren, die über eine lange Leitung angeschlossen sind. Mehrere im Verbund funktionieren auch, jedoch nicht alle im Verbund.
ob mit oder ohne 4,7kOhm Pullup gleiches Ergebnis. Source Code ist mit angehängt. in der "hmi.c" ist die Funktion Owaf_StateMachine die wichtigste, welche die Abfrage der einzelnen Sensoren hintereinander durchführt. owaf.c ist die "Bib"
-
Thread
AVR Debugger zeigt falsche Werte
. In den defines habe ich stehen: [Code] #define Ein 1 /* Definition für Bit-Variablen */ #define Aus 0 /* Definition für Bit-Variablen */ [/Code] Die Variable Meldung wird gesetzt [Code] char Meldung, Meldung2; Meldung = Aus; Meldung2 = Aus
Die einzelne Funktion umfasst knapp 600 Zeilen Code. Soll ich das mal probieren?
-
Thread
Arduino 2560 / Datenverlust bei Hardware-UART und SPI
Nein, bisher nicht. Wie kann ich diese abfragen? Ich nutze bisher die Arduino-Lib-Funktionen SerialX.xyz .... Mein Programm "merkt" erst beim CRC-Check, dass einzelne Bits oder ganze Bytes(?) verloren gegangen sind.
> Wie kann ich diese abfragen? Das muss jemand beantworten, der Arduino kennt - ich gehöre leider nicht zu diesem Kreis.
-
Thread
Barcode scanner der in ein ca 2mm großes loch passt.
Hoppla, so stimmt die URL: http://www.avagotech.com/products/parametric-search.jsp?navId=H0,C1,C6369,C5069 das U war reingerutscht
Fährt ein zug mit 1,5m/s vorbei. Dann braucht der 1,5cm lange CODE 1/100 sekunde. wenn wir ein 10 Bit +2x Doppel-SB also 14 bit haben dann dauert ein strich nur noch 1/1400 sekunde. Wenn ich mit 500khz abfrage dann kreig ich von jedem strich 357 Abtastungen.(1/1400 * 1/500.000). Wenn jetzt von 357 abtastungen
-
Thread
Erste Schulstunde Microcontroller
wurde am Anfang mal auf high gesetzt, um ihn als Eingang zu benutzen ) und maskierst das gewünschte Bit : [c]#define roterButton 1 // roter Knopf gegen GND auf P1.1 char roteTaste(void) { return (!(P1 & (1<<roterButton))); } [/c] Diese Funktion sollte >0 liefern, wenn die 'rote Knopf Leitung
-----------------------------------------------------------------*/ Die Definitionen für die einzelnen Bits scheinen in der Reg515c.h noch nicht vorgenommen zu sein. http://www.keil.com/dd/docs/c51/infineon/reg515c.h Grüße Fritz M.
-
Thread
Visualisierung von geloggten Daten
, müsste irgendwie gehen, muss ich mal API's studieren (wärend des Bildaufbaus die MessageQueue abfragen) hoffe mal, das ich es hinkriege. > Binäre Daten, also hexformat so 8/16 Bit bekommen wir aber > nicht zufällig mit gebacken??? Hintergrund: mein Hameg sendet die Daten > binär bzw. sogar in
Danke Ingo, ich bekomme die Detei nicht geöffnet. Betriebssystem: Win7 Ultimate 64Bit Programm ist direkt auf C vorhanden im eigenen Ordner.
-
Thread
LED-Display Buchstaben und Wörter
Aus P2OUT &= 0xFE; // Taktausgang auf 0 for(s=0;s<=6;s++) // Für 8 Bit (kann beliebig erweitert werden) {b = Schieb&128; // Abfrage des Bit 0 if (b==128) // Ist Bit0 = 1 P3OUT |= 0x01; // ... dann setze Datenausgang auf 1 P2OUT |= 0x01; // Taktausgang auf 1 Schieb<<=1; // gesamtes Byte um 1 Bit nach links schieben P3OUT &= 0xFE; // Datenausgang auf 0 zurücksetzen P2OUT &= 0xFE; // Taktausgang auf 0 zurücksetzen } b = Schieb&128; // Abfrage des Bit
-
Thread
atmega32: Inputverhalten PORTB
Ok, jetzt für alle: [c] #define BIT_IS_SET(var, bit) ((var) & (1 << (bit))) #define BIT_IS_CLEAR(var, bit) !BIT_IS_SET(var, bit) ... #define IO_UP PB0 #define IO_ENTER PB1 #define IO_DOWN PB4
einbinden will, weil ich dann nur noch das header-File des Moduls > einbinden muss und nicht die einzelnen Variablen rauspflücken (und > pfelgen) muss. Genau darum geht es ja! Wenn du es richtig machst, ist es nämlich überhaupt kein Problem. Wenn du deine timer.h in 2 andere *.C Files inkludierst
-
Thread
STM32F767: "HAL_UART_Receive_IT" bringt busy
HallState != HAL_OK) fehlerspeicher_schreiben(FKT_KNX_RX_CALLBACK, 1, HallState); } } [/c]
*/ __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); return HAL_BUSY; } } [/c]
-
Thread
2 Mikrocontroller Kommunikation über I2C
Adressen von Master und Slave fest oder werden die Adressen es automatisch vergeben? Wo finde ich die 7-Bit Adresse? Wenn ich nur einen Master und einen Slave habe,erkennt das I²C-Protokoll selber dass es nur einen Master und einen Slave gibt?
z.B. [ST][ADR/W][MADR][LEN[CMD][...DATA...][SP] ST/SP sind Start/Stop Kondition, ADR/W sind die I2C Adresse des Slave und das Write-Bit, MADR ist die Adresse des Masters, wenn er als Slave am Bus lauscht, der Rest sind dann die Daten. Es gibt, wenn ich mich recht erinnere sogar eine Broadcast-Adresse
-
Thread
LCD Timings - SVGA - LPC2478
Wieso schreibst du nicht gleich 32 Bit? [c] for (y=0;y<600;y++) { for (x=0;x<800;x++) { if (((x%10)==0) || ((y%10)==0)) *(unsigned int *)((unsigned int )&SDRAM_BASE_ADDR+z) = 0x00ffffff; z++; } } [/c]
Vorsicht! Tobias verwendet einen anderen SDRAM! Die Zeilen [c] EMCDynamicConfig0 = (BIT_14 | BIT_10 | BIT_09 | BIT_07); ... dwDelay = (*(tpDWord)(0xA0000000 | (0x22 << 13))); /* burst length 4, 2 cas */ [/c] treffen für dich nicht zu!
-
Thread
16 - Bit Register
Es gibt ja 3 16- Bit Register, (X=R27:R26, Y=R29:R28, Z=R31:R30) ich möchte nun ein solches Register mit einer 16- Bit Zahl laden und danach bearbeiten, d.h. ich muss vom 16- Bit Register verschiedene Subtraktionen durchführen!!! Wie kann ich dieses 16- Bit Register laden, und bearbeiten??? Muss ich da immer das L_Byte und H_Byte einzeln laden??? IZOARD
-
Thread
Mehrere DS18B20 an einen Pin Avr-Mega32
ROM-Funktion überspringen, den Temp.-Konvertierungsbefehl senden und > nach 1sec die Temparatur einzeln auslesen. > > Grüsse Rick Ich betrachte mich schon auch als Anfänger was die C-Programmierung betrifft, aber deine Lösung erscheint mir aus meiner (bescheidenen) Sicht aufwändiger. Wenns für
}; [/c] Versuchst mal damit. Gruß
-
Thread
Bitstrukturen mal wieder
Forum! Ich hab jetzt in letzter Zeit viel auf TI-DSPs programmiert und finde da den Zugriff auf einzelne Bits über die vorgefertigten Strukturen sehr komfortabel. Zum beispiel kann ich da ein Bit im ADC so setzen: [c]AdcRegs.ADCTRL3.bit.ADCPWDN = 1;[/c] oder so löschen: [c]AdcRegs.ADCTRL3.bit.ADCPWDN
.bit.ADCPWDN)[/c] Jetzt bin ich nach einiger Zeit mal wieder auf die AVRs umgeschwenkt. Da finde ich den Zugriff auf einzelne Bits jetzt aber sehr unkomfortabel. Man könnte ja solche Strukturen auch
-
Thread
AVR-GCC: UART mit FIFO
legal. Nachteil ist allerdings, daß dann dieser Code im uputchar0 nur noch das Register verändert: [c] tx_in = i; [/c] Dann kommt der Interrupt: [c] ISR( USART0_UDRE_vect ) { if( tx_in == tx_out ){ // nothing to sent UTX0_IEN = 0; // disable TX interrupt return; } .
noch eine kleine Funktion gebaut, die den Text direkt aus dem Flash liest: [c] uputs0_pgm_P("Ich schreibe einen Roman und der ist laaaaaaaang..."); [/c] Durch ein Makro wird der Text automatisch in den Flash gelegt. Wenn man die Daten schon im Flash hat gehts so: [c]
-
Thread
FF/Latch Warnung bei LCD Display
nicht weiß warum?!? Hast Du nach dem Einschalten die Resetzeit abgewartet? Du verwendest den 4-Bit-Modus. Sind die Daten richtig aufgeteilt ("aufgenibbelt") ? Ist der 4-Bit-Modus richtig initialisiert? Duke
Faktor 5 sollte das doch ausreichen. Beim Datentransport sende ich zuerst die höherwertigeren 4 bits, 1us Pause, mit Clock Teiler halt dann um das jeweilige mehr, die niederwertigeren 4 bits, 40us Pause, dann ist die Übertragung abgeschlossen und es kann sofort mit der nächsten Übertragung begonnen
-
Thread
Software Profibus DP-Slave in C
c] Das führt dazu das die SPS über den SAP 62->60 die Diagnose Daten abholt. Im Status1 Byte muss dann das Bit 0x08 (EXT_DIAG_) gesetzt werden [c] uart_buffer[9] = EXT_DIAG_;
Geraetebezogene Diagnose Byte 1 uart_buffer[17] = 0x20; uart_buffer[18] = 0x20; uart_buffer[19] = 0x00; [/c] Dann kann man mehr oder weniger beliebig viele Gerätebezogene Diagnose Bytes senden. Was die einzelnen Bits bedeuten muss in der GSD Datei beschrieben werden.
-
Thread
2x5 Tastenmatrix an AT90USB1287
schon gefundene, zerstückelte Initialisierung in key_scan() und in main(). Und die Zurodnung der Bits zur Taste... folgendes funktioniert im Simulator. Die Initialisierung wird nur in key_Scan gemacht. [C] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> typedef
die LED eeeextrem kurz auf, wenn ich die Taste drücke. Sollte Taste 10 nicht eigentlich Bit 9 sein? Der Code zur Entprellung wie der Rest auch, stammt aus dem Forum hier. Ist ähnlich der Entprellroutine der Tastenmatrix über 2 Leitungen aus der Codesammlung. Ich habe dabei auch [c]
-
Thread
Ringbuffer aus Codevision
char rx_wr_index0,rx_rd_index0,rx_counter0; // This flag is set on USART0 Receiver buffer overflow bit rx_buffer_overflow0; Das was in main.c steht: // USART0 Receiver interrupt service routine interrupt [USART0_RXC] void usart0_rx_isr(void) { char status,data; status=UCSR0A
sei") if (rx_counter==0) ZEICHEN_IM_BUFFER = 0; return data; } #pragma used- endif [/c] Man hat dann zwar wieder nen Polling. Allerdings hat man den Vorteil bei seltener Übertragung, dass man das Bit nur recht selten abfragen muss. Durch den Ringpuffer gehen die Daten ja erst mal
-
Thread
Logik Fehler
Hi Ich komme einfach nicht weiter mein Programm tut einfach nicht was ich will. Dieser Code [c] if(digit > 6) digit = 255; while(!(((uint8_t)pow(2,++digit)) & mask)) if(digit > 6) digit = 255; [/c] bekommt eine Maske mask und soll dann, wenn zum nächsten Segment gesprungen
[c](uint8_t)pow(2,++digit)[/c] Warum einfach, wenn es kompliziert geht, wobei kompliziert nicht mal das richtige Ergebnis bringen muss bzw. wird. Ich bin mal auf die Reaktionen gespannt, die da noch
-
Thread
1-Wire-Bus-Projekt: DS1820 / DS18S20 / DS2450 / DS2408 / unter C und 8051
: unsigned short bzw. unsigned int) enthält wie im obigen Link beschrieben die Temperatur in 0.06°C Auflösung sprich 85°C = 8500 = 85.00 bzw. -55°C = 5500 = 55.00 (bei negativen Vorzeigen muss sich das Vorzeichen bei der ersten if-Abfrage gemerkt werden (Vorzeichenflag, im obgien Code entfernt!)
zw = DQ; // DQ einlesen und speichern aus der Funktion unsigned char ow_rd_bit(void) in ow.h dieser Zeile: zw = PC0; ??? (der Tempsensor hängt an Port C0) Danke für eure Hilfe. Ich frage nach, da ich nicht schon bei den grundlegenden Funktionen etwas falsch machen möchte
-
Thread
RS485 Fehler ab 3 Teilnehmern
Messdaten liefern. Jeder Sensor hat seine eigene Adresse und ich kann die Adresse in der Regel auch abfragen und bekomme eine Antwort. Die Kommunikation läuft mit 9600Baud also recht moderat und bis jetzt habe ich die Sensoren zu Testzwecken nur einzeln per Hand abgefragt. Es sollte also keine Probleme
Senden der Transceiver zu früh wieder auf Empfangsrichtung umgestellt wird, nämlich bevor das letzte Bit physikalisch über den Bus ging. Welches Flag im µC verwendest Du für die Entscheidung der Umschaltung?
-
Thread
PAL-Röhren TV auf NTSC umbauen
Protokollanalyse kann. Ansonsten halt einen der 10Euro Dinger nehmen und mit Sigrok nachsehen... Einzeln Bits Zählen bräuchte man zum Glück bei solchen Preisen selbst als Hobbyist mit etwas Sparzwang ja nicht mehr. Nichtverzweifelter schrieb im Beitrag #6928217: > Na klar: > 27C512 EPROM, das
der TV diese Antwort irgendwie... Ich vermute im Moment das sich der TV-uC zunächst nur auf das POR-Bit konzentriert und das ist ja auch mit der Null-Antwort aus seiner Sicht korrekt. Problem 2) Fehlendes NAK bei falscher Abfrage Der TV-uC macht nach obiger Feststellung
-
Thread
Probleme mit High- und Low-Eingängen Arduino Nano
portOutputRegister(port); uint8_t oldSREG = SREG; cli(); if (val == LOW) { *out &= ~bit; } else { *out |= bit; } SREG = oldSREG; } [/c] > Denn der Pull-Up wird mit der pinMode() Funktion eingeschaltet. auch > Alles andere wäre Murks. Arduino ist nur sehr knapp
[c] if (digitalRead(SENSORPIN1)) code |= INPUT1; // Eingang 1 einlesen und in Bit #0 von code speichern if (digitalRead(SENSORPIN1)) code |= INPUT2; // Eingang 2 einlesen und in Bit #1 von code speichern
-
Thread
Ausgabe der AD-Wandlung
{ if (c == '\n') uart_putchar('\r', stream); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; return 0; } void uart_putc( char c ) { // Warte bis die Sendeeinheit bereit
Wenn sie ausbleiben, hängt die Statemachine irgendwo. Pack mal das "printf( "Naechstes Zeichen: %c\n", NextChar );" vor die If-Abfrage mit "continue".
-
Thread
Nachfolger für ATMega gesucht
Am Ende erinner ich mich auch > das ich mir in der Vergangenheit hin und wieder was breiteres als 8bit > gewünscht hätte. Ich vermisse die 8 Bit Zeiten definitiv nicht. Ein wichtiger Vorteil der 32 Bit Arm M0-M7 ist die C compilerfreundliche Architektur: Genug 32 Bit Register, Parameterübergabe
der XMega nicht. Soweit ich gehört habe, hat der XMega die gleiche Peripherie wie der Atmel ARM uC. Das was viele noch 8-bit Verliebte nicht verstanden haben, ist dass der Cortex uC im Prinzip genauso einfach ist wie ein 8-bitter. Der Unterschied ist doch nur, dass die Register 32 Bit sind.
-
Thread
Empfehlenswerte Literatur zum Erlernen von C
Ein allgemein gehaltenes Buch über C auf Mikrocontrollern kann es meiner Meinung nach gar nicht geben. Denn diese Programmiersprache war eigentlich für (mindestens) 16 Bit Computer mit Betriebssystem gemacht. Deswegen hat in C der normale Integer 16 Bit. Einzelne Bits gibt es in C eigentlich nicht. Interrupthandler und das Ansprechen von Registern war dem Betriebssystem vorbehalten, welches an diesen Stellen vorwiegend in Assembler programmiert wurde
-
Thread
Befehlszusammenfassung in C
, wenn ich [c] PORTB^=0x01; waitMs(1); PORTB^=0x01; waitMs(1); PORTB^=0x01; waitMs(1); PORTB^=0x01; waitMs(1); [/c] ungefähr 195 Mal wiederhole. Spätestens an diesem Punkt kann man feststellen, welche Ausmaße
Ganz einfach: [c] for (unsigned char i=0;i<195;i++{ PORTB ^= (1<<PB1); _delay_ms(1); } [/c] Ingo
-
Thread
Snake Projekt: Matrixansteuerung
{ if (MUXPORT = 0x03) PORTC = 0xff; else PORTC = 0x00; } } [/c] Wenn ich die if-Abfrage in meinem Timer-Interrupt mache funktioniert alles. Aber es muss doch eine Möglichkeit geben Funktionen zu schreiben, die im Hauptprogramm verwendet werden können. Sonst
leuchtet > Keine Zeile leuchten lassen tue ich einfach indem ich für die zeilen die > Spalten-Bits auf null setze. D.h. wenn du an PORTA bzw. PORTC 0 ausgibst, leuchtet nix? Dann ist klar, wie der Beginn der ISR aussehen muss [C] ISR(TIMER0_COMP_vect) //Interruptfrequency: 4MHz {
-
Thread
Tastendruck mit ext. Interrupt erfassen
AT90S8515, 8MHz, , 32k ext. Ram, 2,5" HD, MAS3507, 2x16 Display. Auch Software-Scrollen des MP3-Tag, I2C-Volume-/Klangreglung des MAS3507 während der Wiedergabe machte bis 192kBit keine Probleme. Gruß aus Berlin Michael
gegen gnd hat. jeder tastendruck löst einen isr aus, flag setzen, wenn flag gesetzt, wert via adc abfragen. grüssens, harry
-
Thread
Portzugriffe in eine Schleife packen
SEG_PIN_A PD0 #define SEG_PORT_B PORTD #define SEG_DDR_B DDRD #define SEG_PIN_B PD1 . . . [/c] Eine einzelne Ziffer gebe ich bis jetzt dann so aus: [c] // Einzelne Ziffer ausgeben void sev_seg_display_digit(uint8_t digit) { uint8_t pattern; pattern = seg_dat[digit]; if (
da die Möglichkeit, die Bits den Port zuzuordnen :( Aber du weißt doch, welche Bits in "pattern" zu welchem Segment gehören und im Optimalfall gehören Bits 'auf einer Seite' (Low-, bzw. Highbits) zu einem Port: [c] #define
-
Thread
PIN Variable
mit dem Display hatte ich nur gefunden ..... Ich will den z.b Sbis pind ,0. Pin0 am portd abfragen ob er gesetz ist wenn ja dann ... Wenn Nein dann .. und das ganze mit jedem Bit von portd .... Es funktioniert ist aber halt ein wenig Text Ich wollte das ganze verkürzen in dem ich immer nur die Pin ZAHL ander und immer die selbe Abfrage nutze o schreib ich ja für jeden Pin eine einzelne Abfrage und die Aktion dahinter Mfg Bqube
-
Thread
Mega32 Timer/Counter
Hallo, Probiere mal folgendes: [c] TCCR0 = 0b00000010; DDRC=0xff; do { DDRC++; } while(!(TIFR & TOV0)); [/c] Das Problem ist, dass der Atmel AVR nicht - wie beispielsweise der Intel 8051 - einzelne Bits adressieren kann
Natuerlich kann der AVR einzelne bits adressieren, sogut wie ein 8051 sind die schon seit immer. Aber nicht so. Man kann sich nicht drauf verlassen, dass ein Register immer innerhalb der direkt adressierbaren Bank ist. Das Overflow
-
Thread
MCP23016 Port Expander Input Realisieren
ich ja nicht machen weil es dieses Register auf dem Expander gar nicht gibt. Wie kann ich dann abfragen ob ein Button an GP1.0 gedrückt worden ist? Gibt es da dann vielleicht eine i2c_read Funktion? Vielleicht kann mir da jemand weiter helfen?
oder ähnlich :-) Bei meiner Hardware habe ich 3 Buttons, die ich mit pollen nach dem Zustand abfrage. [c] Display_Read(0x0, &Data); if(Data == 0x08) { Switch_On(LED_Blink2); } [/c] Bei mir sieht das Read dann so aus (Beispiel Demo.c von Keil) [c] bool Display_Read (uint8_
-
Thread
RFM12 Programm-code von c in Assembler übersetzen
kann mir jemand das Folgende den folgenden Auszug aus dem RFM12_Transmitter_demo in assemblerische übersetzen oder zumindest die einzelnen schritte erläutern? ich kaue schon seit stunden daran rum das zu verstehen: } unsigned int RFXX_WRT_CMD(unsigned int aCmd){ unsigned char i; unsigned int temp; LOW_SCK(); LOW_SEL(); for(i=0;i<16;i++){ temp<<=1; if(SDO_HI()){ temp|=0x0001; } LOW_SCK(); if(aCmd&0x8000){ HI_SDI(); }else{ LOW_SDI(); } HI_SCK(); aCmd<<=1; }; LOW_SCK();
-
Thread
Assembler Tabellen ( 8051)
geschalten, also muss ich wohl die beiden "Pakete" zusammenmkleistern. Verständnisfrage: Wenn ich die Bits von P2.0 bis 2.7 in den Akku lade, werden die Bits dann in der selben Adresse (zB 22h) geladen, oder jeweils in eine einzelne (zb: 2.0 in 22h, 2.1 in 23h..usw) ? Vielen Dank euch beiden! Ich hoffe
Elektrotechnik/Elektronik. Um deine Verständnisfrage zu klären: Erst einmal kannst du nicht die Bits von p2.0 bis 2.7 einzeln in den Akku laden, sondern du kannst den Port2 in den Akku laden. Das heißt, wenn z.B. Port2=0A0h und Akku=0E0h ist, dann bedeutet "mov a,p2", dass 0E0h=0A0h. Ich hoffe,
-
Thread
Warum funktioniert mein AVR Assembler Code nicht?
keinen Compiler bei Assembler. Und es ist nicht egal, wenn man z.B. die letzte Stelle wirklich abfragen möchte. Notiert man binär, ist es wirklich sinnvoll, auch die 8 Bit zu beachten.
pin can be read through the PINxn Register bit." Das sollte jetzt klar sein. PINC ist die richtige Adresse, um den Wert der Port C Pins einzulesen. Ist der Pin als Eingang deklariert, liest man damit einen extern angelegten Logiklevel ein.
-
Thread
STM32 ASM Interrupt
im Interrupt deaktiviert/stoppt und vielleicht die Bits nochmal zu lesen insbesondere das Bit "CEN" und "UIE".
Register "ODR" im Interrupthandler (hat er vorher in der main ins Register geladen): This is a 16-bit read/write register. Each bit represents the output value on a corresponding pin. Writing a '0' in bit 8 of this GPIOC _ODR register indicates that the voltage on PC8 is driven by the micro to 0V (GND
-
Thread
MMC/SD ansteuern mit AVR
und noch einmal 30kb/s, in dem ich bei mmc_read_block() den datentyp von count von unsigned long (32bit) auf uint16_t (16bit) verkleinert habe. und wenn ich mir so die pausen zwischen den einzelnen bytes angucke (oszilloskop an der clock leitung) müsste noch fast doppelt so viel drin sein mfg ape
verwende diese Uartfunktionen: /* Uart Routine für die printf() Fkuntion*/ int uart_putchar(char c, FILE *stream) { if (c == '\n') uart_putchar('\r', stream); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; return 0; } FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL
-
Thread
msp430f1612_testfunktion pins high-low
*********************************************************************************************** [/c] Zur Erklärung: (so SOLL es funktionieren) Port5 ist mittels [c] P5DIR = 0x10; // alle pins auf eingang setzen, bis auf P5.4 (SW1) P5OUT = 0x00; // alles auf low [/c] initialisiert. In der
Hallo! Hast Du denn auch die P5SEL-Bits gesetzt? Du muss ja auswählen ob der jeweilige Portpin als I/O oder Zweitfunktion eingesetzt wird? Die Abfrage nach den einzelnen Port-Bits würde ich über eine logische Verknüpfung abfragen, also nich
-
Thread
Anforderungssammlung CAN Hausbus mit PIC µC
[0].0 ' Zeige den PORTC-Pin0 vom Sender an Delay_ms(10) RxTx_Data[0]=PortC ' Sende den PortC vom Empfänger mit allen 8 Bit zum Sender zurück CANWrite(ID_1st, RxTx_Data, 1, Can_Send_Flags) ' send incremented data back delay_ms(10) PortB.7
Eingang0 mit der Nachricht 'xyz' auf Port 27' und *** eine pos. Flanke lag auch am Eingang0 des µC vor) so würde SA ein Frame *** mit einer ID, bestehend aus seiner eigenen Adresse[erste 24 bit] (steht auch im Parametersatz) und der Portnummer [übrige 5 bit] '27' *** und mit dem Datenfeldinhalt
-
Thread
[C] Was bewirkt diese Zeile?
Warum werden die einzelnen "Strings" mit "\0" miteinander verkettet? [c] #define STR1 "eins" #define STR2 "zwei" #define STR3 "drei" char str[]=STR1 "\0" STR2 "\0" STR3 "\0"; puts(str); [/c] wird ja nur "eins
zitter_ned_aso schrieb im Beitrag #5699410: > Warum werden die einzelnen "Strings" mit "\0" miteinander verkettet? Damit man sie sauber voneinander trennen kann? > [c] > puts(str); > [/c] > > wird ja nur "eins" ausgeben. Ja. Und? Die Strings stehen da nicht
-
Thread
35 Taster zu 8 Bit wandeln
Halli Hallo ! Ich möchte ca. 35 Taster (können auch mehr sein) in ein binäres Signal mit maximal 8 Bit (ich brauch nur 6 Bit davon) umwandeln.Bekomme ich das nur mit einem Aufbau von einzelnen Gattern hin oder gibts nen Schaltkreis? Hab mich hier irgendwie festgefahren...
74HC147 und 74HC148 für je 8 bzw. 10 Taster. (erzeugen 3 bzw. 4 bit)
-
Thread
Nochmal Frage zum Assemblerporgramm ATmega16
AVR-Dokumentation an. Vielleicht klärt sich dann, wie aus LDI schieb, 0b00000000 über ROL schieb eine Abfrage CPI schieb, 0b11111111 sinnig oder unsinnig wird. Stichwort carry-bit...
deine Stromversorgung? Mit Oszi überprüfen ob Einbrüche vorhanden. Würde Resetverhalten erklähren. Einzelne Bits werden ausgelassen -> Hardware überprüfen. Schiebe doch einfach mal nur ein Bit durch. Dann wird nur eine LED je Port ausgegeben. Kurzschlüsse zwischen den Pins lassen sich so leicht finden.
-
Thread
MSP430 Flash
Das geht beispielsweise so: Im C Code: __attribute__ ((section(".SectionMyFlash"))) const unsigned char MyFlash[] = { 0xe4, // 0 erstes byte 0x0c, // 1 zweites 0xff, // 2 ... 0xff, // 3 ... 0xff
stimmt. Hat jemand ein Vorschlag? C example wären sehr hilfreich! MfG taxcon
-
Thread
Frequenzerzeugung ohne DDS Overkill??
liegt für mich der Hund begraben! Was spricht gegen +++ Aussage? Erhoehe einfach den Zähler von 8Bit auf 32Bit.
möglich. Je mehr Bit desto größer die Frequnezauflösung.