-
Thread
LEDs ansteuern via Multiplexing
(1); PORTC &= ~(1 << PC3); PORTB &= ~(1 << PB3);} if(color==1) {PORTC |= (1 << PC3); //Zeile 1 PORTB |= (1 << PB5); // Spalte 6 //_delay_ms(1); PORTC &= ~(1 << PC3); PORTB &= ~(1 << PB5);} break; case 3: if(color==0) {PORTC |= (1 << PC3); //Zeile 1 PORTC |= (1 << PC0); // Spalte 7 //_delay_ms(1); PORTC &= ~(1 << PC3); PORTC &= ~(1 << PC0);} if(color==1) {PORTC |= (1
-
Thread
8x8x3 RGB + PWM Multiplexen mit Mega32
kurz im Bsp zusammenfassend: LED (2|3|2) soll angesteuert werden (x-Richtung ist PORTB, y-Richtung PORTC und z-Richtung PORTD) dann würde ich jetzt die Ports folgendermaßen setzen: PORTB = 0x02; PORTC = 0x04; PORTD = 0x02; So das erstmal zu dem ansteuern der LEDs. Nun zum dimmen der LEDs.
jede LED nacheinander ansteuert, als Bsp (PWM erstmal außer Acht): //LED(1|1|1) PORTB = 0x01; PORTC = 0x01; PORTD = 0x01; //LED(1|2|1) PORTB = 0x01; PORTC = 0x02; PORTD = 0x01; //LED(1|3|1) PORTB = 0x01; PORTC = 0x03; PORTD = 0x01; //LED(1|4|1) PORTB = 0x01; PORTC = 0x03; PORTD = 0x01
-
Thread
Frage zur syntax
10000000 2/ Wenn PC6 = 6, dann (1<<PC6) = (1<<6) = 01000000 3/ 10000000 | 01000000 = 11000000 4/ PORTC |= 11000000 ist das Gleiche wie PORTC = PORTC | 11000000 5/ PORTC = 11000000 kommt nur raus, wenn PORTC vorher den Wert 0 hat.
du nun bits loeschen willst kannst du: portc &= ~((1<<pc6) | 1<<pc7)) schreiben oder eben: portc = portc & ~((1<<pc6) | 1<<pc7)) schreiben das ~() invertiert nur die bits!!
-
Thread
myAVR-LCD-Fragen
enable(); DDRC |= (1<<PC0); PORTB |= (1<<PB0); while((PIND & 0x80) == 0x80) { PORTC |= (1<<PC0); asm volatile("nop"); enable(); } DDRC = 0; PORTB &= ~(1<<PB0); PORTC &= ~(1<<PC0); }[/c] funktioniert leider immernoch nicht. PortB.0 ist übrigens R/W
1 << PD3); DDRC |= (1<<PC0); PORTB |= (1<<PB0); while((PIND & 0x80) == 0x80) { PORTC |= (1<<PC0); asm volatile("nop"); } PORTD &= ~(1 << PD3); DDRC = 0; PORTB &= ~(1<<PB0); PORTC &= ~(1<<PC0); }[/c]
-
Thread
LCDAnzeige 16*2 mit ATMega 32 ansteuern
mein test programm: regfile = "M32def.dat" $crystal = 3686400 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 2 Cursor Off Noblink Locate 1 , 1 Lcd "Hallo" Gruss Mike
schreibt mir nur "FFFFFFFFFFFFFFFF" in beide Zeilen. Jtag ist aus! [Code]Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Cls[/Code]
-
Thread
LED Multiplexing
Vorwiderstände eventuell zu groß? Wenn du die 220 Ohm genommen hast, sind sie so klein wie möglich. Oder PortC nicht auf Ausgang geschaltet ?
= 0x10; _delay_ms(100); PORTC = ~0x02; PORTD = 0x01; _delay_ms(100); PORTD = 0x02; _delay_ms(100); PORTD = 0x04; _delay_ms(100); PORTD = 0x08; _delay_ms(100); PORTD
-
Thread
Starten eines Programmes Atmega8
Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portc.0 Led8 Alias Portc.1 Led9 Alias Portc.2 Led10 Alias Portc.3 Taster Alias Portc.4 'Einlesen des Tasters Do If Taster = 1 Then
Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portc.0 Led8 Alias Portc.1 Led9 Alias Portc.2 Led10 Alias Portc.3 Taster Alias Portc.4 'Einlesen des Tasters Do If Taster = 1 Then Led10 = 0 End
-
Thread
GCC + Interrupt
durchgelaufen ist,ist 1ms vergangen { timestamp++; if ( !(PINC & (1<<PINC5)) ) { PORTC=0xFF; } else { PORTC=0x00; } T=0; } else { T++; } } Hilft dir das weiter um mir bei meinem problem zu helfen? kann es sein, daß der Takt des µC
Du fragst den Eingangspegel an einem Pin ab, das als Ausgang geschaltet ist. Da kannst du gleich PORTC abfragen, es sei denn, du erwartest, dass draußen jemand einen Kurzschluss anbringt. ;-) Einfacher ist allerdings PORTC ^= 0xFF; >if (T==2000) >{ > fdevopen(uart_putc, NULL,0); > printf
-
Thread
Wecker mit Solar und Ladeüberwachung bauen
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcdbus = 4 Cursor Off Config Pinb.1 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Pinb.3
-
Thread
Unbekanntes lcd Display
Alias Portd.6 Vermutung (2): Lcd_data sollte als "Alias Portc" definiert werden
code] $regfile "m32def.dat" $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.6 , Rs = Portd.7 Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "Hallo Welt" [/code] Bascom muss irgendetwas noch über die Datenleitungen
-
Thread
Was mach ich nur falsch :-(
Gosub Warten Else Gosub Aus 'Leute steigen ein (farbwechsel) If Pind.1 = 1 Then Set Portc.1 Else Reset Portc.1 'Einsteigen beendet (Türen Schließen sich) If Pind.2 = 1 Then Set Portc.2 Else Reset Portc.2 'Fahrt beginnt (fahrt läuft) If Pind.3 = 1 Then Gosub Flash Else
[pre] Do If Pind.0 = 1 Then Gosub Warten Else Gosub Aus ' (1) If Pind.1 = 1 Then Set Portc.1 Else Reset Portc.1 ' (2) If Pind.2 = 1 Then Set Portc.2 Else Reset Portc.2 ' (3) If Pind.3 = 1 Then Gosub Flash Else Gosub Aus ' (4) Loop [/pre] passiert folgendes: (Annahme:
-
Thread
LCD +Bascom zeigt 1. Zeile Nix 2. Zeile voll
initialisieren lassen. Bei mir wir folgender Text zur Definition und Initialisierung eingegeben Config Portc = Output Config Lcd = 16 * 2 Config Lcdpin = Pin , R = Portc.7 , E = Portc.5 , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 Config Lcdbus = 4 Config Lcdmode = Port Initlcd
-
Thread
Interrupt ATtiny85 - Hilfe
Idee?. /*Interrupt Service Routine for INT0*/ ISR(INT0_vect) { PORTB=~PORTB; /* Toggle PORTC */ _delay_ms(50); /* Software debouncing control delay */ } int main(void) { //DDRB=0xFF; /* Make PORTC as output PORT*/ // PB2 - input DDRB &= ~ (1<< PB2);
Michael schrieb im Beitrag #7552446: > PORTB=~PORTB; /* Toggle PORTC */ 1. der Tiny kennt keinen PortC 2. damit stirbt der Pullup ab, und danach ist nix mehr mit kontrolliertem "rising" Michael schrieb im Beitrag #7552446: > // PB4 - output > DDRB = (0<<
-
Thread
Atmel Studio Absolut Beginner Coding programmierfragen
_delay_ms(1000); PORTC &= ~(1 << PC5); _delay_ms(250); PORTC ^= (1 << PC5); // flip state of LED on PC5 _delay_ms(1000); PORTC &= ~(1 << PC5); _delay_ms(250); PORTC ^= (1 << PC5); // flip state of LED on PC5
_delay_ms(1000); PORTC &= ~(1 << PC5); _delay_ms(250); PORTC ^= (1 << PC5); // flip state of LED on PC5 _delay_ms(1000); PORTC &= ~(1 << PC5); _delay_ms(250); PORTC ^= (1 << PC5); // flip state of LED on PC5
-
Thread
LCD zeigt nichts an
Datenbus DB4-DB7, das unterste Bit DB4 kann auf den Portbits 0..4 liegen // LCD DB4-DB7 <--> PORTC Bit PC0-PC3 #define LCD_DB PD0 // LCD Steuersignale RS und EN // LCD RS <--> PORTC Bit PC4 (RS: 0=Data, 1=Command) #define LCD_RS PD4 // LCD EN <--> PORTC
Das hier [C] // LCD Steuersignale RS und EN am Control Port // LCD RS <--> PORTC Bit PB2 (RS: 0=Data, 1=Command) #define LCD_RS PB2 // LCD EN <--> PORTC Bit PB0 (EN: 1-Impuls für Daten) #define LCD_EN PB0 [/c] ist Ernst zu nehmen! Überall,
-
Thread
PIC erste versuche (blinkled) mit 16F630 klappt nicht!
Also den LED-Jumer setzen und PORTC=0x00; schreiben.
// port as Digital IO TRISC = 0x00; // alle Ports als Ausgang def. PORTC = 0x00; //write 0 to port C while(1) { // Toggle led PORTC ^= 0x04; // Simple delay Delay(2000); } } [/c] Vielen Dank!
-
Thread
3x3x3 LED Matrix - einzelne Ebenen ansteuern
'nachfoldend: alle Spalten auf high Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Porta.7 = 1[/c] Zeile 11, 12 und 13 bewirken nichts, egal, ob ich sie auskommentiere oder nicht!
m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1600000 $baud = 9600 Config Portc = Output Config Portb = Output Dim Col As Byte Dim Row As Byte Do For Col = 0 To 7 Config Porta = Input Portc = 0 Portb = 0 Portc.col = 1 If Col = 7 Then
-
Thread
2 LEDs im Gegentakt toggeln lassen? + Zeitproblem
so zu beschreiben: PORTC = (1<<PC0) | (0<<PC1); und in der Folge so zu toggeln: PORTC ^= (1<<PC0) | (1<<PC1); Das gibt dann die gewünschte Folge.
an, der Rest ist aus. (nicht schön: also vorher PORTC einlesen, PC1 auf null zwingen und PC0 auf 1! PORTC = (PORTC & ~(1 << PC1)) | 1 << PC0; //nur schnell hingeschmiert, könnte passen :) Grüße
-
Thread
Problem mit Projekt eines Empfangsprogramms für Besucher
{ if (i == 2) { tasterFrei = 0; PORTC |= 0x02; _delay_ms(10); PORTB = 0x02; _delay_ms(100); PORTB = 0x00; delayLong(9);//dauer ansage nr.2 PORTC &= ~0x02; tasterFrei = 1; } else { if (i == 3) { tasterFrei = 0; PORTC |= 0x04; _delay_ms(10); PORTB = 0x04; _delay_ms(100); PORTB = 0x00; delayLong(18);//dauer ansage nr.3 PORTC &= ~0x04; delayLong(80); /
-
Thread
ISR springt nicht mehr raus
Laufkatze clearbit(PORTC,0); // Zurücksetzen von Joystick } if (Zeitlk2 == time) { setbit(PORTA,1); setbit(PORTC,0); // setzen hochziehen
>> clearbit(PORTC,0); // Zurücksetzen von Laufkatze >> clearbit(PORTC,0); // Zurücksetzen von Joystick Sicher?
-
Thread
Atmel Studio 6 Erste Schritte: Debug / Watch
1) > { > PORTC = turns; > turns++; > } > } > [/c] -> turns an PORTC zuweisen, turns inkrementieren.
Hi >-> turns an PORTC zuweisen, turns inkrementieren. Stimmt. Da war ich wohl mit Blindheit geschlagen. Entschuldige. MfG Spess
-
Thread
Port-Bits zusammenfassen und dezimal ansprechen
möchte diesen umschalten.Die Schalternummer geb ich dem 4051 binär vor. Ist es möglich die 3 Ausgänge (portc.0, portc.1, portc.2) mit Alias o.ä. umzubenenen und diese 3 Ausgänge sozusagen auf einmal anzusprechen. Vielleicht noch dezimal ? Also z.B ... Schalterstellung alias portc.0, portc.1, portc.2
portc = 2
-
Thread
Falsche Anzeige nach Spannungsverlust
SEND_CHAR (unsigned char c) { data = 0b00001111 | c; // Nehme oberes Nibble PORTC = (PORTC | 0b11110000) & data; // Setze D4-D7 RS_HIGH; // Setze LCD-Display in Datenmodus _E(); data = c << 4; // Nehme unteres Nibble PORTC = (PORTC
// Delay für LCD Char data = 0b00001111 | c; // Nehme oberes Nibble PORTC = (PORTC | 0b11110000) & data; // Setze D4-D7 RS_LOW; // Setze LCD-Display in Datenmodus _E(); data = c << 4; //Nehme unteres Nibble PORTC = (PORTC
-
Thread
AVR asm jmp problem
and out ldi r16, 0b000010 STORE DDRB, r16 ;configure pullups in C ldi r16, 0b001111 STORE PORTC, r16 ;led off ldi r16, 0x00 STORE PORTD, r16 loop: sbic 0x06, 0 jmp loop ldi r16, 0b011111 STORE PORTC, r16 end: jmp end [/avrasm] Der Taster ist dabei
der Reset-Leitung hinzufügen oder den internen für den Pin zuschalten indem du beim Schreiben auf PORTC 8 bit verwendest und dabei bit 6 auf 1 setzt. Also: [avrasm]ldi r16, 0b01------ ; '-' meint die obigen 6-bit-Werte STORE PORTC, r16[/avrasm] Mark
-
Thread
Sonderbares Timer-Verhalten
Nichts tun } } ISR(PCINT3_vect) { //Timer auf Anfang, Pins auf HIGH TCNT1 = 0; PORTC |= (1<<PC6); } ISR(TIMER1_COMPA_vect) { //Pins auf LOW PORTC &=~ (1<<PC6); } [/c] Wenn ich dieses Programm ausführe, gibt es kein Problem, der Pin ist immer schön für 600µs auf
. [c] ISR(PCINT3_vect) { TCCR1B |= (1<<CS10); //Start Timer PORTC |= (1<<PC6); } ISR(TIMER1_COMPA_vect) { //Pins auf LOW PORTC &=~ (1<<PC6); TCCR1B &= ~(1<<CS10); //Stop Timer TCNT1 = 0; } [/c] Dann treten auch keine unerwünschten Interrupts
-
Thread
Atmel Studio 6 kompiliert Nixie Programm für ATmega8 nicht
<4) + (uint8_t)(11); } else { byte = (uint8_t)(10<<4) + (uint8_t)(value); } sbi(PORTC, (group+1) % 3); outp(255,PORTD); cbi(PORTC, (group+1) % 3); sbi(PORTC, group); outp(byte,PORTD); cbi(PORTC, group); } [/c] Ich habe jetzt Atmel Studie 6 sowie (vermutlich überflüssigerweise
<4) + (uint8_t)(11); } else { byte = (uint8_t)(10<<4) + (uint8_t)(value); } sbi(PORTC, (group+1) % 3); outp(255,PORTD); cbi(PORTC, (group+1) % 3); sbi(PORTC, group); outp(byte,PORTD); cbi(PORTC, group); } Error List: Warning 1 #warning "This header file is
-
Thread
Software PWM mit Bascom
Integer Dim B As Integer Config Timer0 = Timer , Prescale = 64 On Timer0 Timer0_isr Config Portc = Output Portc = 255 B = 120 A = 0 Enable Timer0 Enable Interrupts Portc.1 = 0 Do Loop Timer0_isr: Incr A 'A eins hoch zählen If
'Wenn A 120 ist dann Portc.0 = 1 'Portc.0 aus A = 0 'A wieder nullen endif Return [/code] Ich weiß, das A nie die 200
-
Thread
Atmega128 - Wieder mal Probleme mit UART Interrupt
Interrupt-Flag wieder herstellen SREG = sreg; } ISR(USART0_RX_vect) { DDRC = 0xFF; PORTC = 0b11110000; UDR0; } int main (void) { uart_init(); sei(); for(int i = 0; i< 4000; i++) _delay_ms(1); DDRC = 0xFF; PORTC = 0b11110000; while(1); return
Interrupt-Flag wieder herstellen SREG = sreg; } ISR(USART0_RX_vect) { DDRC = 0xFF; PORTC = 0b11110000; UDR0; } int main (void) { uart_init(); sei(); for(int i = 0; i< 4000; i++) _delay_ms(1); DDRC = 0xFF; PORTC = 0b11110000; while(1); return
-
Thread
UART LED anschalten und halten
dann eher klar, wo mein Problem liegt: [c] while(1) { if (UDR !=0x00) PORTC = 0x01; } [/c]
------------------------------------------------------ int main ( void ) { DDRC=0x03; PORTC |= 0x02; _delay_ms( 1000 ); PORTC &= ~0x02; UCSRA=0x00; UCSRB=0x10; //receiver UCSRC=0x86; //8bit 1stop UBRRH=0x00; UBRRL=0x19; //Baud 9600 bei 4MHz Takt ... [/C]
-
Thread
Anregungen / Fragen / Hinweise zu Wecker
; PORTB.OUTSET=0x81; PORTA.OUTSET=0x80; break; case 0x33: PORTC.OUTSET=0x61; PORTB.OUTSET=0x02; PORTA.OUTSET=0x80; break; case 0x34: PORTC.OUTSET=0x15; PORTB.OUTSET=0xA0; break; case 0x35: PORTC.OUTSET=0x51; PORTB.OUTSET=0x82; PORTA.OUTSET=0x80; break; case 0x36: PORTC.OUTSET=0x51; PORTB.OUTSET=0x83; PORTA.OUTSET=0x80; break; case 0x37: PORTC.OUTSET=0x49; PORTB.OUTSET=0x90; break; case 0x38: PORTC.OUTSET=0x71
-
Thread
PCINT Interruptroutine
fragen, da mir das alles merkwürdig vorkommt. [code] /* -- Keypad -- */ #define row1_high PORTC |= (1 << DDC0) #define row1_low PORTC &= ~(1 << DDC0) #define row2_high PORTC |= (1 << DDC1) #define row2_low PORTC &= ~(1 << DDC1) #define row3_high PORTC |= (1 << DDC2) #define row3_low PORTC &= ~(1 << DDC2) #define row4_high PORTC |= (1 << DDC3) #define row4_low PORTC &= ~(1 << DDC3) #define column1_not_active !(PINC & (1<<PINC4)) #define column2_not_active !(PINC & (1<
-
Thread
RTC DS1307 mit Bascom konfigurieren und abfragen
$framesize = 16 $hwstack = 24 $swstack = 16 'configure the scl and sda pins Config Sda = Portc.4 Config Scl = Portc.5 'die Definition von SDA und SCL entfällt, da wir den Hardware TWI verwenden. 'Allerdings muss der Uhrbaustein zwingend an die Hardware TWI Ports angeschlossen werden. ' Sda = Portc.4 ' Scl = Portc.5 Config Twi = 100000 ' Init TWBR und TWSR 'Typical you need a speed of 400000Hz. Some devices will work on 100000Hz as well. ' TWI
-
Thread
Display fällt in unregelmäßigen Abständen aus
ISR(TIMER0_OVF_vect){ icount++; PORTC=0; PORTD=show[display[pos]]; PORTC|=(1<<pos); if(pos==0&&einspeisen==1) /*Punkt ob eingespeist wird oder nicht*/ PORTD&=~(1<<7); if(pos==1&&powered==1) /*Punkt ob WP gepowered oder
sind allerdings diese hier aus der Main /*Einlesepunkt einschalten*/ PORTD=0b01111111; PORTC=0b00001000; /*Protokoll einlesen*/ for(i=0;i<loggr;i++){ log[i]=readchar(); if(log[i]=='!') break; } /*Verarbeitungspunkt einschalten*/ PORTC=0b00000100
-
Thread
ATmega168 Interrupts funktionieren nicht mehr.
} else {//PORTC |= (1<<PC4) ; //zum überprüfen TIMSK0 = 0x00; // 0x01 = 1<<TOIE0);; Aktiviert den Zähler Aufoderab=0; fertig=1; // PORTC |= (1<<PC1) ; } } [/c] X-Vars: [c]volatile uint16
cli(); DDRC = 0xFF; EICRA = 0x03; EIMSK = 0x01; sei(); while(1) { PORTC |= (1<<PC4) ;//LED_4 an. } } ISR(INT0_vect) { PORTC |= (1<<PC3) ;//LED_3 an. } [/c]
-
Thread
Integer Variable Zerlegen
hochzählen oder? 1 10 11 100 101 110 111 usw... eben bínär jetzt habe ich 6 ports portc.0 bis portc.5 wenn test=1 portc.0=1 alles andere aus wenn test=10 dann portc.1=1 alles andere aus wenn test=11 dann portc.1=1 portc.0=1 usw... hoffe versteht was ich meine^^
Huch? Jetzt willst du dann doch mit Portc.0 anfangen? Ist doch wunderbar, dann kannst du dir das schieben sparen und es direkt auf den Port rausschreiben.
-
Thread
Eingang einlesen
Könnte es sein, dass die alternative Portfunktion von PortC aktiv ist? Eingangspin 5 funktioniert, die anderen aber gar nicht...
lauter Bäumen nicht und ich hab schon fast an mir gezweifelt. hatte in einem Programmteil noch PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); stehen. Das Ganze ist wegen Testzwecken noch stehen geblieben und ich hatte es nur vergessen zu löschen, bzw. auszukommentieren
-
Thread
MEGA32 nach C-Source Änderung tot :-(
); void DreiZweiEins_func(void); void DreiZweiEins_func(void) { if (DreiZweiEins == 1000) PORTC &= ~ (1<<PC7); if (DreiZweiEins == 2000) PORTC &= ~ (1<<PC6); if (DreiZweiEins == 3000) { PORTC &= ~ (1<<PC5); CountLedRot = 0; } DreiZweiEins ++; } void LedGelbAnAus(void)
120000) { PORTC |= (1<<PC6); } if (CountLedRot == 180000) { PORTC |= (1<<PC7); } if (CountLedRot == 240000) { PORTC &= ~ ((1<<PC5) | (1<<PC6) | (1<<PC7)); CountLedRot = 0; }
-
Thread
Drehzahlmesser 4 mal 7-segment mit 90S2313
Impulse As Byte Dim V As Long Dim W As Long Dim W1 As Long Dim W2 As Long Dim W3 As Long Config Portc = Output Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Timer1 = Timer , Prescale = 256 , Capture Edge
-
Thread
c code optimierung ev. assembler?
void DAC_Output(uint16_t val){ // converts 12Bit to the DA Converter if(val & (1<<8)){ PORTC |= (1<<3); } else{ PORTC &= (~(1<<3)); } if(val & (1<<9)){ PORTC |= (1<<2); } else{ PORTC &= (~(1<<2)); } if(val & (1<<10)){ PORTC |= (1<<1); } else
uint16_t val){ // converts 12Bit to the DA Converter if(val & (1<<8)){ PORTC |= (1<<3); } else{ PORTC &= (~(1<<3)); } if(val & (1<<9)){ PORTC |= (1<<2); } else{ PORTC &= (~(1<<2)); } if(val & (1<<10)){ PORTC |= (1<<1); } else
-
Thread
Interrupt springt nicht in die Serviceroutine MKL26z128
/LED blau OFF #define SWITCH_INPUT PTC->PDIR; //read SWITCH //////////PROTOTYPS///// void PORTC_PORTD_IRQHandler(void); int main (void){ SystemInit(); /////////PORT'S EINSCHALTEN///////////////// SIM->SCGC5 |=SIM_SCGC5_PORTC_MASK; // PORT C einschalten SIM->SCGC5 |=SIM_SCGC5
extern void PORTC_PORTD_IRQHandler(void); #endif //__ISR_H [/c]
-
Thread
Timer1 PIC16F1823 funktioniert nicht
TMR1L = 0x02; //low byte INTCON.TMR1IF = 0; //re-enabling the interrupt PORTC.B2 != PORTC.B2; } } void wait_ms(int time) { for(i = 0; i<time; i++) Delay_ms(1); } void init_Timer1() { //Timer1 always on T1CON.TMR1ON = 1; T1GCON.TMR1GE
TMR1L = 0xFF; //low byte } void main() { init_Timer1(); TRISC = 0x00; //Define PORTC as output PORTC = 0x00; PORTC.B2 = 1; while(1) { } } [/c]
-
Thread
LCD will nichts anzeigen (incl. Code)
PORTC /*!< Read / write PORT */ #define RW PORTC7 /*!< Read / write BIT */ #define BUSY_PORT PORTC /*!< Busy PORT */ #define
PORTC3 /*!< Enable 2 BIT */
-
Thread
Anfängerfrage zu Assembler
erstmal garnicht :P habe dann einfach zum versuch eine drahtbrücke hergestellt und den PIN 0 auf PORTC auf high beschalten.
ganze portb 1 haben. [avrasm] clr R0 ldi R16, 0xFF out DDRC, R0 ; PORTC als Eingänge out PORTC, R16 ; Pullups auf PORTC out DDRB, R16 ; PORTB als Ausgänge schleife: sbis PINC, PINC0 ; Wenn PC0 NICHT gesetzt ist...
-
Thread
Bascom Mega32 + LCD TC1602A-08(R)
"Test" Programm... $regfile = "m32def.dat" $crystal = 16000000 Config Lcdpin = Pin . Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Config Lcd = 16 * 2 Cls Do Lcd "test" Lowerline Lcd "12345678" Sleep 1 Loop End ---------------
Nach Pin ein Komma, keinen Punkt! Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Der Code macht dann im Simulator genau was er soll...
-
Thread
74HCT165 Eingänge gehen nicht
EPL_Anzahl 1 // Anzahl der Eingangsplatinen 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<
bitte sagen wie ich das am schönsten machen kann? [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<
-
Thread
SPI zwischen zwei AtMega8
PORTD |= (1<<PD6); } } void changeDigitToOnAndOthersOff(int digit){ if(digit == 1){ PORTC |= (1<<PC0); PORTC &= ~((1<<PC1) | (1<<PC2) | (1<<PC3)); }else if(digit == 2){ PORTC |= (1<<PC1); PORTC &= ~((1<<PC0) | (1<<PC2) | (1<<PC3)); }else if(digit == 3){ PORTC |= (1<<PC2); PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC3)); }else if(digit == 4){ PORTC |= (1<<PC3); PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2)); } } void multiplexDigits(){ if(multiplexCount
-
Thread
Alptraum jedes Programmierer: Code kompilierbar aber doch ein Denkfehler drin wer sieht´s?
direkt auf einzelne Bits eines Ports zugreifen kannst, musst du das zwischenbuffern. [c] tmp = PORTC; tmp &= ^CSentUsedBitsMask; // alle Bits in der Maske löschen, die anderen bleiben unberührt tmp |= data & CSentUsedBitsMask; // Datenbits ausmaskieren und entsprechend setzen PORTC = tmp; [/c
gewöhn die ab besten gleich an: nur die Bits angreifen, die du auch wirklich ändern willst. [c] PORTC |= (1<<PC5); // Green LED on [/c] statt [c] PORTC = 0x20; // At no failure green LED is lightning from the 00100000 from the port C [/c] In Zeile 161 machst du das richtig: [c] PORTC
-
Thread
ISP-Mode Fehler bei Programmierung ATMEGA16 mit STK500
brlo strom rjmp weiter keinstrom : ldi ausgang, 0b00000000 out PORTC, ausgang rjmp weiter strom: ldi ausgang, 0b10000000 out PORTC, ausgang rjmp weiter weiter: sbi ADCSR,ADSC rjmp haupt .EXIT
DDRC, r16 ; >5 out PORTB, r16 >6 ldi akku, 0b00000000 >7 out PORTB, akku >8 out PORTC, akku >Die Pins lassen sich an PortC über PortB schalten. Klar, Du liest ja PINB in 'sollwert' ein und gibst 'sollwert' gleich danach auf PORTC (durch Zeile 3 und 4 als Ausgang konfiguriert)
-
Thread
Problem mit AD7945BN DAC Ansteuerung
){ // PortC0 (MSB) bis PortC3, Rest PortA (PortA0 LSB) PORTC |= (1<<3); } else{ PORTC &= (~(1<<3)); } if(val & (1<<9)){ PORTC |= (1<<2); } else{ PORTC &= (~(1<<2)); } if(val & (1<<10)){ PORTC |= (1<<1); } else
)) PORTC |= (1<<0); PORTA = val; } [/c]
-
Thread
Schrittmotor mit Atmega 8 warum geht PD0 als Eingang nicht?
t i; void rueck_vor_fahrt (void) { while(1) { if ( PIND & (1<<PIND1)) { PORTC = NARANJA; _delay_ms(DELAY); PORTC = GRIS; _delay_ms(DELAY); PORTC = AMARILLO; _delay_ms(DELAY); PORTC = NEGRO; _delay_ms(DELAY); } if ( PIND & (1<<PIND4)) { PORTC = NEGRO; _delay_ms(DELAY); PORTC = AMARILLO; _delay_ms(DELAY); PORTC = GRIS; _delay_ms(DELAY); PORTC = NARANJA; _delay_ms(DELAY);