-
Thread
Mikrocontroller spinnt?
include <utils/delay.h> void main (void) { DDRC = 0xFF; //PortC als Ausgang schalten PORTC = 0xFF; _delay_ms(5000); PORTC = 0; } [/c] Was das Prog machen soll ist klar: Zunächst setzt es PortC als Ausgang. Danach soll PORTC auf HIGH gehen, 5 sekunden warten und anschließend
warten portc aus warten portc ein . . . <= klackern im sekunden takt fz
-
Thread
PORT-Zustand abfrgen und zurück schreiben
übersetzt. > PORTC = (PORTC & ~(1<<4) ) | tmp; > 794: 88 b1 in r24, 0x08 ; 8 > 796: 8f 7e andi r24, 0xEF ; 239 > 798: 8d 29 or r24, r13 > 79a: 88 b9 out 0x08, r24 ; 8
[c] PORTC = (PORTC & ~(1<<4) ) | tmp; 794: 88 b1 in r24, 0x08 ; 8 796: 8f 7e andi r24, 0xEF ; 239 798: 8d 29 or r24, r13 79a: 88 b9 out 0x08, r24 ; 8 [/c]
-
Thread
STK500 Sockets fallen nacheinander aus
PORTC &=~ (1<<(j+2)); delay_us(1); PORTC &=~ (1<<(j+3)); } break; case 1: { PORTC = 255; PORTC &=~ (1<<j); delay_us(200); PORTC &=~ (1<<j+1); delay_us(15); PORTC &=~ (1<<abs(j-1)); PORTC &=~ (1<<abs(j-2)); delay_us(1); PORTC &=~ (1<<abs(j
-
Thread
Tastermatrix mit µC ansteuern (für MSM2 MP3 Modul)
} void Taster6 (int time) { PORTC = KS2; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0; } void Taster7 (int time) { PORTC = KS2; PORTB = KCS3; delay (time); PORTC = 0; PORTB = 0; } void Taster8 (int time) { PORTC = KS3; PORTB = KCS1; delay (time); PORTC = 0; PORTB = 0; } void Taster9 (int time) { PORTC = KS3; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0;
-
Thread
DDS Sinus erzeugung
ldi r31,3 ser MODE ; make sweep restartable at any time ( fake OffMode ) sbi PORTC,3 ; READY cbi PORTC,3 ; place a strobe for trigger sbi PORTC,3 SL: ; cycl. ld r0,z ; 2 out PORTD,r0 ; 1 update BIT 0..7 sub r28,r24
DDRB,1 ; Bit 8 is off cbi PORTB,1 cbi DDRC,0 ; deglitch not needed cbi PORTC,0 cbi DDRC,1 ; addon not wanted cbi PORTC,1 clr r27 ser r30 ldi r31,3 lds r20,ADCH ; get initial ADC value sbi PORTC,3 ; READY AML:
-
Thread
Bascom + LCD + Atmega 8 nichts auf dem display
LCD-Output Ddrc = &B11111111 Config Lcd = 20 * 2 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.3 , Rs = Portd.2 Int Initlcd Cls Lcd "hallo" End Was ist daran falsch hab sogar den lcd in den options eingestellt.
crystal = 8000000 'Quarz: 8 MHz Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.3 , Rs = Portd.2 Config Lcd = 20 * 2 Cls Lcd "hallo" End wenn das nicht geht, ist noch die kontrasteinstellung eine fehlerquelle
-
Thread
Interrupt Frage ATMEGA8535
0]; _delay_ms(1); PORTD = zaehlen[ZehnerM]; PORTC = driver[1]; _delay_ms(1); PORTD = zaehlen[EinerS]; PORTC = driver[2]; _delay_ms(1); PORTD = zaehlen[ZehnerS]; PORTC = driver[3]; _delay_ms(1); } return 0;
TIMSK |= (1<<OCIE1A); sei(); while (1) { PORTD = zaehlen[EinerM]; PORTC = driver[0]; _delay_us(100); PORTD = zaehlen[ZehnerM]; PORTC = driver[1]; _delay_us(100); PORTD = zaehlen[EinerS]; PORTC = driver[2]; _delay_us(100); PORTD =
-
Thread
PortC Pin2 Funktioniert nicht
16PU. Der ganze Port A ist als Eingang konfiguriert und funktioniert auch einwandfrei. Die Pins von PortC sind auch Eingänge allerdings funktionieren nur die Pin 0 und 1. Bei Pin2 geschieht nichts. Ich brauche von PortC nur die ersten 3 Pins. Ich hab noch anstatt Pin2 Pin3 versucht aber der hat auch nicht
Ich lese den Wert den an PortA und die ersten 3 von PortC ein und erzeuge damit ein PWM Signal. Sobald der 3 te Pin von PortC logisch 1 ist sollte der PWM Ausgang abschalten und der Controller ist in einer endlosschleife gefangen. (ganz unten) ; Programm
-
Thread
Zuweisung eines arrays
{ PORTC &= ~(1 << (y-4)); } } } } for (int y = 0; y<=9; y++) { PORTC = 0b00110000; PORTB = 0b00000000
{ PORTC &= ~(1 << (y-4)); } } } } for (int x = 9; x>=0; x--) { PORTC = 0b00110000; PORTB = 0b00000000
-
Thread
LED-Lauflicht wie Gummiball?
Programm sieht jetzt so aus: [code] avr.device = atmega32 avr.clock = 20000000 avr.stack = 16 portc.mode = output, pulldown dim i as byte do for i=0 to 7 portc = led.ByteValue(i) waitms 50 next for i=6 downto 1 portc = led.ByteValue(i) waitms 50 next loop
hab das mal umgesetzt: [code] avr.device = atmega32 avr.clock = 20000000 avr.stack = 16 portc.mode = output, pulldown dim i as byte do for i=0 to 7 portc = led.ByteValue(i) waitms 10*(i+1) next for i=7 downto 0 portc = led.ByteValue(i) waitms 10*(i+1) next
-
Thread
Frage zu C-Syntax
> sbit(PORTC,0); PORTC |= (1<<0); > sbit(DDRD,4); DDRD |= (1<<4); > cbit(PORTD,4); PORTD &= ~(1<<4); > Frage: Was machen diese beiden define Statements? Definieren Makros (Regeln) für den
für Spezialsachen, wenns gar nicht anders geht) Auch dein BASCOM muss ja letztendes bei SET Portc.0 für den µC die entsprechenden Assembler-Anweisungen generieren. Ob du nun SET Portc.0 oder PORTC |= ( 1 << PC0 ); schreibst, ist eine reine Frage der Ästhetik, auf der Maschine
-
Thread
Anfängerfragen zum ATMega8 und Assembler
demo mit fastavr-basic (avr16 mit 8mhz intern) display an portc0-portc4, rs portc5, en portc4: $Device= m16 $Stack = 32 $Clock = 8 $Lcd = PORTC.0, RS=PORTC.5, EN=PORTC.4, 16, 2 $Source= On Dim wert As Word Enable Interrupts
out PORTC,r24 rcall _LEN ret ;////// LcdEN ///////////////////////////// _LEN: sbi PORTC,4 Nop Nop Nop Nop cbi PORTC,4 push zl ldi zl,0x04 rcall
-
Thread
ISR viel zu mollig
könntest du den CTC Modus des Timers benutzen. Dazu ist er schliesslich da. Und wenn du anstatt PORTC ^= (1 << PHI_2); die scheinbar längere Variante if( PORTC & ( 1<<PHI_2 ) ) PORTC &= ~( 1<<PHI_2 ); else PORTC |= ( 1<<PHI_2 ); wählst, ermöglichst du dem Compiler die Benutzung
Karl Heinz Buchegger schrieb im Beitrag #2920074: > die scheinbar längere Variante > if( PORTC & ( 1<<PHI_2 ) ) > PORTC &= ~( 1<<PHI_2 ); > else > PORTC |= ( 1<<PHI_2 ); > > wählst, ermöglichst du dem Compiler die Benutzung der Port-Bitbefehle, > was ihn dann wiederrum nicht
-
Thread
WinAVR LED steuern geht nicht?
angeschlossen > werden! > > Gruß Dietrich also ich habe das hinbekomme und zwar mit DDRC = 0xff; PORTC = 0x03;
unscharf. doch es geht mußt schauen wo der led angeschlossen ist und mußt schauen was der befehl PORTC = 0x03 aussagt
-
Thread
MAIN Problem
if(!(PINA & (zaehler1))) { PORTC |=(LED1); ein _delay_ms(1); } else { PORTC &=~(LED1); wert1++; wert1min++; while(!(PINA & (zaehler1))); } Controller zählt ins Unendliche
int main(void) { DDRA &=~ (zaehler1); DDRC |= LED1; while(1) { if(!(PINA & (zaehler1))) { PORTC |=(LED1); _delay_ms(1); } else { PORTC &=~(LED1); wert1++; wert1min++; while(!(PINA & (zaehler1))); } } }
-
Thread
DS18S20, Atmega8, AVR Studio
LED unzwar bei 1000ms Einschaltverzögerung (siehe code) blinkt die Led 108 mal in 30 Sekunden. PORTC &=~(1<<PC2); // Gelbe LED aus _delay_ms (1000); // 1sec auslassen PORTC |=(1<<PC2); // Gelbe LED ein Wie kann ich das so einstellen das es auch wirklich 30 mal blinkt in
inttypes.h> #define F_CPU 3686400l void main (void) { DDRC = 0xFF; //PortB = Ausgänge PORTC = 0x00; char i=0; lcd_init(); while(1) { PORTC &=~(1<<PC2); // Gelbe LED aus _delay_ms (500); // 1sec auslassen PORTC |=(1<<PC2); // Gelbe LED ein _delay_ms
-
Thread
DRV8811 Richtungswechsel
MOT_DIR PC3 #define MOT_STEP PC4 [/c] [c] int main(void) { DDRC = 0xff; PORTC= 0b00000000; //PORTC &= ~(1<<MOT_ENABLE); // Enable //PORTC &= ~(1<<MOT_SM0); // SM0 //PORTC &= ~(1<<MOT_SM1); // SM1 //PORTC &= ~(1<<MOT_DIR); while(1) { PORTC |
=0; j<=100; j++) { long_delay(1); PORTC |= (1<<MOT_STEP); long_delay(150); PORTC &= ~(1<<MOT_STEP); } } [/c]
-
Thread
erster Atmega ->
'$regfile = "M8def.dat" $regfile = "M8adef.dat" Config Portc.1 = Output Config Portc.2 = Output Do Portc.1 = 0 Portc.2 = 1 Loop End
bissel Leben 'eingehaucht' $regfile = "M8def.dat" 'es handelt sich um einen ATmega8 Config Portc.1 = Output Config Portc.2 = Output Do Portc.1 = 0 Portc.2 = 1 waitms 500 Portc.2 = 0 Portc.1 = 1 waitms 500 Loop End da iss es nitt so monoton (monolicht) vlG
-
Thread
[ AVR ] Probleme mit LCD-Display (KS0066)
up_temp1 sbi portc,E ; setzen BIT E nop ; kein Operation (warten) nop nop cbi portc,E ; lösche BIT E ret ; **** Zeitschleifen **** wait50us: ldi tim1,
----- PORTC = 0x00; lcd_flash_e (); delay(1600); //2000 PORTC = 0x01; lcd_flash_e (); delay(1600); //2000
-
Thread
atmega8 UART empfangen
while (1) { uint8_t c; c = uart_getc(); // hier etwas mit c machen z.B. auf PORTC ausgeben DDRC = 0xFF; // PORTC Ausgang PORTC = c; } return 0; // never reached }[/c] Leider weiss ich nicht, wo der Fehler ist. PORTC ist dauerhaft auf 0x00. Ich arbeite mit
JTAG nicht deaktiviert? Das ist standardmäßig aktiviert und auf PORTC.
-
Thread
PIC LCD Ausgabe von Strings
RETLW w_temp write_portc movwf w_temp movf PORTC_SHDW,0 movwf PORTC RETLW w_temp ;******************************************************** ; Das Programm beginnt mit der Initialisierung Init
bcf LCD_RS_SHDW bsf LCD_RW_SHDW ; Lesen call write_portb bsf LCD_E_SHDW call write_portc nop movf PORTB, w movwf LcdStatus bcf LCD_E_SHDW call write_portc nop bsf LCD_E_SHDW ; Enable call write_portc nop bcf LCD_E_SHDW call write_portc btfsc LcdStatus
-
Thread
Atmega328p wacht nicht auf, wo steckt der Fehler?
{ set_sleep_mode(SLEEP_MODE_PWR_SAVE); sleep_mode(); PORTC |= (1<<PC4); _delay_ms(1); while(!(PINC &= (1<<PINC3))) { PORTC |= (1<<PC5); } PORTC &= ~(1<<PC5); PORTC &= ~(1<<PC4); while(flag==1)
Schlafmodus gehen. Warum dauerhaft die Ports setzen? [c] while(!(PINC &= (1<<PINC3))) { PORTC |= (1<<PC5); } PORTC &= ~(1<<PC5); PORTC &= ~(1<<PC4); while(flag==1) { PORTC|= (1<<PC5); }[/c]
-
Thread
Definition der baudrate: Fehler- "expected identifier or '(' before numeric constant"
include <util/delay.h> #include <util/setbaud.h> #include <stdio.h> void io_init(void){ PORTC_DIR |= (1<<4); } void setUPSerial() { PORTC_REMAP |= 0x16; PORTC_OUTSET = PIN3_bm; PORTC_DIRSET = PIN3_bm; PORTC_OUTCLR = PIN2_bm; PORTC_DIRCLR = PIN2_bm; USARTC0
; } void setUPSerial() { PORTC_REMAP |= 0x16; PORTC_OUTSET = PIN3_bm; PORTC_DIRSET = PIN3_bm; PORTC_OUTCLR = PIN2_bm; PORTC_DIRCLR = PIN2_bm; USARTC0_BAUDCTRLB = 0; USARTC0_BAUDCTRLA = 0x22; USARTC0
-
Thread
Port wechseln für LCD-Display
Die Software verwendet in der lcd-routines.h den PORTD. Der Port ist bei mir belegt. Wollte auf PORTC, oder PORTA ausweichen. Habe in lcd-routines.h aus dem "D" jeweils ein "C" bzw. "A" gemacht (PORTD --> PORTC, DDRD --> DDRC, PD3 --> PC5, etc.). Für PORTC habe ich auch das JTAG abgeschaltet und Verfügbarkeit
Die Routinen scheinen OK. Hier für EN an PORTC PC3, RS an PORTC PC2 und Daten 4-7 an PORTC PC 4-7. wenn die verdrahtung stimmt sollte es gehn. (JTAG ist ja aus) [c] // LCD DB4-DB7 <--> PORTC Bit PC4-PC7 #define LCD_PORT PORTC
-
Thread
Problem mit AVR Bitte Hilfe Dringend
PORTB |= ( 1 << PB0 ); DDRC &= ~( 1 << PC0 ); PORTC |= ( 1 << PC0 ); PORTC |= (1 << PC1) | (1 << PC2) | (1 << PC3); PORTC &= ~(1 << PC2); } } Mein Problem ist das Ich am Pin PC2 5,2V messe trotz: PORTC &= ~(1 << PC2);
Du hast die Befehle in einer Endlosschleife. Dh: PORTC |= ( 1 << PC0 ); PORTC |= (1 << PC1) | (1 << PC2) | (1 << PC3); PORTC &= ~(1 << PC2); wird laufend hintereinander ausgeführt. Genauso wie die DDR Register... Ist dir das bewusst?
-
Thread
Probleme beim Einstieg in die wunderbare Welt der Microcontroller
Portb.4 = Output Config Portb.5 = Output Config Portb.6 = Output Config Portb.7 = Output Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Portc.4 = Output Config Portc.5 = Output Config Portc.6 = Output Config Portc.7 = Output Config Portd
Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Portb.5 = 1 Portb.6 = 1 Portb.7 = 1 Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1 Portd.4 =
-
Thread
AVR SDK / API gesucht
Dann versuch es doch mal so: PORTD = sekunden; PORTA = sekunden; PORTC = sekunden;
PORTC2..5 wird von JTAG benutzt - ist das abgeschaltet?
-
Thread
Newbi braucht hilfe Pic 16f876
STATUS, RP0 ; Bank 0 movlw B'11111111' movwf PORTB movwf PORTC ; LED aus
W movwf p_copy clrf PCLATH ; Bank 0 ; Intrupt servic routine Int_serv bsf PORTC, 2 ; Ziffer1 aus bsf PORTC, 1 ; Ziffer2 aus bsf PORTC, 0 ; Ziffer3 aus decf Digit,f ; Ziffernzähler verringern ;Digit=2: anzeigen Ziffer 3 1er ;Digit=1: anzeigen Ziffer 2
-
Thread
Arduino Webserver mit Diagramm
\n" //Port Schalten und Status %PORTC1 bedeutet PORTC PIN1 "<p align=\"left\">\r\n" "<input type=\"checkbox\" name=\"OUT\" value=\"B\" %PORTC1>\r\n" " MOC(PC1)\r\n" "</p>\r\n" //Port Schalten und Status %PORTC6 bedeutet PORTC PIN6 "<p align=\"left\">\r\n" "<input type=\"checkbox\" name=\"OUT\" value=\"G\" %PORTC6>\r\n" //"Port C Pin 6\r\n" " PCres (PC6)\r\n
-
Thread
Ist "warning" nach dem Compilieren wichtig?
1000000UL #endif /* 9600 baud */ #define UART_BAUD_RATE 9600 void Schalter1 (void) { PORTC |= (1 << PORTC0); // Bit 0 setzen _delay_ms(2500); PORTC &= ~(1<<PORTC0); // Bit 0 loeschen } void Schalter2 (void) { PORTC |= (1 << PORTC1); // Bit setzen _delay_ms(2500); PORTC &= ~(1<<PORTC1); // Bit loeschen } void Schalter3 (void) { PORTC |= (1 << PORTC2); // Bit setzen _delay_ms(2500); PORTC &= ~(1<<PORTC2); // Bit loeschen } void Schalter4 (void)
-
Thread
Delay timing Problem
PORTD |= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); PORTC = 0b00110000; // 8 Bit Modus senden _delay_us(5); PORTD |= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); PORTC = 0b00111000; // 8 Bit / 2
|= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); // T PORTC = 'T'; _delay_us(5); PORTD |= (1<<5); _delay_us(5); PORTD |= (1<<7); _delay_us(5); PORTD = 0x00; PORTC = 0x00; _delay_us(5); while(1) { PORTD |= (1<<6
-
Thread
Interrupt Atxmega 32 A4U
funktionieren. Im Prinzip habe ich einen gravierenden Fehler entdeckt. Falsch, hier wird nicht PIN 6 von PORTC konfiguriert: PORTC_PIN1CTRL, temp ;PORTC PIN6 Pull-Up und Interrupt bei fallender Flanke Hier wird ganz klar bei PIN1 und damit PORTC PIN1 der Pullup und Interrupt bei fallender Flanke gesetzt
PORTC_INTCTRL, temp ;Interrupt Level (low) ldi temp, 0b01000000 sts PORTC_INT0MASK, temp ;PORTC PIN6 auf INT0 sei ldi temp, 0b00000111 sts PMIC_CTRL, temp ldi
-
Thread
case-Anweisung
funktionierende Anweisung [c] void light(int x) { switch (x){ case 0: PORTC |= (1<<PC5); break; case 1: PORTC &= ~(1<<PC5); break; } } [/c] Die nicht funktionierende Anweisung [c] void led_rt(int x) { switch (x)
Eingänge DDRC &= ~(1<<DDC3); DDRD &= ~(1<<DDD6); //Setzen der Pull-Ups der Eingänge PORTC = (1<<PC3); PORTD = (1<<PD6); //Setzen der Ausgangszustände PORTB |= (1<<PB0) | (1<<PB1); PORTC |= (1<<PC5); } [/c]
-
Thread
Bitmanipulation optimieren
Falk Brunner schrieb im Beitrag #3051778: > layer += 4; > PORTC &= ~(_BV(PC2) | _BV(PC3) | _BV(PC4)); > PORTC |= layer; > > PORTC |= _BV(PC5); ergänzend: [c] PORTC |= layer | _BV(PC5) ; [/c] somit: [c] layer += 4; PORTC &= ~(_BV
out PORTC, Register in Register, PORTC or Register, layer out PORTC, Register (und dasselbe Ergebnis würde ich auch von uitn8_t tmp = PORTC; tmp &= ~(_BV(PC2) | _BV(PC3)
-
Thread
Mega32P + max232 funktioniert nicht
Portb.4 = Output 'Pin für rote Warn-LED (Eeprom voll) ' Config Portc.3 = Output 'Pin für Peltier-Element 1 Config Portc.4 = Output 'Pin für Peltier-Element 2 ' Config Portd.7 = Output
'UV-Effect-LED einschalten 'Peltier Elemente 'Waitms 10 'Portc.3 = 1 'Portc.4 = 1 'Waitms 250 'Portc.3 = 0 'Portc.4 = 0 'Goto Anfang Loop ' *****************************************************************************
-
Thread
Folientastatur permanente ausgabe
("7 "); if ( PIND & (1<<PIND4) ) usart_transmit_string("* "); PORTC &= ~(1 << DDC0); // column 1 low PORTC |= (1 << DDC1); // column 2 high if ( PINC & (1<<PINC3) ) usart_transmit_string("2 "); if ( PINC & (1<<PINC4) ) usart_transmit_string("5 ");
// Pullup an PORTD |= (1 << DDD4); // Pullup an sei(); // Global Interrupts activate PORTC |= ((1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3)); // all rows high //PORTC &= ~(1 << DDC1); while (1){ PORTC &= ~(1 << DDC0); // row 1 low if ( !(PINC & (1<<PINC4)) ) usart_transmit_string
-
Thread
Frage zum PORTC des Atmega644P
Volt liefern wenn man sie auf Ausgang schaltet ? bei mir ist das jedenfalls so. alle 4 anderen von PORTC sowie alle 8 von PORTB und alle 8 von PORTD liefern 3,9 Volt. (bitte keine Titulierungen als Troll mehr. Ich stelle nur ernstgemeinte Fragen)
-
Thread
LCD Ansteuern mit PIC 16F84A funzt nicht
input movlw B'00001111' iorwf TRISB, f bcf STATUS, RP0 BusyLoop bcf PORTC, RS bsf PORTC, RW ; Lesen bsf PORTC, EN nop movf PORTD, w movwf LcdStatus bcf PORTC, EN nop bsf PORTC, EN ; Enable nop bcf PORTC, EN btfsc LcdStatus, RS
Daten bsf PORTC, EN nop bcf PORTC, EN ; Disable LcdBus bcf PORTC, RS ; return end [/avrasm]
-
Thread
AVR-GCC 7-Segment Multiplex Problem
0; } ISR(TIMER1_OVF_vect){ if(PORTD == *c1) PORTD = *c0; else PORTD = *c1; PORTC ^= (1 << PC0); PORTC ^= (1 << PC1); } [/c]
#2664699: > Was nicht richtig funktioniert, ist das Zählen. [c] #define SEVENSEG_DEACTIVATE() PORTC|=((1 << PC0)|(1<<PC1)) #define SEVENSEG_ACTIVATE_ONES() PORTC&=~(1 << PC0) #define SEVENSEG_ACTIVATE_TENS() PORTC&=~(1 << PC1) //eine Funktion, die eine uint8_t zahl nimmt und //diese auf dem
-
Thread
Schrittmotor nicht linear ansteuern
TCNT0=0xFF; InPort = (((PIND & 0b00111100) >> 2) ^ 0b1111) ^ Cfg_InversIn; OutPort = (PORTC & 0b00111111) |((PORTB & 0b00000011)<<6); if (Step) { PORTC = portc;// ^ InversC; // Jetzt geht alles raus
TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=0xFF; if (Step) { PORTC = portc;// ^ InversC; // Jetzt geht alles raus if (portc & P_Step) // wir haben einen Schritt gemacht
-
Thread
Mikrocontroller Ports schalten nicht
Datenblatt, zur Initialisierung des PORTs C allerdings in Assembler: EXAMPLE 10-3: INITIALIZING PORTC CLRF PORTC ; Initialize PORTC by ; clearing output ; data latches Wäre bei mir dann PORTC = 0b00000000; CLRF LATC ; Alternate method ; to clear output
0b01110010; //Oszillator Einstellungen SWDTEN = 0; //WDT OFF //--------PORTC Initialisieren--------------------------- PORTC = 0b00000000; LATC = 0b00000000; TRISC = 0; //PORTC als Ausgang TRISC0 = 0; //Pin RC0 auf Ausgang TMR1CS =
-
Thread
AT90USB162 PortC funktioniert nicht als Eingang
output PORTB = 0x00; // initial state: no channel is on DDRC = 0x0f; // upper nibble of PORTC as input, lower nibble as output PORTC &= 0x0f; // no pull-ups on upper nibble of PORTC uint8_t sel = 0; unsigned long cnt = 0; PORTB_SET(7); // set PB7 to 1 // Channel
Daniel schrieb im Beitrag #3667984: > DDRC = 0x0f; // upper nibble of PORTC as input, lower nibble as > output > PORTC &= 0x0f; // no pull-ups on upper nibble of PORTC Tasten ohne Pullups, wie soll das gehen? Daniel schrieb im Beitrag #3667984: > ... do the channel
-
Thread
Funkübertragung über uC
)) // Abfrage Schalter Lautsprecher eingeschaltet // Aktionsmakro #define ROTE_LED_AN() { PORTC |= _BV(PC3); } // rote LED ein -> 3.3V #define ROTE_LED_AUS() { PORTC &= ~_BV(PC3); } // rote LED aus -> 0V #define GELBE_LED_AN() { PORTC |= _BV(PC1); } // gelbe LED ein -> 3.3V #define GELBE_LED_AUS() { PORTC &= ~_BV(PC1); } // gelbe LED aus -> 0V #define GRUENE_LED_AN() { PORTC |= _BV(PC2); } // grüne LED ein -> 3.3V #define GRUENE_LED_AUS() { PORTC &= ~_BV(PC2); } //
-
Thread
Reset verhalten MEGA8
PORTC=0b00000011; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); PORTC=0b00000011; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); /*4 bit*/ PORTC=0b00000010; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); /*2 Zeilen*/ PORTC=0b00000010; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _
-
Thread
Wie am besten meine Taster Verriegeln ?
Flag1 = 0; int Flag2 = 0; int Flag3 = 0; int Flag4 = 0; int Flag5 = 0; #define Kanal1_HIGH PORTC |= (1<<PC0) #define Kanal2_HIGH PORTC |= (1<<PC1) #define Kanal3_HIGH PORTC |= (1<<PC2) #define Kanal4_HIGH PORTC |= (1<<PC3) #define Kanal5_HIGH PORTC |= (1<<PC5) #define Kanal1_LOW PORTC &= ~(1<<PC0) #define Kanal2_LOW PORTC &= ~(1<<PC1) #define Kanal3_LOW PORTC &= ~(1<<PC2) #define Kanal4_LOW PORTC &= ~(1<<PC3) #define Kanal5_LOW PORTC &= ~(1<<PC5) int main
-
Thread
LCD 202A in Bascom - intialisiert nicht richtig
Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4 Cls 'Text ausgeben Lcd "!1AQaq" Do Loop End [/pre]
Hallo Lucas, das ganze ist hier zu finden: Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4 Schreibe richtig: Config Lcdpin Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs
-
Thread
XMega Port Register Verwirrung
DIR. Diese Anweisungen machen also das gleiche (nur dass die erste jeweils schneller ist): [c]PORTC.OUTSET = PIN3_bm; PORTC.OUT |= PIN3_bm;[/c] Ebenso: [c]PORTC.OUTCLR = PIN3_bm; PORTC.OUT &= ~PIN3_bm;[/c] Und: [c]PORTC.OUTTGL = PIN3_bm; PORTC.OUT ^= PIN3_bm;[/c] Außerdem ist es egal
> PORTC.OUTCLR |= (1<<PIN3_bp); ist die verkürzte Form von : PORTC.OUTCLR = PORTC.OUTCLR | (1<<PIN3_bp); Kann das Register PORTC.OUTCLR denn gelesen werden und wenn ja werden dann immer alle bits als
-
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
b00000010 ' toggle bit 1 > > PortC = var ' write back portC > [/c] Warum mit var und nicht gleich PORTC = PORTC and &b11110111 ' clear bit 3 etc
-
Thread
uC - startet nicht
habe ein Sample von roboternetz.de [c] $regfile = "m8def.dat" $crystal = 800000 Config PORTC.0 = Output Do PORTC.0 = 1 Waitms 100 PORTC.0 = 0 Waitms 100 Loop End[/c] beim attiny24 habe ich "PORTC" auf "PORTB" abgeändert, da dieser ja kein portc hat... Danke!
-
Thread
LED Aneige 7x7 mit GCC
; PORTC =0b00000000 & PORTD =0b00000000; PORTC=0b01111111 & PORTD=0b00001000; PORTC =0b00000000 & PORTD =0b00000000; PORTC=0b01000001 & PORTD=0b00000100; PORTC =0b00000000 & PORTD =0b00000000
; PORTC =0b00000000 & PORTD =0b00000000; PORTC =0b01111111 & PORTD =0b00001000; PORTC =0b00000000 & PORTD =0b00000000; PORTC =0b01000001 & PORTD =0b00000100; PORTC =0b00000000 & PORTD =0b00000000