-
Thread
SPI mit Atmega8 zu PCM5142 klappt nicht!
Setzt du das CS selbst oder macht das der µC für dich? Soweit ich weiß sendet der nur 8 bit und setzt dann das CS wieder zurück. Der DAC will aber mehr als nur 8 bit mit einmal. Daher wirst du das CS selbst setzten und zurück setzten müssen.
Oder verstehe ich es falsch und der PCM5142 benötigt für die automatische Konfiguration auch noch den Bit-Takt, BCK?
-
Thread
DOGM128 an MSP430
P2OUT &= ~BIT5; //Alle Steuerleitungen auf 0 setzen P2SEL &= ~BIT6; //Steuerleitungen als I/O einstellen P2DIR |= BIT6; //Steuerleitungen als Ausgang einstellen P2OUT &= ~BIT6; //Alle Steuerleitungen auf 0 setzen P2OUT |= BIT6; //Chip Select auf 1 setzen (Ausgangszustand hergestellt) transmit(0x40); //Display start line 0 transmit(0xa1); //ADC reverse transmit(0xc0); //Normal COM0.
-
Thread
Wechsel vom zwei- zum vierzeiler HD44780
#include <util/delay.h> void rs (uint8_t wert) { if (wert == 1) PORTD |= (1<<PD3); //setzen else PORTD &= ~(1<<PD3); //löschen } void e (void) { PORTD |= (1<<PD2); //setzen _delay_us(100); PORTD &= ~(1<<PD2); //löschen _delay_us(100); } void vierBitBefehl (unsigned
#include <util/delay.h> void rs (uint8_t wert) { if (wert == 1) PORTD |= (1<<PD3); //setzen else PORTD &= ~(1<<PD3); //löschen } void e (void) { PORTD |= (1<<PD2); //setzen _delay_ms(100); PORTD &= ~(1<<PD2); //löschen _delay_ms(100); } void vierBitBefehl (unsigned
-
Thread
UART Zeichen Empfangen und nutzen
alles zum UCRSC nachgelesen und wenn ich da keine Bits setze, wird doch erwartet, dass ich 5 Bits sende, also passt doch alles, wenn ich im Terminalprogramm nun 5 Bits sende :)
schrieb im Beitrag #3258239: > Ich habe gerade alles zum UCRSC nachgelesen und wenn ich da keine Bits > setze, wird doch erwartet, dass ich 5 Bits sende Welcher AVR soll das sein? Ich habe noch keinen gesehen, beim dem der Inhalt des Registers nach einem Reset 0 ist.
-
Thread
die gemeinsten Fallstricke in C
Karl Heinz Buchegger schrieb im Beitrag #2572334: > Ein Byte mit lauter 1-Bit als Gegensatz zu einem mit lauter 0-Bits. Ich würde sogar sagen: Ein Word mit lauter 1-Bit, die Shell hat er wohl auf einer PDP11 geschrieben ;-) > Aber wenn du mich fragst, was das bringt: keinen
umständen kein char geputtet wird wenn Mist aus dem stream gelesen wird. Aber wo liegt hier der 8-Bit Fallstrick? Duck & Weg :-)
-
Thread
ARM7: Start geglückt aber noch Fragen
die Adresse CCR -> (*(volatile unsigned long *)0xE0024008) abbilden, so dass ich einzelne Bits mit CCR.CLKEN = 1 oder 0 setzen kann. Nicht ganz klar ist mir auch, ob "short" da oben richtig ist. Gruss, Christian
umzubauen. Nachteil ist ja, dass man auch mehr Code derzeugt, weil man keine zwei Bits gleichzeitig setzen kann, es sei denn man definiert das Register noch mit einem neuen Namen auf andere Art. Das Programm läuft auch so, nur ist es blöd, wenn das Problem anderswo wieder auftaucht
-
Thread
DigitalStrom aus der Schweiz
gefunden, in Computerworld online vom 27.08.2007: "Der Chip erreicht eine Datenübertragung von 200 Bit pro Sekunde". Wenn das WIRKLICH stimmt, kann man die Sache vergessen. Ein Befehl mit z. B. 8 Bit Adresse + 6 Bit für eines der 60 Kommandos, die das System beherrschen soll, benötigt also mindestens
Karl-heinz Strunk wrote: > >> War denn schon jemand zur CeBIt und hat das dort angesehen? > > Freitag. Und? Was gibt es von der CeBIT zu berichten?
-
Thread
Atmega328p fuses falsch gesetzt
noch einen weiteren AVR rumliegen? Je nach AVR-Typ genügt es u. U., einfach nur eine Fuse zu setzen, damit er seinen internen Takt an einem Pin heraus wackeln lässt. OK, diesmal die Fuse richtig setzen. :)
Hallo, für stabile 2MHz kann man in der Arduino IDE (getestet mit Mega2560) Port/Bit auf Arduino UNO Pin 'D13' [c] #include <avr/io.h> #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit
-
Thread
Scheduler für AVR
LCD_DB7); > lcd_enable_puls(); > } Was bitte ist das denn? Wer kommt hier auf die Idee jedes Bit einzeln zu setzen? [code]LCD_PORT &= 0x0F; // Pins low LCD_PORT |= data & 0xF0; //high Nibble setzen[/code]
Pins low > LCD_PORT |= data & 0xF0; //high Nibble setzen Nö, das geht nur bei eingeschränker Zuordung der Bits am Port.
-
Thread
[ AVR ] Probleme mit LCD-Display (KS0066)
; setzen BIT E nop ; kein Operation (warten) nop nop cbi portc,E ; lösche BIT E ret ; **** Zeitschleifen **** wait50us: ldi tim1, (F_CPU * 50 / 3 / 1000000
(KS0066) initialisieren ------------------ void lcd_ini () //void lcd_set204B_4bit () { delay_ms(40); // Warten > 30 ms //------------ Function set ------------------------ lcd_port_ini (); // setze Portrichtung (1 = Ausgang): 0011 1111 PORTC = 0x02;
-
Thread
Einfaches Assemblerprogramm
;Bank 1 setzen movlw B'11111111' ;Port B alle Eingänge movwf TRISB bcf STATUS, RP0 ;Bank 0 setzen main clrw movfw PORTB ;Auslesen
auch mit den anderen Pins was vor. Aber ich dachte jeden kann man einzeln ansteuern. Da ich das Bit sozusagen auf den Pin setze und nicht auf das ganze Register. Und eine grundlegende Frage hätte ich noch. Wenn der Taster betätigt wurde, kann mann das dann so machen das die LED leuchtet auch wenn
-
Thread
CPU Selbstbau Gesperrt
auf verschiedenen RAM-Datenbreiten identisch laufen, und auch auf einer kleinen CPU gäbe es native 32bit-Operationen. Oder es würde ausreichen, einen 1-Bit-Addierer in die CPU zu setzen und damit auch "breite" Additionen auszuführen. ist vielleicht langsamer, aber warum nicht. Eine interessante Möglichkeit
uralt) gefunden. Der RAM-Controller hat der CPU mitgeteilt, ob ein Adressbereich mit 8, 16, oder 32bit Daten ausgerüstet ist. Die CPU hat die zB 32Bit Zugriffe auf ein 8bit RAM dann (hardwaremäßig) in 4 Schritte geteilt; Adress-Inkrementieren inklusive. Ebenso, bei 8_Bit Zugriffen auf 32Bit RAM; wurde
-
Thread
Kein Bild bei eigenem VGA
Wenn ich es umdrehe habe ich einen roten Balken und der Rest ist schwarz. Bei den Bits in der Mitte ist der Balken dann Lila und wenn ich alle Bits setze, ist da ebenfalls ein Violetter Balken. Was ich mich halt frage ist warum der Hintergrund keine andere Farbe hat...
>>> Wenn ich es umdrehe habe ich einen roten Balken und der Rest ist >>> schwarz. >>> Bei den Bits in der Mitte ist der Balken dann Lila und wenn ich alle >>> Bits setze, ist da ebenfalls ein Violetter Balken. >>> >>> Was ich mich halt frage ist warum der Hintergrund keine andere Farbe >>> hat
-
Thread
INT0, nach wieviel takten startet die ISR?
es höchstens dort wieder manuell setzen. Ist aber >nicht gerade zu empfehlen. Warum nicht? Wenn ich meine Takte abgezählt habe und genau weiß, dass die ISR nicht unendlich tief schachteln? aber ok, das I-Flag setzen wäre dann 1-Takt
> wann willst du es denn setzen, du kannst es ja nur setzen nach dem du in > der ISR bist, aber da sind ja schon wieder ein paar takte vergangen. Es dürften ja Takte vergehen, ich möchte nur wissen wieviele. 6? 7? 8? Damit ich
-
Thread
Wie kann ich die Binärstellen einer Variable auf Ausgangsports verlinken
ich allerdings genau so. In asm sieht das in meinen LCD-routinen daher so aus: [code] LCD_4Bit_MSB_setzen: ; Einzelne Portbits setzen. Dieser Umstand ist wg. variabler Portzuweisung nötig disp_d7_aus disp_d6_aus disp_d5_aus disp_d4_aus SBRC temp, 7 disp_d7
Rechenleistung ;-) Am schnellsten dürfte die Methode mit den If-Anweisungen sein. Also einfach das Bit Testen und den entsprechenden Ausgang setzen oder zurücksetzen.
-
Thread
Attiny 2313 einzelne Bits ansprechen
manchmal muss man sich die Macros selbst definieren: [c] #include <avr/io.h> #define sbit(_port, _bit) _port |= _BV(_bit) #define cbit(_port, _bit) _port &= ~_BV(_bit) #define tbit(_port, _bit) _port ^= ~_BV(_bit) [/c] Ich verwende nun aber nur noch dieses Macro, das ist viel leistungsfähiger
, _bit) _port |= _BV(_bit) #define cbit(_port, _bit) _port &= ~_BV(_bit) #define tbit(_port, _bit) _port ^= ~_BV(_bit) #define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin)
-
Thread
VGA Grafikkarte mit AVR und 8MB SDRAM
Jo: http://www.analog.com/UploadedFiles/Data_Sheets/173587347adv7120.pdf 3*8Bit, also 24Bit Farbtiefe.
Ich weiß. Aber Du hast 3 Bustreiber auf der Platine. Also 24Bit. Die ungenutzen am TFT soll man ja auf 0 ziehen, sofern das Modul 24Bit RGB hat.
-
Thread
Double=16Bit?
, ich habe eine Frage zum Datentyp Double. Irgendwie habe ich früher angenommen, dass Double 16 Bit lang ist. Aber jetzt lese ich, dass double irgendwie 64 Bit lang sind! Warum funktioniert dann meine TWI-Kommunikation, indem ich 16 Bit versende und empfange und die Zahlen sind korrekt!
Wenn in einem 8-bit Kontext programmiert wird sind 16-bittige Doubles üblich. Bei einem 32-bit-System sinds dann eben 64-bit für ein Double. bye Frank
-
Thread
DS18B20 1-Wire Implementierung - Timing-Probleme
Logik-Analyzer verwendet. Ich bin nun an einem recht frustrierten Punkt: Ich kann zwar den internen 64-bit ROM-Code auslesen (bzw. das was mir der Logic-Analyzer anzeigt sieht gut aus) - allerdings werden einzelne Bits falsch eingelesen (obwohl im Logic Analyzer alle 1er Bits bzw. 0er Bits identisch aussehen
Leben schwerer machst als nötig. Das einzig wirklich interessante Timing ist das eines einzelnen Bits.
-
Thread
Attiny Programmierung
schreibst du etwas übers maskieren, aber nirgendwo, etwas darüber, dass diese für ein gezieltes Setzen und Löschen von Bits sind und dass für das Setzen eines Bits eine ODER Maske und das Löschen eine UND Maske verwendet wird und warum das so ist. Außerdem setzt du komplett die digitale Logik vorraus
von der Idee überzeugt, mit derartig komplexen Mikrocontrollern anzufangen. Ich habe nichts gegen 32bit, aber die Taktversorgung, der NVIC und die Peripherie sind schon erheblich komplexer, als herkömmliche 8bit Mikrocontroller. Ich habe das Fach vom Grund auf gelernt. Erst ein bisschen Elektronik
-
Thread
Bit folge einlesen
= 0; BitIndex < 8; BitIndex++) { // Zu sendendes Bit ausmaskieren und prüfen ob es gesetzt ist if (MeinArray[ArrayIndex] & (0x01 << BitIndex)) { PortC |= 0x01; // Bit 0 setzen }
sein, ist ja einfach umgekehrt: [c] for (ArrayIndex = 0; ArrayIndex < 3; ArrayIndex++) { for (BitIndex = 0; BitIndex < 8; BitIndex++) { if (PortC & 0x01) { MeinArray[ArrayIndex] |= 0x01 << BitIndex; } else { MeinArray[ArrayIndex] &= ~(0x01 << BitIndex);
-
Thread
suche beispielcode für 16-Bit Timer (Mega 8)
1/256 // 1 0 1 1/1024 TCCR1B = 0b00000011; // Die Bits: TOIE1 OCIE1A NA NA TICIE NA TOIE0 NA TIMSK = 0b10000000; //TOIE1 = 1 => Timer Overflow 1 Interrupt wird ausgelöst sei(); while(1) { //Hier in Sleepmodus setzen so dass Interrupts
1/256 // 1 0 1 1/1024 TCCR1B = 0b00000011; // Die Bits: TOIE1 OCIE1A NA NA TICIE NA TOIE0 NA TIMSK = 0b10000000; //TOIE1 = 1 => Timer Overflow 1 Interrupt wird ausgelöst sei(); while(1) { //Hier in Sleepmodus setzen so dass Interrupts
-
Thread
Ist Arduino verpönt?
Verlinkung im Forum noch nicht so zu Rande kommen: Man kann die Links auf Beiträge innerhalb der Threads setzen )
tun. Man kann uC auch effektiv in C programmieren, wie das oben durchgekaute Beispiel des Port-bits setzen zeigt. Aber dazu muss man die uC-Architektur kennen und die Doku des Controllers gelesen haben. Und der Vergleich ARM - 8bit uc hinkt doch gewaltig. Die 1-8 kByte an Programmspeicher eines
-
Thread
Unterschied zw. 8 und 32bit-Prozessoren
Kann mir von Euch vielleicht in kurzen Stichpunkten nennen, worin sich 8bit-Prozessoren von 32bit-Prozessoren unterscheiden? Unterscheiden die sich denn wirklich so viel voneinander? Sind denn nicht die grundlegenden Funktionen bei 8-bit und 32-bit-Prozessoren identisch,
x-Bit schrieb im Beitrag #2933866: > Ich setze alles auf *Datenbusbreite*. ;-) Mein Pentium P54 war aber kein 64-Bit Prozessor. Wird Haswell etwa ein 256-Bit Prozessor?
-
Thread
ARM, Philosophie und Programmierparadigmen
üblich ist und es mich als Programmierer auf dem höheren Level einfach nicht mehr interessiert welche Bits da Hardwarenah gesetzt werden, oder ob das nachlesen im Manual plus händisch setzen der SFRs à la AVR auch noch üblich/rentabel ist.
ist und es mich als Programmierer auf dem höheren > Level einfach nicht mehr interessiert welche Bits da Hardwarenah gesetzt > werden, oder ob das nachlesen im Manual plus händisch setzen der SFRs à > la AVR auch noch üblich/rentabel ist. Hängt allein von deinen Vorlieben ab, du kannst problemlos
-
Thread
Atmega48PA RS232 Problem
Ich habe mal die Baudrate auf 4800 gesetzt und dasselbe auch in HTERM gemacht, anstatt mein U2X0-Bit in UCSR0A zu setzen. Aber trotzdem sendet mein Atmega nichts.
Nur die Geschwindigkeit ist auf 9600 Baud gedrosselt. Wenn ich dieses eine Bit setze, damit der Chip doppelt so schnell arbeitet, klappt das nicht, aber egal.
-
Thread
Prinzip grafische darstellung/diagramme etc
Das macht man dann abwe nich mit nem 8 bit microcontroller :D
.0,0,0,0} {0,0,0,0,0,0,0.........0,0,0,0}} [/c] Je nachdem ob ein Pixel gesetzt wird oder nicht, setze ich eine 0 oder eine 1 in die jeweilige Array Position. Sollte man eig. einen anderen Datentyp nehmen? int reserviert doch mehr Speicher als nur 1 Bit? Oder wie läuft das ganze ab? Weil rechnerisch
-
Thread
wie bit ändern in nicht-IO register?
MCUCR /ist/ ein IO-Register... Anyway, die generische Lösung ist: IO-Register einlesen, Bit setzen, IO-Register rückschreiben.
SBR ist genau die Antwort auf Deine Frage; mit diesem Befehl kannst Du einzelne (oder mehrere) Bits in einem der Register R16-R31 setzen. sbr r16,0b00001000 setzt z.B. Bit 3 in Register 16. Gruß, Frank
-
Thread
STM32 "SPI"-Slave 24 Bit ohne Chip Select
wurde. Im SPI_CR1 SSM auf 1 setzen (=SSI Bit = nCS) und SSI auf 0 (nCS LOW). Das Problem ist jetzt das Einrasten in die 24Bit Frames. Dazu muss man dann wohl wirklich einmal nen Timer starten und abtasten wielange da Ruhe ist auf
Mw E. schrieb im Beitrag #5945742: > Im SPI_CR1 SSM auf 1 setzen (=SSI Bit = nCS) und SSI auf 0 (nCS LOW). Mit dem Timeout den Chip Select beeinflussen. Die Idee klingt gut. Dann ist immer direkt alles richtig ausgerichtet. Als Timeout-Bedingung sollte die Bedingung
-
Thread
Attiny2313 USART Baudrate stimmt nicht
setzen. Nein, es ist eben nicht der Befehl um ein *einzelnes* Bit zu setzen, sondern um *mehrere* Bits zu setzten. Der zweite Parameter ist daher auch keine Bitnummer, sondern eine Maske. sbr Rxx,0x81 : Bits 0 und 7 setzen sbr Rxx,(1<<UCSZ0) : Bit UCSZ0 setzen sbr Rxx,(1<<UCSZ0)|(1<<UCSZ1) : Bits UCSZ0 und UCSZ1 setzen So nebenbei: "sbr" ist nur ein Alias für "ori". PS: Außerdem kannst du dir dieses
-
Thread
Interrupt mittels Flag erkenne, kein jump an die Interrupt Vector Addr.
sei(); [/c] Das ich das EICRA beschreiben muss ist definitiv klar, aber muss ich auch die Bits im EIMSK setzen? oder bestimme ich damit das gesprungen wird? Ich möchte nur, dass das Flag gesetzt wird. Danke schonmal
); //INT0 und INT1 aktivieren Nö. FREIGEBEN darfst du die Interrupts nicht. Die Funktion zum setzen der Flags ist aber dennoch aktiv und kann per Polling gelesen und auch gelöscht werden. Siehe Datenblatt. >auch die Bits im EIMSK setzen? oder bestimme ich damit das gesprungen >wird? Ja.
-
Thread
Problem mit Eagel Bite Hilfe
Hallo, habe ein Probelm mit Eagel wie kann ich Wiedersatände und Kondensatoren in meinem Schaltplan einfügen. Wenn ich auf ADD gehe und dann Wiederstände bzw. Kondensatoren eingebe dann heißt es nur immer keine gefunden. Was muss ich machen oder was muss ich dann eingeben ? Danke schon mal im voraus. MFG
-
Thread
Marderschreck Softwareproblem
der ADC-Interrupt immer an der gleichen Stelle auftreten wird. Mach es ordentlich. ADC mittels setzen von ADSC starten. Das ADSC Bit bleibt solange gesetzt, wie der ADC am arbeiten ist und wenn der ADC fertig ist, dann setzt er dieses Bit wieder auf 0 zurück. Den ADC Interrupt braucht dazu kein Mensch
fehleranfälliger. Und bei der Gelegenheit benutzt du dann auch gleichg eine ordentliche Schreibweise zum Setzen der Bits und nicht dieses Binär-gehampel ... [avrasm] .... ; AD-Converter setup: ; If ADLAR is set, the result is left-adjusted, 8 bit ; ADC channel 3 ldi temp, (1<<ADLAR) |
-
Thread
6 Bit Dämpfungsglied ansteuern
#7257965: > Ein BCD Drehschalter geht ja von "0000-FFFF" Von 0 bis F, das sind die unteren 4 Bits. Für die oberen nimmst Du von einem zweiten Hex-Codierschalter die unteren zwei Bits. Das ergibt die nötigen 6 Bits mit einem Einstellwert zwischen 0 und 3F.
mit 2 x '190 (dezimal) und 2 x '191 (binär) müsste es auch mit 2 x '190 (dezimal) und 2 x '283 (4-Bit Volladdierer) sowie der '74 klappen. Wrap-Around verhindern: 1 6-Bit NAND, ein 6-Bit Or sowie ein 2-Bit AND auf den Load-Eingang, und entweder ein beliebiges der binären Datenbits oder alle dezimalen
-
Thread
AVR Assembler - IO Port-Switching-Zeiten nicht berechenbar
if (bla) PORTB = on; else PORTB = off; Das funktioniert auch alles soweit, solange ich 01010101 setze. Setze ich allerdings 00001111 fällt mir auf, dass er anscheinend so "klug" ist, bei den sich wiederholenden Bits weniger Zyklen zu brauchen als bei dauernd wechselnden Bits, als ob es intern so nach
Christian S. schrieb im Beitrag #4092499: > Das funktioniert auch alles soweit, solange ich 01010101 setze. Setze > ich allerdings 00001111 fällt mir auf, dass er anscheinend so "klug" > ist, bei den sich wiederholenden Bits weniger Zyklen zu brauchen als bei > dauernd wechselnden Bits, als ob es intern
-
Thread
Anfängerfrage avr/interrupt.h
wären mindestens 3 Befehle dafür notwendig. Grob etwa: * lade SREG in ein Arbeitsregister * setze bit im Arbeitsregister * schreibe Arbeitsregister zurück nach SREG Der AVR kennt aber einen speziellen Befehl dafür, eben sei. Mit der __asm__ Anweisung kann man direkt im C Code beliebige Assembler
Peter D. schrieb im Beitrag #6495641: > CLI, SEI sind eigenständige CPU-Befehle. > Ein Löschen, Setzen auf andere Art kann Seiteneffekte haben. Nein, CLI und SEI sind Assembler-Mnemonics und in diesen Fall nur Aliase zu den Mnemonics "BSET s" und "BCLR s" Hier die 16-Bit Opcodes der Befehle:
-
Thread
16 Bit Timer für Funkuhr
Servus, also wir haben folgendes Problem. Wir wollen eine Funkuhr bauen. Die Antenne und alles läuft schon. Bei der Dekodierung des Signals stoßen wir jedoch auf ein Problem. Wie bringen wir unserem Timer bei, dass er jede Millisekunde einmal auslöst und eine Variable incrementiert. An unserem Oszi haben wir nie die richtige Zeit. Hier der Code: .include "m16def.inc" .def ms=r17 .org 0x0000 rjmp main .org 0x10 rjmp timer1_o main: ldi r16, LOW(RAMEND) out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ldi r16, 0b00001000 out DDRD, r16 ldi r16, 0b10001000 out PORTD, r16
-
Thread
Bizarrer Firmware crash - ATmega4808. Wie Debuggen?
Niklas G. schrieb im Beitrag #8074088: > Nick schrieb: >> Setz mal den Stack hoch > > Hat das irgendeine Auswirkung auf dem AVR?! Eigentümliche Frage. Dadurch wird dann ein 57 Bit-Prozessor daraus? Oder wie willst du das interpretiert haben? Ersatzweise
Nick schrieb im Beitrag #8074096: > Eigentümliche Frage. Dadurch wird dann ein 57 Bit-Prozessor daraus? Oder > wie willst du das interpretiert haben? Was verstehst du überhaupt genau unter "Setz mal den Stack hoch" ? Ich schätze mal, im Linkerscript das Symbol für den minimalen Wert
-
Thread
Hilfe bei der Programmierung eines Adventskalenders
#6606715: > Wohl kaum, mit einem 32 KḱHz Takt kann man die unmöglich ansteuern. 24 LEDs, ein 24-bit Schieberregister, der 2313 darf mit einer Periode von 24 h takten ...
Danke für die Antworten schon mal. Das heisst aber wie schon gefragt: Den Oszi integrieren, Fuses setzen und dann kann ich den Rest im Prgramm machen.
-
Thread
Webserver ATmega32/644DIP ENC28J60
void poll_eth (void) { #if USE_ENC28J60 // while( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0) if( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0) { #endif
!!nicht deaktiviert wurde!! Also FuseBit für JTAG deaktivieren.
-
Thread
geeignetes LCD Punktmatrixdisplay
Kommandobytes, die im exakt so im Datenblatt stehen. Wenn man Leitungen sparen will, kann man auch den 4bit-Modus nutzen, dann muss man halt jedes Byte in zwei Schritten schreiben. Nachdem das Display initialisiert ist, sendet man "Set DD RAM Address", also setze "Display Data RAM"-Adresse, so dass man
sichtbar ist. Dann hat man schonmal fast alle Grundlagen gelegt. Im Programm dann einfach Daten auf 8Bit-Port, R/S-Leitung (Befehl oder Daten) setzen und kurz den Enable-Pin pulsen. Das dann für jedes zu sendende Byte. Wenn man den SPI-Mode nutzen will, muss man gucken, was da zu beachten ist (Controller-Datenblatt
-
Thread
7 Segment Anzeige auf verschiedenen Ports
und eines für die Ausgänge auf Port }B, und der Code donnert die entweder inklusive der unbenutzten Bits raus, oder maskiert die benutzten z.B. benutzt bit 0 bis bit 5: portA = (pinA&0xE0)|CharArray[value].A;
#include <avr/interrupt.h> #define F_CPU 8000000ul // 1 << 6 = 0100 0000 bin = Maske fuer Bit Nr. 6 (von 0 an gezaehlt) // ODER Verknuepfungen sind in der Lage ein Bit zu setzen // UND - Verknuepfungen sind in der Lage ein Bit zu loeschen // wird mit der negierten Masek einer ODER Verknuepfung
-
Thread
pic das forum Gesperrt
laden movwf TRISA ; alle Pins des Port A als "Input" schalten bcf ADCON1, PCFG3 ; Bit3 im ADCON1-Register löschen (= PORTA auf digital I/0 konfigurieren) bsf ADCON1, PCFG2 ; Bit2 im ADCON1-Register setzen (= PORTA auf digital I/0 konfigurieren) bsf ADCON1, PCFG1 ; Bit1 im
SPI-Schnittstelle (Register liegt in Speicherbank 0) bsf SSPCON, SSPEN ; im SSPCON-Register das Bit 5 setzen! (SSPEN = synchronous serial port enable bit) bcf SSPCON, CKP ; im SSPCON-Register das Bit 4 löschen!(CKP = clock polarity select bit) bcf SSPCON, SSPM3 ; SSPM3...SSPM0: 0100 =
-
Thread
MEGA8 ADC Interrupt beeinflusst TWI Interrupt
integriere, habe ich keinen Zugriff mehr per I2C. Und wenn ich den ADC ohne Interrupt einlese also das Bit (1<<ADIE) nicht setze, dann stürzt er mir ab sobald ich eine Spannung am ADC anlegen habe. Wisst ihr weiter? Vielen Dank für eure Zeit [c] #include <stdlib.h> #include <avr/io.h> #include <avr
|= (1<<(BIT))) // set Bit #define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT))) // clear Bit #define toggle(ADDRESS,BIT) ((ADDRESS) ^= (1<<BIT)) // Bit umschalten #define bis(ADDRESS,BIT) (ADDRESS
-
Thread
Fusebits lassen sich nicht setzen (neuer ATMEGA328P)
arduino -P COM3 -b 115200 -p m8 Detected 1e950f = ATmega328P). Laut AVRDUDESS stehen alle Fuse-Bits auf 0x00. Soweit ich der Anleitung des Mega entnommen habe, sollten diese auf L 0x62, H 0xD9, E 0xFF und LB 0xFF stehen. Möchte ich diese jedoch programmieren, erhalte ich die Fehlermeldung: >>>
NEO_KHZ800); void setup() { strip.begin(); strip.setPixelColor(0, strip.Color(255, 0, 0)); // Setze die erste LED auf Rot strip.show(); // Anwenden der Änderungen } void loop() { // Nichts weiter machen }[/c] Data-Pin und Pixel sind angepasst, Übertragung läuft ohne Fehlermeldung.
-
Thread
ATtiny85 benötige Taster und kein freier Port
an Position 0 steht ohne mittels CS gesagt zubekommen der Bit-Zug steht jetzt vorn am Haltesignal. Alle Bits können ein- und aussteigen. Beim Daisy Chain noch anders verdeutlicht. Soll das erste SPI Device alle Bits verarbeiten die vorbeikommen? Obwohl die Bits gar nicht für ihn bestimmt sind. Wäre ja Unsinn.
-
Thread
Fuse bits auswählen
hallo habe einen atmega8, den ich mit ponyprog programmieren möchte. ich soll diese fusebits setzen: high byte = 0xc9, low byte = 0x9f was muss ich da ankreuzen?? mfg
-
Thread
suche 4 bit zähler
Ringzähler nach dem wort habe ich gesucht gibt es da auch einen 4 bit ringzähaler? oder setze den vierten ausgang einfach auf reset, das müsste doch der MR eingang sein?
Hi >Ringzähler nach dem wort habe ich gesucht gibt es da auch einen 4 bit ringzähaler? Kaum. Es sei denn du baust den dikret auf. >oder setze den vierten ausgang einfach auf reset, das >müsste doch der MR eingang sein? Das geht. MfG Spess
-
Thread
I2C ACK wann wieder zurück setzen
Hallo Ein ACK beruht laut µC Artikel auf setzen SDA auf Low im 9.Zyk Wann wird/muss dieses Bit vom ACK Versender (8bit Daten-Empfänger) wieder zurück gesetzt werden damit der SDA Pin als Eingang "open-drain" wieder fungiert? Bei mehrfachen Slaves
Stefan U. schrieb im Beitrag #4558054: >> Wann wird/muss dieses Bit vom ACK Versender wieder zurück > gesetzt werden > > Unmittelbar nach dem Ende des Taktimpulses. Also so in etwa? [c] SendACK (void) { while (!SCL); // Takt ist noch LOW, bit wird gesetzt
-
Thread
Einstieg in 8051 - Atmels AT89S52 oder?
2051/4051 auch beispielsweise den SH79F3212 mit 13 x 12 bit A/D, 1% genauem RC Takt, 8 x Touch-Key, 7 x 100mA Ports und I/Os mit wählbar 75/100/150/300 Ohm für 10,20,30,40 mA LED Strom in SOP20/SOP28. Silabs bietet 14-bit 1MSPS A/D oder 16*12bit A/D 4*12bit
> ist es "einfacher" einen integrierten ADC zu bedienen Das Starten reduziert sich auf das Setzen eines Bits in einem Register. > habe fertig Gibt es per Interrupt oder mit der Abfrage eines Bits in einem Register. Extern angebunden braucht es: - Pins fuer die Uebertragung - ein Protokoll