-
Thread
STM32 counter up/down mit Step/Dir Signalen
eor r17,r28 'unteres Bit umdrehen wenn oberes Bit 1 in r27 , portC ANDI r27, &B11111100 'output Register isolieren add r27 , r17 'bit 0 u 1 out Out Portc , R27 Out Sreg , R8 $end Asm Return
eor r19,r29 'unteres Bit umdrehen wenn oberes Bit 1 in r27 , portC ANDI r27, &B11110011 'output Register isolieren add r27 , r19 'bit 2 u 3 out Out Portc , R27 Out Sreg , R8 $end Asm Return
-
Thread
AVR ATtiny Stromaufnahme
_16X_gc | CLKCTRL_PEN_bm; } int main(void) { set1MHz(); PORTA.DIR = 0xFF; PORTC.DIR = 0x0F; PORTD.DIR = 0xFF; PORTF.DIR = 0x7F; set_sleep_mode(SLEEP_MODE_PWR_DOWN); //sleep_cpu(); sleep_mode(); sleep_enable(); // überflüssig ??? while
-
Thread
Serial.write durch Serial.print ersetzen. AVR Kompilierungsfehler function
void loop() { if (Serial.available() > 0) { while (addressCounter != 512) { PORTC = (addressCounter & 512) >> 8; // (hier A8. 255 ?) PORTA = addressCounter & 255; digitalWrite(40, LOW); digitalWrite(41, LOW); digitalWrite(39, LOW); readWord
void loop() { if (Serial.available() > 0) { while (addressCounter != 512) { PORTC = (addressCounter & 512) >> 8; PORTA = addressCounter & 255; digitalWrite(40, LOW); digitalWrite(41, LOW); digitalWrite(39, LOW); readWord[0] = PINL;
-
Thread
Altes EPROM auslesen Intersil 6654A (2xCE) mit Arduino
Serial.available() > 0) { while (addressCounter != 512) { //war 524288 aber oben steht 0, 511? PORTC = (addressCounter & 512) >> 8; //war A 65280 PORTA = addressCounter & 255; //war C digitalWrite(40, LOW); //war 3 delayMicroseconds(1); digitalWrite(41, LOW); //war 2
#7395603: > Bezüglich A8 habe ich verschiedene Vermutungen. Armin schrieb im Beitrag #7392617: > PORTC = (addressCounter & 512) >> 8; //war A 65280 Sehen wir uns doch mal an, was da rauskommt. Schritt für Schritt. [c] addresscounter | & 512 | >> 8 ---------------+-------+----- 254
-
Thread
ATMEGA 48/88, Live-Umschaltung Portpin ADC ./. Digital-IO
die digitalen Eingangspuffer abschalten. Will man zwischen allem umschalten, muß man also DDRC, PORTC und DIDR0 entsprechend setzen. Jochen schrieb im Beitrag #7382258: > - paar 4051-Pins sind Digital-OUT Ausgänge mit dem 4051 zu multiplexen halte ich für völlig sinnfrei. Die nicht adressierten
-
Thread
Maskieren modern?
Mehr Kapselung, mehr Übersicht. [c] #define ENDSCHALTER (PINB & (1<<3)) #define LED_WARNING_ON PORTC |= (1<<2) if (ENDSCHALTER) foo(); else LED_WARNING_ON; [/c]
gibt keinen Grund, warum der Assembler nicht hätte in der Lage sein sollen, ein [avrasm] SBI PORTC, 8 [/avrasm] selbst so umzurechnen, dass er im Opcode die Bitnummer 3 generiert (und sich über einen Semantikfehler erbricht, wenn jemand versucht, mehr als ein Bit im Operanden zu setzen).
-
Thread
Atmega328P Firmware hängt nach Watchdog Reset
for(;;){ // main event loop wdt_reset(); //restart watchdog timer PORTC=(PORTC & ~0x3E) | ((counter >> 11) & 0x3E); //LED blinking action char key=PINB & 1; PORTC=(PORTC & ~1) | key; //output to LED, normally high counter--; if (key==0){
-
Thread
Arduino und Assembler Programmierung
muss dann für alle SFR_IO's wieder gemacht werden. Es wäre einfacher gewesen die keywords 'PORTB,'PORTC','PORTD',... zu benutzen. Ich hoffte, es geht mit einem geschickten #include an der richtigen Stelle. Dann ist es einfacher einen *.S Tab zu benutzen. Danke für Deine Antworten.
dann für alle SFR_IO's > wieder gemacht werden. Es wäre einfacher gewesen die keywords > 'PORTB,'PORTC','PORTD',... zu benutzen. Das sind keine Keywords, sondern Präprozessor-Makros.
-
Thread
Atmega8 - Reset-Pin und Rest vom Port C
Vorwiderstände vor die LED-Anzeige. Warum MISO,MOSI,SCLK freihalten. Warum AVCC nicht anschliessen aber PortC benutzen ? Reset mit G zu belegen geht halt nicht, aber du hast so viele Ausgänge frei, PD4-7, PB2-5, dass PC7 nicht benötigt wird. Wobei man klugerweise alle Segmente der Anzeige auf ein Port legt
-
Thread
avr-gcc: direkter Register Zugriff vs structure-mapping und fehlende Optimierung?
; ret [/c] Dies passiert aber nur, wenn der Zugriff auf das direction-register von PortC mit structure-mapping zugegriffen wird. Beim direkten Zugriff via VPORTC_DIR ist gcc nicht mehr in der Lage zu optimieren: [c] main: ldi r24,lo8(20) ; ivtmp_4, .L2: lds r18,g ; g,
Beitrag #7349917: > Dies passiert aber nur, wenn der Zugriff auf das direction-register von > PortC mit structure-mapping zugegriffen wird. Beim direkten Zugriff via > VPORTC_DIR ist gcc nicht mehr in der Lage zu optimieren: [...] > Das ist sehr merkwürdig. > Was geht da vor? (Ein aliasing Problem
-
Artikel
AVR Net-IO Bausatz von Pollin
an PORTA7) - PORTA0-3 digitaler Eingang (ein/aus) - PORTA4-6 analoger Eingang (0 - 1023) - LCD an PORTC - Schalten in Abhängigkeit von Temperatur und analogem Wert - (Teilweise) Administration über Weboberfläche - Erweiterung des cmd-Befehlsatzes für telnet/rs232 Gedacht ist der Einsatz des AVR-NET-IO-Bausatzes
-
Thread
Atmega8 vers. C - Interuptbehandlung
Beitrag #7338503: > Ich hätte die Schaltung nun so geplant, wie im Bild. Ich würde hier nicht den PortC für die Segmente verwenden, weil du dann keinen Reset mehr hast und deshalb nur noch HV-Programmierung zur Verfügung. Tausche das mit PortB oder PortD. > Aber damit Ihr seht, warum ich hier nach
-
Thread
7-Segment-Ansteuerung
für Common-Anode Display, Spaltentreiber mit PNP-Transistoren - Segmente werden direkt über den PortC angesteuert - 8 Bit Input auf PortB - Spaltenansteuerung und Lesen der Jumper über PortD (Portbelegung ist etwas anders als bei dir.) Ich verwende es u.a. für die leichtere Interpretierbarkeit
-
Thread
ATMEGA328PB Falsche Startup-Time als ATMEGA328P
des Ausgangs im Oszilloskop gemessen habe [c] int main(void) { DDRC = _BV(PC0); PORTC = _BV(PC0); /* Replace with your application code */ while (1) { } } [/c] Statt die genauen 65ms wie beim ATMEGA328P mit der gleichen Platine messe ich beim ATMEGA328PB
-
Thread
AVR ATMEGA328PB mit UART.h stürzt ab
define UART_BAUD_RATE 200000 //115200 #define RESET PC4 #define RESET_SLAVES {(PORTC |= (1 << RESET)); (DDRC |= (1 << RESET)); _delay_ms(100); (PORTC &= ~(1 << RESET)); _delay_ms(100);} #define T_TRIGGER_512 37499 #define T_TRIGGER_256 9374 #define DATA_FREQ_512
-
Thread
Wozu übertrieben schnelle Microcontroller?
Gerhard O. schrieb im Beitrag #7281415: > Wenn ich an uC HW > arbeite ist mir eigentlich "PORTC |= (1<<7) lieber; Hmm, mein Compiler wirft einen Fehler weil er PORTC nicht kennt. Es geht doch dabei um Abstraktion. Und die DigitalOut oder was auch immer Klasse wird als Komponente getestet
*portpin_set_output(PORTC, 4);* [code] rc/test_01_blink.c: In function 'main': src/test_01_blink.c:15:2: error: incompatible type for argument 1 of 'portpin_set_output' portpin_set_output(PORTC,4); ^ In file included
-
Thread
Disasembliertes Hex-File in C nachprogrammieren
nicht richtig verstehe. [c] cbi ADMUX, MUX0; 0000048C; Lösche Bit MUX0 im PortRegister ADMUX cbi PORTC, PORTC2; 0000048E; Lösche Bit PORTC2 im PortRegister PORTC cbi PORTC, PORTC5; 00000490; Lösche Bit PORTC5 im PortRegister PORTC lds r17, OnInterval; 00000492 10 91 rjmp Label_049C; 00000496
1 and r16, r16; 000004A0 00 23 brne Label_0498; 000004A2 D1 F7 sbi PORTC, PORTC5; 000004A4; Setze Bit PORTC5 im PortRegister PORTC [/c] Was passiert in den Zeilen 492 - 4A2 ? Das kann doch nur eine Zeitschleife sein ? Aber der Footprint eines _delays_us() sieht in
-
Thread
ADC ATMEGA644 teilweise unplausible Werte
<<PC2) | (1<<PC5) | (1<<PC6); [/c] Das macht natürlich keinen Sinn und muss natürlich [c] PORTC |= (1<<PC2) | (1<<PC5) | (1<<PC6); [/c] heißen. Mit dem korrigierten Eintrag ist der Offset auch nicht mehr vorhanden, die gemessenen Werte sind jetzt wie erwartet. Macht es denn wie hier Sinn
-
Thread
Python Uart einlesen und ausgeben
geht, weiß ich nicht. In C sind es ein paar Zeilen: [c] volatile uint8_t maske; // an PORTC sind die LEDs; Aufruf in der Endlosschleife der main() PORTC = datenbyte & maske; . . // und in der Timer-ISR für die Blinkfrequenz steht maske ^= 0xFF; [/c]
-
Artikel
LED cube
basiert auf einem ATMega32. Ein Schaltplan dafür ist hier zu finden: Schaltplan Controller Dabei ist PORTC für die Ebenen zuständig, PC0 ist unten, PC7 oben. PD0 bzw. Q0 sind die vorderen LEDs bis PD7 hinten. PA0 bzw. U9 ist dann die linke Reihe bis zu PA7 rechts. Teile dafuer: C1, C3: 22p C2: 10p C4: 100u
-
Thread
UART eines Atmega8, kann nichts senden..
HIGH // if INPUT --> PULLUP-ON //PULL-UP has 20-50KOHMs PORTB = 0x00; // PORTC = 0x00; // PORTD = 0x00; // sei(); //Global IRQ-Enable } [/c] Grüße und Vielen Dank wäre prima wenn jemand das Problem evtl auf die schnelle sieht... Matthias
-
Thread
Digitalpoti, Dimensionierung Widerstandsarray 8bit 10-500Ohm
an Port C0 4Ohm an Port C1 8Ohm an Port C2 .. hänge funktioniert es nicht. Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 mache funktioniert es nicht
> 4Ohm an Port C1 > 8Ohm an Port C2 > .. > hänge funktioniert es nicht. > Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 > mache funktioniert es nicht ??? Was zum... willst du denn machen und wo kommt auf einmal PortC her? Die Schaltung von WIRO funktioniert nur mit niederohmigen
-
Thread
Luxmeter mit Bereichsumschaltung
= (1 << PB1); // PB1 Ausgang DDRB |= (1 << PB2); // PB2 Ausgang DDRC = 0x00; PORTC = 0x00; while(1) { if (!(PIND & (1<<PD0))) { PORTB |= (1<<PB1); //PB1 High PORTB &= ~(1 << PB0); //PB0 Low PORTB &= ~(1 << PB2); //PB2 Low }
-
Thread
AT1284p Timer1_ISR und Compiler_Meldungen
Pinger.h" volatile char isrFlag, isrFlagOld; int main() { PORTA = 255; PORTB = 255; PORTC = 255; PORTD = 252; DDRD = 2; UCSR0B = 0b00011000; UBRR0L = 25; TCCR1B = 0b00001100; OCR1A = 62500; TIMSK1 = 2; sei(); while(1) { if(isrFlag != isrFlagOld
Pinger.h" volatile char isrFlag, isrFlagOld; int main() { PORTA = 255; PORTB = 255; PORTC = 255; PORTD = 252; DDRD = 2; UCSR0B = (1<<RXEN1) | (1<<TXEN1);//0b00011000; UBRR0L = 25; //Enables CTC Mode with OCR1A as TOP // Sets Prescaler to 256 -> 16Mhz/(64*250) -> 1kHz
-
Thread
ungewollte komische interne-Verspätung von dem Microcontroller ATMEGA32A
DDC2) | (0<<DDC1) | (1<<DDC0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0 PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2
(0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); while (1) { if (PIND.0) PORTC.0=0; else PORTC.0=1; } }
-
Thread
ATMega 8 LED mit Button schalten
cabin led DDRB = 0b11111111; // PORTB output for the LED // and the button PORTC |= 0b0001000; // enable pull up for PC3 // blink the led 4 times DDRB |= (1<<PB1); sleep(1000); DDRB &= ~(1<<PB1); sleep(1000); DDRB |= (1<<PB1); sleep(1000); DDRB
-
Thread
Atmega8 PORTD7 Problem
: cbi PORTD,7 ;PORTD,7 -> GND sbi DDRD,7 ;PORTD,7 als Ausgang GND cbi PORTC,5 ;PORTC,5 -> GND sbi DDRC,5 ;PORTC,5 als Ausgang GND @ Ben.B: Das Ganze befindet sich momentan noch auf dem Steckbrett. Danke für die Antworten
> cbi PORTD,7 ;PORTD,7 -> GND > sbi DDRD,7 ;PORTD,7 als Ausgang GND > cbi PORTC,5 ;PORTC,5 -> GND > sbi DDRC,5 ;PORTC,5 als Ausgang GND Kannst du mal erklären, was du damit genau veranstalten willst? Oliver
-
Thread
ATMEGA4809 TCA0 Frequency Waveform Generation
; // Set TCA0 pins on PC[5:0] PORTMUX.TCAROUTEA = 0x02; // Set PC0 as Output PORTC.DIR |= PIN0_bm; // Set CMP0EN=1 (output WO0 will be available on PC0) and WGMODE=0x1 (FRQ) TCA0.SINGLE.CTRLB = 0x11; // Set Timer to ~1s (8.000.000 / (1024*0x1E84) TCA0.SINGLE.CMP0BUF
-
Thread
Servo Einstellung und Anzeige in Grad
( !(PINA & (1<<PINA3)) ) { lcd_printlc(3,1,"Ta 1 - dreht links "); PORTC |= (1<<PINC5); PORTC &= ~(1<<PINC6); if(OCR1B > 80); { OCR1B = OCR1B - 10; } } itoa(OCR1B,wert,10); // Berechne wert von OCR1B lcd_printlc
-
Thread
Arduino Timerprobleme - suche programmierbaren Oszillator
include <TimerOne.h> void setup(){ DDRB = 0x00;PORTB = 0xFF; //alle INPUT_PULLUP DDRC = 0x00;PORTC = 0xFF; //alle INPUT_PULLUP DDRD = 0x00;PORTD = 0xFF; //alle INPUT_PULLUP DDRB|=2; //OC1A COM1A1 PB1 output Serial.begin(9600); Serial.print(F("\nprecision frequency generator\n" msg));
16+8+4+2;PORTB = 0xFF; //LEDpin 13 D13 PB5 D12 D11 D10 D9 output, D8 INPUT_PULLUP DDRC = 0x00;PORTC = 0xFF; //alle INPUT_PULLUP DDRD = 0x00;PORTD = 0xFF; //alle INPUT_PULLUP Serial.begin(9600); Serial.print(F("\n 4-channel precision frequency generator \n")); TCCR1A=128; //COM1A1 COM1A0
-
Thread
ATMega8 und Servo völlig merkwürdiges Verhalten
Was soll das werden?: [c] PORTC ^= (0<<CABINLED); [/c] Der Ausdruck in den Klammern ergibt 0, also wird da gar kein Pin getoggelt.
mikrocontroller_buch/index.html In diesem Fall konkret Band1 Kapitel 4.2.20.4, 4.2.20.6 und 6.7.4 PORTC ^= irgendwas ist eine Kurzform von PORTC = PORTC ^ irgendwas. CABINLED ist DDB5, was wiederum 5 ist. (1<<5) ist eine 1 fünf mal nach links geschoben, also 32. PORTC ^= 32 ändert den Wert
-
Thread
3 Interrupts am Arduino Nano
volatile uint8_t hlw, hlr; #define HLI(hli) ((hli+1)%HLS) Hl hl; void hl_setup (void) { PORTC |= (1<<PORTC5); // Activate pullup hl.stat = HLSTAT; vhl.stat = hl.stat; } static inline void hl_tick () { // This is called in ISR context static uint8_t nlmod = 0; uint8_t hlstat