-
Thread
PORT-Zustand abfrgen und zurück schreiben
Oliver S. schrieb im Beitrag #4519902: > Um welchen Controller geht's denn überhaupt? ATTiny84
PORTA geht nur für Ausgaben... Das Inputregister findest du aber mal selbst raus ;) GRUß J
-
Thread
GCC Compiler + ATXMEGA E = Schrott?
Assembler-Nop, dann wird Code richtig ausgeführt!? } [/c] Ein Nop hinter dem if sorgt dafür, dass es geht. Warum auch immer. Wahrscheinlich ist der generierte Assembler dann doch nicht ganz korrekt.
Compilerfehler zu finden. Ja, find ich ja auch ungewöhnlich. Hardware-Bug? Also auf nem XMega A geht es, auf nem XMega E nicht.
-
Thread
Hilfe zu AD Wandler 3fache Messung
vergleich += ADCW; //Gemessenen Wert aus ADCW auslesen if (temp > vergleich) { PORTC = (1<<PC4); } else { PORTC = (0<<PC4); } Dieser Programmauschnitt funktioniert nicht :( Muss ich den ADC zwischendurch immerwieder deaktivieren? da sonst der gemessene
einem Bit Ausgangsinformation ist nur schwer anzusehen, was tief in ihrem Inneren vor bzw. schief geht. Bevor du den Vergleich machst, solltest du erstmal gucken, was du vergleichst und dir dabei sicher sein, dass die Werte auch dein Eingangssignal abbilden. Vielleicht hat der Analogteil vor dem ADC
-
Thread
AVR-GCC: Globales Include
... ... #define TxD PORTB0 #define TxD PORTC3 ... ... Datei: SoftSerial.c Datei: SoftSerial.h Verzeichnis: driver/ Datei: main.c in
im Quelltext auf. Wenn sich das jemand anderes oder Du selber in ein paar Monaten wieder anschaut, geht erst mal die Sucherei los, was man denn alles zum Compilieren braucht ...
-
Thread
Frage zur UART Mega328
" if (chars=='A') { PORTC=(1<<DDC1); } PORTC=0x00; } " Das wird in einer sehr schnellen Endlosschleife wiederholt ausgeführt. Wenn du ein A schickst, ist PC1 für ein bis zwei CPU Takte (paar
wäre PORTC=(1<<PC1). Noch richtiger wäre PORTC |=(1<<PC1); zum Einschalten und PORTC &= ~(1<<PC1); zum Ausschalten. Unterschied: Mit diesem beiden Befehlen änderst du nur das eine Bit, was du ändern
-
Thread
No supported board found! USBasp fehler
Arduinoboard gekauft hat kann man auch usbasp benutzen und das ist auch nicht schlechter. Nur geht beim atmega8 kein Weg dran vorbei die arduino IDE anzupassen. Zwei Fälle sind möglich: 1. Du hast einen Breadboard Aufbau mit einem üblichen externem 16Mhz Quarz an Xtal1 und Xtal2. Hier brauchst
Programmierung mit MC die ich kenne sieht ein Blinklicht wie folgt aus: DDRC = 0b00100000; PORTC = 0b11111111; // PC5 = High _delay_ms(1000); PORTC = 0b11011111; // PC5 = Low _delay_ms(1000); Im Arduino sieht der Beispielcode anders aus. int led = 13; pinMode(led
-
Thread
If Else geht nicht
Wieso geht das nicht ? while(1) { if (licht==1) { for(i=0;i<10000;i++) { PORTB=0b00111000; PORTC=0b00111111; PORTD=0b11100000; _delay_ms(
Ich D. schrieb im Beitrag #4478223: > Wieso geht das nicht ? Tolle Frage. Was geht nicht? Natürlich geht das. Es kommt nur nicht das raus, was du erwartest, oder? Du wirst uns schon erzählen müssen, was das ist, was du erwartest.
-
Thread
Drehencoder zählt doppelt.
Norbert H. schrieb im Beitrag #4469787: > Ich mag das Tabellengedöns nicht beim Drehencoder. Es geht nicht um mögen, sondern es geht um zuverlässige Programme > hab ich mal so implementiert, und funktioniert einwandfrei. In jedem Incrementalencoderthread kommen irgendwelche Noobs aus den Höhlen
Hallo, es geht auch schnell wie die Herren, speziell auch Falk Brunner, hier zeigt haben: https://www.mikrocontroller.net/topic/328856#3591607
-
Thread
Anzeige LCD-I2C / Multitasking und Tasterentprellung von Peter
schalten immer zusammen mit long { PORTC &= ~(1<<PC6); // LED an } if(get_key_long(1<<KEY_1)) // Lang schalten immer mit short { PORTC |= (1<<PC6); // LED aus } //////////////////////////////
Hallo Falk habe das Programm gleich getestet. Geht ohne Fehler und Warnung. Zusätzlich habe ich noch das eingebaut [c] if(get_key_press(1<<KEY_2)) // nur Taste press { // LED an PORTC &= ~(1<<PC5); anz
-
Thread
Proplem mit LED Matrix 20 x 7
PORTC |=(1<<PC5); // Takt HIGH -> Flanke => schreiben PORTC &=~(1<<PC5); // Takt LOW PORTC |= (1<<PC4); // Bit 1 Setzen PORTC |=(1<<PC5); // Takt HIGH -> Flanke => schreiben PORTC &=~(1<<PC5); // Takt LOW PORTC &=~ (1<<PC4); // Bit 0 Setzen PORTC |=(1<<PC5); // Takt HIGH -> Flanke => schreiben PORTC &=~(1<<PC5); // Takt LOW
-
Thread
ATXmega32e5 SPI und Timer eliminieren sich gegenseitig?
Hallo, PORTC.REMAP = 0 PORTD.REMAP = 0 Habe ich beides.
Hallo, verste ich das richtig, dass man dann quasi keine Peripherie nutzen kann, sobald Timer auf PORTC aktiviert ist? Was haben die denn da gebaut?! Aber! Jetzt trotzdem mal eine Sache: Lässt sich denn NUR das SPI aktivieren auf PORTC? Also wenn man Timer komplett deaktiviert lässt, das geht
-
Thread
AVR: Rogue Pointer oder böser Geist verursachen Abstürze
features die implementiert werden. CAN benutze ich (noch) garnicht. Code halbieren bzw. vierteln geht leider nicht, weil der Treiber Drittanbietersoftware ist und nur als Verbund funktioniert.
MI0 DDRD = 0; // Later Interrupt pin DDRE &= ~(1<<7); PORTB |= (1<<0); PORTC = (3<<3); // ABCC ModuleDetection Pins, aktiviere internen Pullup PORTC &= ~(1<<1); //Pull reset Low PORTD = (1<<0); MCUCR &= ~(1<<PUD); //Global-Pulldown-Disable = off (
-
Thread
Atmega8 scheint UART zu empfangen
sind. Somit ist 1 gleich 0 und umgekehrt. Schmeiss das hier mal raus DDRC = 0b11111111; PORTC = 0b11111111; und stattdessen: DDRC = 0xFF; PORTC = 0x00;
MYUBRR); unsigned char zeichen; printString("Welcome AVR!\r\n"); DDRC = 0xFF; PORTC = 0xFF; _delay_ms(1000); while (1) { zeichen = receiveByte(); PORTC = PORTC << 1; //PORTC= zeichen; //printString("Test\r\n") _delay_ms(200); }
-
Thread
PIC18F46K80 Programm Fehler
mir nicht erklären kann. Wenn ich einmal kurz RB1 Drücke Leuchtet die LED ca. 2 Sekunden auf und geht dann wieder aus. Solange ich RB0 Drücke kann ich am Oscillator die gewünschte Frequenz messen. Also eigentlich genau, was man bei dem Programm erwarten würde. Das merkwürdige ist jetzt nur, dass
0x100 nach oben verschiebe und entsprechend den code ändere, sodass die Bank Selektion verwendet wird geht alles.
-
Thread
Entprellen Systick Debounce STM32
der Port und der Pin übergeben wird und als Rückgabewert eine 1 od. 0 liefert. z.B.: Pin 1 am PortC soll entprellt/ausgelesen werden. Funktionsaufruf sollte sinngemäß so aussehen: Debounce(GPIOC,1) Ich weiß dass der Funktionskopf jenem von [c]uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx
schrieb im Beitrag #4450116: > Funktionsaufruf sollte sinngemäß so aussehen: Debounce(GPIOC,1) Das geht nicht. Ein nicht blockierendes Entprellen benötigt 2 Teile: - Den Timerinterrupt, der entprellt und entsprechende Ereignisse (Flankenwechsel) bereitstellt - Der Mainfunktion, die dann nur noch die
-
Artikel
Raspberry-Webradio
gesetzt werden. Für den ATMega32 bedeutet das: Taktfrequenz auf Quarz und JTAG deaktivieren (damit PORTC verwendet werden kann). Das Entspricht den Fuse-Werten Low-Fuse 0xde und High-Fuse 0xd9) Am ATTiny stellen die Fuses die interne Taktfrequenz auf 8MHz. Die Fuse-Werte sind Low-Fuse 0xe4, High-Fuse
Software oder Hardware) Im Simulator funktioniert das Abspielen von Streams/MP3s nicht Die Firmware geht davon aus, das alle notwendigen Dateien in /home/pi legen. Abhilfe schafft entweder das Anlegen des Ordners /home/pi und hineinkopieren der relevanten Dateien in diesen Ordner oder das Ändern der Pfade
-
Thread
An die Ardunio Gemeinde
ESP8266 porgramieren und flashen kann. Alles per Knopfdruck, egal, ob > per serieller oder OTA. Geht mir auch so! Unterstützt alle, für mich relevanten, µC.
DDRD = 0; // inputs // turn on pullups on all inputs PORTB = 0b11011111; PORTC = 0xFF; PORTD = 0xFF; } int main(void) { init_io(); while (1) { PORTB |= 0b00100000; _delay_ms(100);
-
Thread
Wiedereinstieg, Problem mit Programmer
anschließend sind alle Lock-Bits gesetzt(vorher waren sie nicht gesetzt, konnte ich auslesen). Chip-Erase geht auch nicht, ich kann danach nichtmehr auf den µC zugreifen. Fuses sind alle im Werkszustand. Sogar beim Ändern der Clock von intern 1 Mhz auf intern 8 Mhz sind danach alle Lock-Bits gesetzt. Liegts
DDRC = (1 << PC5); /* Output */ PINC = (1 << PC5); /* internal Pullups */ while(1){ PORTC |= (1 << PC5);/*LED OFF*/ _delay_ms(250); PORTC &= ~(1 << PC5); _delay_ms(250); } return 0; } [/c] Falls noch weitere Infos benötigt werden kann ich die natürlich
-
Thread
LCD an ATmega644 (später ATmega8) mittels TWI/I2C (Anfängergerecht)
Bits als Steuerleitungen ebenfalls möglich. Das hilft mir zwar weiter, aber die Frage warum es mit PORTC oder PORTD nicht funktioniert bleibt bestehen. Danke.
lcd_gotolc(); geht bei 1,1 los, nicht 0,0. Wenn sonst die Textausgabe funktioniert, sollte diese Funktion auch laufen.
-
Thread
Welchen Schieberegister besser geeignet (74HC165 oder 74HCT165)
aus? Vielen Dank! So sieht der Code dazu aus: [c] void Eingaenge_abfragen () { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
=0;i--) { // Mit Clock weiterschieben // Clock auf High PORTC |= (1<<PC4); // Clock auf Low PORTC &= ~(1<<PC4); // Clock auf High PORTC |= (1<<PC4); } // For Ende } [/c]
-
Thread
Taktfrequenz bei STM32F103C8T6 Minimum development board
habe CooCox IDE und den GNU ARM Compiler installiert und "Hello World!" mit der blinkenden LED auf PORTC13 geschrieben, hat alles super geklappt. Ich dachte die Taktfrequenz von dem MCU waere auf 72 MHz gestellt, so steht es bei mir in der system_stm32f10x.c Datei. Wenn ich aber den Logikanalysator
H. schrieb im Beitrag #4423926: > Da bekomme ich ja mehr als die doppelte Frequenz, 1.6 MHz. Geht auch noch mind. 4 mal schneller - wenn es denn unbedingt sein muss: http://forums.leaflabs.com/topic.php?id=860 Ist aber nur sinnvoll bei einer beschränkten, nicht zu großen Anzahl von zu generierenden
-
Thread
Aquariumsteuerung
... da hatte ich mich wahrscheinlich verlesen und es geht doch. ... aber bei Stromausfall muss die Zeit neu gestellt werden.
Lars B. schrieb im Beitrag #4417343: > ... kleine Ergänzungen in der Schaltung. Geht so nicht. Bei deinen LED-Rheihen wird immer nur die unterste leuchten.
-
Thread
Tasterentprellung per Software, Atmega128, Port C
einsetzen: Initialisierung mit: [c] DDRC = 0xc0; //.7=E, .6=RS, .5=SW0, .., .2=SW3 PORTC |= 0x3c; //Pull-Pu's für taster Aktivieren [/c] #define TASTERPORT PINC #define TASTERBIT0 PINC5 #define TASTERBIT1 PINC4 #define TASTERBIT2 PINC3 #define TASTERBIT3 PINC2 [c]
Antworten, doch nun funktioniert's. Diese Variante muss schon regelmässig aufgerufen werden, sonst geht's net. Danke, werde mir die anderen bei gelegenheit anschauen.
-
Thread
PIC32MZ Ports mit Pull up spinnt
initialisiert wurden, habe ich einen Screenshot der Einstellungen gemacht (eine Kopie als Text geht nicht). Im Moment der Aufnahme waren alle Ports offen, trotzdem wird bei PORTC, Bit 13, 0 eingelesen. Die Schleife, mit der ich das Verhalten teste, ist der Vollständigkeit halber am Ende des
der gibt an wieviel Strom du durch die internen Clamping Dioden jeagen kannst bevor da was kaputt geht.
-
Thread
C - Ersatz von switch case.
Hab das mal schnell ausprobiert. Hmm, das geht nur, wenn ich mein restliches Programm umschreibe, weil ich dort natürlich überall channel als int einsetze, (ich seh gerade, char bzw. besser uint8_t würde reichen) wenn ich die Funktion aufrufe. Das
Projekte) sich mehrere Möglichkeiten anzuschauen oder zu überlegen. Deswegen ist der Gedanke "gehts auch anders oder sogar besser" gar nicht schlecht.
-
Thread
Rechteckgenerator mit Atmega8 nicht so einfach (Anfänger)
get_key_press( 1<<KEY1 ) || get_key_rpt( 1<<KEY1)) // Taster 1 freq 1Hz höher { PORTC ^= (1<<PC5); lcd_clear(); lcd_setcursor( 0, 0 ); lcd_string("Taste 2 repeat"); f++; lcd_label_uint32( 0, 1, "f:", f ); i = (F_CPU/(Prescaler8
kann (nämlich 1, 1.2, 1.5, 2 und 3 MHz), lohnt? Das war von Chris nur als Beispiel gedacht. Es geht halt darum, dass man generell dem Parameter einen Namen geben sollte, der seine Funktion beschreibt.
-
Thread
.dseg am Ende oder auch Anfang?
sowieso nicht. Die gibt es schon. Was du vereinbarst, das sind andere Namen für die Register. Da geht es aber nicht darum, dass dafür irgendwelcher Code generiert werden soll oder dass irgendwelche Speicherreservierungen im SRAM gemacht werden sollen, sondern es geht einzig und alleine um eine Vereinabarung
equ LED_PORT = PORTB .equ LED_DDR = DDRB .equ LED_PIN = PB0 in .equ LED_PORT = PORTC .equ LED_DDR = DDRC .equ LED_PIN = PC2 "Spechende Namen" sind eine sehr praktische Hilfe, wenn man was ändern will oder nach 2 Jahren wieder in das Programm schaut. Gruß aus Berlin Michael
-
Thread
C-Code für Fahrtregler anpassen
PINB6 = 6 ; Port B Input Pins bit 6 .equ PINB7 = 7 ; Port B Input Pins bit 7 ; ***** PORTC ************************ ; PORTC - Port C Data Register .equ PORTC0 = 0 ; Port C Data Register bit 0 .equ PC0 = 0 ; For compatibility .equ PORTC1 = 1 ; Port C Data Register bit 1 .equ PC1 = 1 ; For compatibility .equ PORTC2 = 2 ; Port C Data Register bit 2 .equ PC2 = 2 ; For compatibility .equ PORTC3 = 3 ; Port C Data Register bit 3 .equ PC3 = 3 ; For compatibility .equ PORTC4 = 4 ; Port C Data Register
-
Thread
ATMEGA 8515 -- SREG nicht definiert -- AVR Studio 7
Anfang JTAG-Interface eines ATmega16 per Software deaktivieren und damit die JTAG-Pins an PORTC für "general I/O" nutzbar machen ohne die JTAG-Fuse-Bit zu aendern. Dazu ist eine "timed sequence" einzuhalten (vgl Datenblatt ATmega16, Stand 10/04, S. 229): Das JTD-Bit muss zweimal
Ja, danke erst mal, Johann.... Aber ich fürchte, das geht etwas über meinen Horizont hinaus... Ich habe mit AVR-Studio immer nur den Build-Button betätigt und fertig... Mit diesen ganzen Parameterangaben habe ich mich noch nie beschäftigt... sieht für
-
Thread
Organisation der Header und Includes
globale Variablen. Und die braucht es beim AVR eigentlich nur zum Datenaustausch mit ISRs. Alles andere geht ohne. Oliver
änderst danach aber sofort den Takt etc.. Könnte sein, dass das Nebenwirkungen hat, wenn es zu schnell geht.
-
Thread
Schon wieder ein Timerproblem.
Christian T. schrieb im Beitrag #4394517: > cli(); > PORTC ^= ((1<<5)|(1<<4)|(1<<3)); > millis=0; > sei(); cli und sei haben in der Interruptroutine nichts verloren, das wird automatisch gemacht
ein ganzer Tag Probieren? .... Wer setzt denn sowas auf default 1.... Vielen vielen Dank. Schon geht alles!
-
Thread
Atmega328P ADC und gleichzeitig IO
ADC4) als I²C Leitung nutzen, PC3 PC2 PC1 PC0 als IO Ports und ADC7 als ADC Eingang verwenden. geht das alles gleichzeitig? Gruß Robert
Robert schrieb im Beitrag #4389431: > geht das alles gleichzeitig? Ja. mfg.
-
Thread
Time$ läuft nicht weiter
5 Dim Bin_led_data As Byte Dim Displaystelle(6) As String * 1 'Array für Displaystellen Config Portc = Output 'Port C als Ausgang Led_din Alias Portc.5 'DIN Pin von MAX7219 Led_clk Alias Portc.4 'CLK Pin von MAX7219 Led_load Alias Portc.3 'LOAD Pin von MAX7219 '********************************
auch mit config Date$ geht es nicht config DCF77 erstellt automatisch die clock
-
Thread
ATMega128A, mehrer getestet PD0 und PD 1 gehen nicht
{ PORTD &= ~(1<<PD0); PORTD &= ~(1<<PD1); PORTC &= ~(1<<PC0); _delay_ms(500); PORTD |= (1<<PD0); PORTD |= (1<<PD1); PORTC |= (1<<PC0); _delay_ms(500); } } [/c] Oszi an PC0 und? tada Oszi an PD0 und
ihn jetzt ausgelötet und mal einen ATMega128A aus der mitte der Packung genommen. Und siehe da. Es geht. Also sage ich jetzt einfach mal, die sind defekt. Also ATMega128A Nr. 71 funktioniert tadellos. Was mache ich nu? Alle testen? Die defekten nach Atmel schicken?
-
Thread
Tastaturmatrix Entprellen
DDRC &= ~(ROW0 | ROW1 | ROW2 | ROW3); // Inputs DDRD &= ~(COL0 | COL1 | COL2 ); // Inputs PORTC |= ROW0 | ROW1 | ROW2 | ROW3; // with pullup PORTD |= COL0 | COL1 | COL2; // with pullup PORTD &= ~COL0; // Low DDRD |= COL0; // Output
man so ein Programm nur nach Mustervergleich erweitert, ohne es zu verstehen. :-) Bei Kochrezepten geht das eher (bin selber ein Hobbykoch), aber in der Software nicht (immer).
-
Thread
Schieberegister ohne SPi
PORTC &= ~(1<<A); //A auf Ausgangsposition } else { PORTC &= ~(1<<A); //stelle (zur Sicherheit) Datenbus auf Low PORTC |= (1<<SHIFTCLOCK); //und gibt eine
byteOut (uint8_t word) { for (uint8_t i = 0;i < 8;i++) { if (word & (1<<0)) PORTC |= (1<<A); else PORTC &= ~(1<<A); PORTC |= (1<<SHIFTCLOCK); PORTC &= ~(1<<SHIFTCLOCK); word >>= 1; } PORTC |= (1<<LATCHCLOCK); PORTC &= ~(1<<LATCHCLOCK);
-
Thread
Komisches Verhalten beim Pin auf Ausgang setzen
vertauscht sind. Hier mal ein Beispiel: DDRC |= (1<<PC0) //Pin PC0 auf Ausgang gesetzt PORTC |= (1<<PC0) // Pin PC0 auf High gesetzt (5V == VCC) Jetzt sollte die LED eigentlich leuchten, was sie aber nicht macht. Wenn ich allerdings diese Befehle ausfuehre, dann geht sie an. DDRC
pad89 schrieb im Beitrag #4377608: > PORTC &= ~(1<<PC0) // Pin PC0 auf High gesetzt Genau deshalb sollte man sich solche Kommentare sparen...
-
Thread
LED Matrix Betrieb?
kriminellerweise 16-fach gemultiplext, da werden sich noch 2 74HC138 verbergen. > nach dem 8. LOAD geht es bei der ersten Reihe weiter Es geht also erst nach der 16. Reihe wieder mit der ersten weiter.
= "m32def.dat" $crystal = 8000000 $hwstack = 150 $swstack = 200 $framesize = 200 Config Portc = Output 191_load Alias Portc.5 164_data Alias Portc.6 164_clk Alias Portc.7 Dim Datenbyte As Byte Dim Zeile As Byte Dim A As Byte Dim B As Byte Config Timer0 = Timer , Prescale = 64
-
Thread
Define Makros in C
Super, danke jetzt gehts:)
aufsteigend angeordnet sind. Ich hätte selber eine Lösung bevorzugt, die aus C6 die Konstanten PORTC, DDRC, PINC erzeugt hätte. Dann wäre das sauber. Das geht aber nicht mit dem Standard-C-Preprocessor wegen fehlender "De-Stringification".
-
Thread
Atmega8 PORTB
Suche mal den Artikel zum Thema "Tastenentprellung". Das steht, wie es geht.
einem Port-Ausgangspin nicht auch nachsehen darf, wie der Ausgangspinn gerade steht [c] if( PORTC & ( 1 << PC1 ) ) // steht der Pin auf 1? PORTC &= ~( 1 << PC1 ); // -> ja tut er. auf 0 schalten else PORTC |= ( 1 << PC1 ); // -> nein, tut er nicht. auf 1 schalten
-
Thread
Atmega8 GCC: Bitmanipulation an einer Variablen
1<<PINC4)) { while(dezimalzahl >= 1) { -- dezimalzahl; PORTC = 0x20; _delay_ms(100); PORTC = 0x00 ; _delay_ms(100); } } //PORTC &=(1 << PC5); // } return 0; } Kann mir jemand weiterhelfen? Grüße
1. [...] > 2. [...] > 3. [...] > 4. [...] > 5. [...] > 6. [...] OMG. Noch komplizierter geht's net? Wer überlegt sich so ne GUI...?
-
Thread
BASCOM-Code eleganter/kürzer formulieren
alle Ports/Pins für LEDs Config Portb = Output Config Portd = Output '1. LED (CC) Config Portc.2 = Output 1r Alias Portc.2 Config Portc.4 = Output 1g Alias Portc.4 Config Portc.5 = Output 1b Alias Portc.5 '2. LED (CC) 2r Alias Portb.5 Config Portc.1 = Output 2g Alias Portc.1
Doch das geht prinzipiell so: Variable = PortC zum setzen auf 1: Variable = Variable OR Bitmaske, zu setzende Bits=1, unveränderliche=0 zum setzen auf 0: Variable = Variable UND Bitmaske, zu löschende
-
Thread
AT90CAN128 ändert sein verhalten nach Resets.
PORTA = 0b00000000; DDRA = 0b00000000; PORTB = 0b00000000; DDRB = 0b00000000; PORTC = 0b00000000; DDRC = 0b00000000; PORTD = 0b00000000; DDRD = 0b00000100; // PD0=INT0 Als Input um Hardware-Interrupt zu erzeugen PD2 als ZündOutput PORTE = 0b00010000; DDRE =
90CAN128 überhaupt möglich ist und welches Bit dafür in welchem Register zuständig ist. WEnn das nicht geht, dann hast du durch den hohen Vorteiler von 1024 da schon eine prinizpielle Ungenauigkeit in der Grössenordnung von maximal 1023 Takten. Vergleichbar mit dem Rücksetzen einer Stoppuhr wobei nur die
-
Thread
BCD auf C: was mache ich falsch?
hier muss auch was mit Index her, ANPASSEN [/c] Hier ist gerade das Problem. Weil: [c] /* VL0 PORTC PC3 */ #define setVL0 (PORTC |= (1<<PC3)) #define resVL0 (PORTC &= ~(1<<PC3)) /* VL1 PORTC PC2 */ #define setVL1 (PORTC |= (1<<PC2)) #define resVL1 (PORTC &= ~(1<<PC2)) /* VL2 PORTC PC1 */ #define setVL2 (PORTC |= (1<<PC1)) #define resVL2 (PORTC &= ~(1<<PC1)) /* VL3 PORTC PC0 */ #define setVL3 (PORTC |= (1<<PC0)) #define resVL3 (PORTC &= ~(1<<PC0)) /* VL4 PORTB PB2 */ #define setVL4 (PORTB |= (1
-
Thread
Assembler wieder auf dem Weg nach vorn Gesperrt
Aber darum geht es doch in diesem Thread überhaupt nicht!
hat. Es geht schon lange nur noch darum, wie man dies auch Moby klarmachen kann.
-
Thread
Bascom EEprom
funktioniert - Zuweisung des Wertes von Integer-EEprom-Variable an Flashspeicher-Single-Variable geht nicht, nur an Flashspeicher-Integer-Variable, also zwischen EEprom und Flashspeicher nur gleicher Datentyp - Vergleich (>,<) zwischen Single und Integer geht nicht, nur zwischen gleichen Datentypen
$crystal = 5120000 'Quartzoszillator 'Display-Konfiguration Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.5 , Rs = Portd.0 Config Lcd = 16 * 2 'Display-Typ Dim Ganzzahl As Integer Dim Kommazahl As Single Dim Ee_ganzzahl
-
Thread
Kann man folgenden Code platzsparender schreiben
hilft es teile des Programs in Assembler zu programmieren, wenn es nicht um Speicher im KB Bereich geht.
PORTB &= ~_BV(7); PORTC |= _BV(1); PORTC &= ~_BV(1); /* * Now, we're ready to hand over the data transmission to SPI. */ SPCR = _BV(SPE) | _BV(DORD) | _BV(MSTR); SPSR = _BV(SPI2X); } [/c] Kann es
-
Thread
Einfache Mikrocontroller-Plattform für schnelle Basteleien
xXx schrieb im Beitrag #4338696: > Da muss ich wohl nochmal ran. Geht auch mit der 1.6.6, zumindest für die AVR Arduinos.
Entscheidung durch den Chor der Würde dir vermutlich auch wohl gefallen.... Mach dir nix draus, geht mir auch so.
-
Thread
Atmega48 multiplexing
// PortB alles als Ausgang DDRC |= (1 << DDC0) | (1 << DDC1) | (1 << DDC2); // PortC 0..2 als Ausgang PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2); // 0..2 High = Digits aus OCR1A = (uint16_t)(F_CPU/1024.0*0.005); // Vergleichwert für 0,005s laden: Takt= 8MHz/1024
zahl_ausgeben (i); delay_ms (100); } } return 0; } ISR (TIMER1_COMPA_vect) { PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2); // 0..2 High = Digits aus switch (position) // Aktuelle Stelle ausgeben { case 0 : digit (hunderter, PC0); break; case 1 : digit (zehner