-
Thread
Basic ganzen PORT A als Ausgang bzw Eingang
mal so: Config Portb = Output Config Portd = Output Config Porta = Input Porta = 255 Config Portc = Input Portc = 255 Und lass das hier weg Du kannst auch schreiben: PORTB=PINA If Pina. = 1 Then Portb. = 1 End If Gruß Rolf
Input Config Pinc.4 = Input Config Pinc.5 = Input Config Pinc.6 = Input Config Pinc.7 = Input Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Do If Pina.0 = 1 Then Portb.0 = 1 End If If Pina.1 = 1 Then Portb.1 = 1 End
-
Thread
A t m e g a 88 wird nicht mehr erkannt
ldi r17, 0x00 ende: out PORTC, r16 out PORTC, r17 rjmp ende [/asm]
die 8 MHz nicht, nötig wäre ein Quarz über 10 MHz. Alternativ könnte man den ATmega8 mit out PORTC, r16 out PORTC, r17 vollpacken plus Rücksprung vom Ende an den Anfang und mehrmals versuchen, die L-fuse des 88 umzustellen. Wobei allerdings dieses > Auf dem Atmega88 ist ja auch noch ein
-
Thread
bitte helfen
'Config ATmega8535 $regfile = "m8535.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Port.5 , E = Portc.4 'Config ADC Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Adc konfigurieren Start Adc
Schreib mal bei RS = Portc.5 Ein "Config Lcd = 16*2" und ein "Initlcd" vor der Hauptroutine wären auch nicht schlecht. :-) Frohes "Einlesen" Paul
-
Thread
DS18B20 mit Atmega8 bekomme nur 1 empfangen
gemessen. Der Code: $regfile = "m8def.dat" $crystal = 1000000 Config 1wire = Pinc.1 Config Portc.0 = Output Config Pinc.2 = Input Config Pinc.3 = Input Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , _ Db7 = Portd.3 , E = Portd.6 , Rs = Portd
Else Locate 2 , 10 Lcd " " ; Temp_string ; Chr(0) ; "C" End If If Temp_soll >= Temp_ist Then Portc.0 = 0 Else Portc.0 = 1 End If If Pinc.3 = 1 And Temp_soll < 300 Then Temp_soll = Temp_soll + 1 End If If Pinc.2 = 1 And Temp_soll > -150 Then Temp_soll = Temp_soll - 1 End If Waitms
-
Thread
kurzer Denkanstoß zur Pin Ansteuerung per Uart im ATMega
#4740515: > Was wäre eine einfache und simple Comandozeile, mit wenigen Byte? > einschalten: C12C14 -> PortC 2 an, 4 an. > ausschalten: C02C04 -> PortC 2 aus, 4 aus. > > ist doch recht lang wenn es um alle geht. Wenn es um alle geht, könnte man z.B.[pre]einschalten: C1A -> PortC alle ein. > ausschalten
gute Idee, somit also [code] ABCDEF - 6 an - PORTB G00000 - 6 an - PORTB h00000 - 6 aus - PORTC IJKLMN - 6 an - PORTC aJLEbc - PORTB 0b00x1x000 / PORTC 0b00xx1x1x [/code] könnte gehn, versuchmal ein Program zu schreiben... erst mal DANKE ist das mit Hh und Gg nicht unnötige, wenn ich
-
Thread
Stromverbrauch steigt exponentiell
funktioniert bin ich über glücklich: [c] #include <avr/io.h> #define F_CPU 10000000 #define GR_ON() PORTC |= (1<<1); #define GR_OFF() PORTC &= ~(1<<1); #define RE_ON() PORTC |= (1<<2); #define RE_OFF() PORTC &= ~(1<<2); int main() { DDRC |= (1<<2) | (1<<1); RE_ON(); GR_ON(); while
nur 0,1 oder so. OK. Das ist dann was anderes. Hat der Mega64 ein JTAG, welches zufällig am PORTC liegt und von dir nicht per Fuse abgeschaltet wurde? (Beliebtes Problem beim Mega16, Mega32)
-
Thread
Led Cube erster Versuch :) & ein paar Fragen
" $crystal = 1000000 Config Portd.0 = Output Config Portd.1 = Output Config Portc.6 = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output Config Portc.1 = Output Config Portc.0 = Output Config
Portd.1 = 1 Waitms 1000 Portd.1 = 0 Portd.0 = 1 Waitms 1000 Portd.0 = 0 Portc.6 = 1 Waitms 1000 Portc.6 = 0 Portc.5 = 1 Waitms 1000 Portc.5 = 0 Portc.4 = 1 Waitms 1000 Portc.4 = 0 Portc.3 = 1 Waitms 1000 Portc.3 = 0
-
Thread
ATmega16 / 8 to LCD
|= (1<<PA4); // Portpin auf high PORTA |= (1<<PA5); // Portpin auf high PORTC |= (1<<PC1); // Portpin auf high PORTC |= (1<<PC2); // Portpin auf high PORTC |= (1<<PC4); // Portpin auf high PORTC |= (1<<PC5); // Portpin auf high
// Portpin auf low PORTC &=~(1<<PC1); // Portpin auf low PORTC &=~(1<<PC2); // Portpin auf low PORTC &=~(1<<PC4); // Portpin auf low PORTC &=~(1<<PC5); // Portpin auf low
-
Thread
atmega8 einzelnen Pin schalten C
Alsoo mit dem Befehl "PORTC = (1<<PC1)" setze ich ja den PIN1 von PortC auf 1. Allerdings setze ich damit auch gleichzeitig alle anderen Pins von PORTC auf 0. Das möchte ich aber nicht. Ich möchte das Pin1 auf 1 gesetzt wird
ganz easy: BSF PORTC, 1
-
Thread
Led Dimmen , flackern mit Pwm
der pwm ausgang da muss die led mit 1kohm zum gnd. und der schalter / taster kann ich ja dann auf portc.1 schalten. sehe ich es richtig. da das programm den pwa ausgang schaltet.
ein Bit umkehrst, also aus 1 wird 0 und aus 0 wird 1. Toggle ist also für Ausgänge (und Bits). Nimm PORTC für die Taster. Und vergiss nicht, den AVCC-Pin mit VCC zu verbinden.
-
Thread
ATMEGA32 Einzellne Pins durchgebrannt ?
ich hab ein kleines Problem mit einem ATMEGA32 und einem Experementierboard. Ich habe 8x LED´s am PortC angeschlossen. Die LED´s haben alle einen 470 Ohm Vorwiderstand. Die Platine hat einen Spannungsregler auf 5V. Also fließen durch die LED´s max. 10mA. Die müssen ja auch nicht hell leuchten. Ich wollte
ldi r16, 0xFF out DDRC, r16 ende: ldi r16, 0x00 out PORTC, r16 rjmp ende [/avrasm] [c] #include <avr/io.h> #include <util/delay.h> int main() { while(1) { DDRC = 0xFF; PORTC = 0x00; } } [/c] Bei beiden Programmierungen
-
Thread
Bit in Byte mit Schleife schieben.
16 mal "i"erhöht werden, also i= 16 i= 32 i= 48 [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<
StatusEingangKarte[1] so aussieht: "0000 0000 0000 1000" [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
Messschieber mit µc auslesen
Scientific , Digits = 3 'Einstellen der Variable für den seriellen Messwert Config Portc.0 = Input 'Takt-Eingang X-Achse Config Portc.1 = Input 'Daten-Eingang X-Achse Config Portc.2 = Input 'Takt-Eingang Y-Achse Config Portc.3 = Input 'Daten-Eingang Y-Achse Config Portc.4 = Input 'Takt-Eingang Z-Achse Config Portc.5 = Input
-
Thread
Atmega8 PORTB
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
Taster0Jetzt; // Taste wurde betätigt, die LED PC0 in den anderen Zustand schalten if( PORTC & ( 1 << PC0 ) ) PORTC &= ~( 1 << PC0 ); else PORTC |= ( 1 << PC0 ); } _delay_ms( 10 ); } [/c] Jeder Code ist aus 'Modulen' zusammengebaut. Diese können
-
Thread
Stk500 switches
[code] Config Portc = Output Config Portb = Input Portc.3 = 1 Portc.2 = 1 Portc.1 = 1 Portc.0 = 1 Portc.5 = 1 Portc.6 = 1 Portc.4 = 1 Config Portb.0 = Input ' Pin0 von
' internen PullUp-Widerstand aktivieren Do Incr I Toggle Portc.7 Waitms 20 Toggle Portc.6 Waitms 20 Toggle Portc.5 Waitms 20 Toggle Portc.4 Waitms 20 Toggle Portc.3 Waitms 20 Toggle Portc.2 Waitms 20 Toggle Portc.1 Waitms 20 Toggle Portc.0 Waitms
-
Thread
AVR Scheduler von Peter Danneger will nicht
Nimm dieser Makros [c] #define MotorspeedON PORTC |= (1<<PINC1) #define MotorspeedOFF PORTC &= ~(1<<PINC1) #define MotorLinksON PORTC |= (1<<PINC2) #define MotorLinksOFF PORTC &= ~(1<<PINC2) #define MotorRechtsON PORTC |= (1<<PINC3) #define MotorRechtsOFF PORTC &= ~(1<<PINC3) #define IniRearSlow PIND & ( 1 << PIND5 ) [/c] aus schedule.h raus und in main.c rein. erstens haben die dort nichts verloren (im schedule.h geht es um den Scheduler
-
Thread
Thermomter DS18b20
BASCOM gibt > es dafür anscheinen keinen Befehl. Naja, das ist ja auch nicht richtig: Config Portc.0 = Input Config Portc.1 = Input Config Portc.2 = Input Es muß heißen: config Pinc.0 = Input config Pinc.1 = Input config Pinc.2 = Input Pull-up Widerstände kann man dann als Nächstes so einschalten: PortC = &B00000111 Das schaltet die Ziehwiderstände an PortC 0, 1 und 2 ein und läßt den Rest in Ruhe. MfG Paul
-
Thread
Strukturierte AVR-Assembler-Programmierung Gesperrt
in LEDport,PORTC eor LEDport,bitmask ; toggle masked LED position out PORTC,LEDport IF LEDcnt == #7 ldi bitmask,0b00_0001 ; reload bitmask ELSE lsl bitmask
in LEDport,PORTC eor LEDport,bitmask ; toggle masked LED position out PORTC,LEDport IF LEDcnt == #7 ldi bitmask,0b0010_0000 ; reload bitmask ELSE lsr
-
Thread
SPI mit AVR: Array-Zugriff in ISR funktioniert nicht
TCNT0 = 0; TCCR0B = (1<<CS02); // start timer0; prescaler=256; 1 tick = 12.8 µs; OVF 3.28ms PORTC &= ~(1<<PORTC0); } int main(void) { DDRB = (1<<PORTB6); // set MISO as output; all other PINs remain inputs SPCR = (1<<SPE) | (1<<SPIE) | (1<<CPOL) | (1<<CPHA); DDRC = (1<<PORTC0) | (1<<PORTC1); // outputs for test signals sei(); while (1) { if(TCNT0>35) { // last SPI telegram is definitely over (msg every 10ms), so reset byte counter PORTC |= (1<<PORTC1
-
Thread
Problem beim Multiplexen zweier 7-Segment Anzeigen
simple, dann verliert man vielleicht nicht den Überblick int i1 = i/10; PORTC = (1 << PD0); save1 = count2; PORTB = zahlen[i1]; if(save1 == count2-1) PORTC = (0 << PD0); int i2 = i%10; PORTC = (1 << PD1); save2 = count2; PORTB = zahlen[i2]; if(save2 == count2-1) PORTC = (0 << PD1); ersetzen gegen PORTB=0; if(count&1) { PORTC=1<<PD1; PORTB=zahlen[i/10]; } else { PORTC=1<<PD0; PORTB=zahlen[i%10
-
Thread
Programm läuft nur mit JTAG Fuse
// Display 2 lcd_init(LCD_DISP_ON); // init lcd and turn on Menu1(); PORTC |= (1<<PC2); //ADC ein PORTC |= (1<<PC3); //Buck = ein PORTB |= (1<<PB3); //Pumpe = ein PORTC |= (1<<PC4); //H-Brücke L1=ein PORTC |= (1<<PC5); //H-Brücke H1=ein PORTC &= ~(1<<PC6); //H-Brücke L2=ein PORTC &= ~(1<<PC7); //H-Brücke H2=ein while (1) {
-
Thread
Probleme beim Einlesen vom Dip-Schalter
[C] {PORTC = 0xff} [/C] hier fehlt ein ;
mal: Marco schrieb im Beitrag #2002575: > if (wert==2) //testprogramm > > {PORTC = 0xff} PORTC = wert; damit du siehst was da reinkommt. mfg.
-
Thread
Flash Speicher sparen
zu machen. Dazu eine Verständnisfrage. Was verbraucht weniger Speicher A [c] MAIN: ... PORTC |= (1 << PC5); ... PORTC |= (1 << PC5); ... PORTC |= (1 << PC5); ... PORTC |= (1 << PC5); [/c] B [c] void schaltePortC(void) { PORTC |= (1 << PC5); } ... MAIN: ... schaltePortC
keinen Fall sein. Ich hoffe mal nicht, daß Du Spaghettikode schreibst mit 1000-mal SBI: [c] PORTC |= (1 << PC5); [/c] Dann wäre nämlich Dein Programmkonzept Dein größter Feind. Peter
-
Thread
Mega16, Fusebits und Quarz Probleme.
* 4 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.1 , Db7 = Porta.0 , E = Portc.6 , Rs = Portc.5 Wait 1 Initlcd Wait 1 Cls Upperline Lcd "Dies ist die 1"
Upperline Lcd "Dies ist die 1" Cursor On Blink Do Reset Portc.0 Wait 5 Set Portc.0 Wait 5 Loop _________________________________________________________-- Ohne Upperline zeigt er nämlich garnix an... :-) wer weis worans liegt...mir is jedenfalls
-
Thread
Temperatur Messung mit Mega8 und NTC-Widerstand 4,7k
| | ADC-Eingang(PORTC.5) Auserdem hab ich LCD angschlossen auf dem die Werte die da rauskommen angezeigt werden da ich das mit der seriellen geschichte ersnoch zum laufen bekommen muss. Gemacht hab ich das nach diesem
= 16000000 Dim Waiting As Word Waiting = 0 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cursor Off Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 CONFIG ADC =
-
Thread
html in c array
=\"B\" %PORTC1>\r\n" "<span class=\"Stil2\">Port C Pin 1</span></p>\r\n" "<p><input type=\"checkbox\" name=\"OUT\" value=\"C\" %PORTC2>\r\n" "<span class=\"Stil2\">Port C Pin 2</span></p>\r\n" "<p><input type=\"checkbox\" name=\"OUT\" value=\"D\" %PORTC3>\r\n" "<span class=\"Stil2\">Port C Pin 3</span></p>\r\n" "<p><input type=\"checkbox\" name=\"OUT\" value=\"E\" %PORTC4>\r\n" "<span class=\"Stil2\">Port C Pin 4</span></
-
Thread
AVR TWI Master und Slave Funtionen in C
8000000 $hwstack = 32 $swstack = 32 $framesize = 64 $baud = 19200 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7 Config Lcd = 20 * 2 Dim Twi_control As Byte Dim Twi_status As Byte Dim Twi_data_em As Byte Dim Twi_data_se As Byte
TWIM_Start(adres,TWIM_WRITE)) { uart_puts("start\n"); if(TWIM_Write('*')) { PORTC |= (1<<PC5); } } TWIM_Stop(); _delay_ms(1000); if(TWIM_Start(adres,TWIM_READ)) { uart_puts("Start read"); unsigned char a = TWIM_ReadNack(); PORTC |= (1<<
-
Thread
Servo Ansteuerung mit Bascom
möchte. Mein Code: $regfile = "m8def.dat" $crystal = 8000000 Config Servos = 1 , Servo1 = Portc.5 , Reload = 9 Config Portc.5 = Output Config Portc.4 = Input Config Portc.3 = Input Config Portc.2 = Input Config Portc.1 = Input Config Portc.0 = Input Config Portb.5 = Input Config Portb.4 = Input Config Portd.0 = Input Enable Interrupts 'Pullups Pinc.4 = 0 Portc.4 = 0 Portc.3 = 0 Portc.2 = 0 Portc.1 = 0 Portc.0 = 0 Portb.5 = 0 Portb.4 = 0 Portd.0 = 0 Dim Pos As Word Do If Pinc.3 = 1 Then Pos = 65 If Pinc.2 = 1 Then Pos = 80 If Pinc
-
Thread
Bei Tastendruck -> UART
; UBRRH = 00; //Baudrate einstellen 9600 bei 8 Mhz UBRRL = 51; PORTC = 0xFF; while( 1 ) { if (!(UCSRA & (1<<RXC))); { c = UDR; switch (c) { case '1': PORTC = 0x7F; break; case '0': PORTC = 0xFF;
; UBRRH = 00; //Baudrate einstellen 9600 bei 8 Mhz UBRRL = 51; PORTC = 0xFF; while( 1 ) { if (!(UCSRA & (1<<RXC))) { c = UDR; switch (c) { case '1': PORTC = 0x7F; break; case '0': PORTC =
-
Thread
Bascom: atmega8-16pu verhält sich anders als atmega8-8pu
bit2,bit1 as integer Config PortB.0 = Input ' Decimal or Hex Mode '8 Bit Data Input Config Portc.5 = Input Config Portc.4 = Input Config Portc.3 = Input Config Portc.2 = Input Config Portc.1 = Input Config Portc.0 = Input Config PortB.2 = Input Config PortB.1 = Input Config Portd
-
Thread
LCD Ansteuerung 4Bit funktioniert nicht!
Charakterdisplay anzusteuern und schaffe es einfachnicht! Kann mir jemand helfen? Ich verwende den PORTC des STK500 /STK501 Boards von Atmel! Interner Oszillator von 1Mhz ATMega 128 Habe den Prozessor erst in Betrieb genommen kann es sein, dass ich noch irgendwelche Fusebits setzen muss (M103C habe
ein PC2004 Display von Powertec welches mit dem HD44780 Controller arbeitet... Pinbelegung PORTC PIN0 -> LCD D4 PORTC PIN1 -> LCD D5 PORTC PIN2 -> LCD D6 PORTC PIN3 -> LCD D7 PORTC PIN4 -> LCD RS PORTC PIN5 -> LCD E PORTC PIN6 -> LCD Background (wird mittels Transistor geschalten) PORTC
-
Thread
Atmel Studio: "Standard" SW-Routinen aus einem Pool verwenden
I2C_PIN_MUX 7 static inline void gpio_init(void) { SIM->SCGC5 |= SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTE_MASK; PORTB->PCR[0] = 0x00000003; PORTB->PCR[1] = 0x00000100; PORTC->PCR[1] = 0x00000100; PORTC->PCR[2] = 0x00000100; PORTC->PCR[3] = 0x00000003; PORTC->PCR[4] = 0x00000003; PORTC->PCR[5] = 0x00000003; PORTC->PCR[6] = 0x00000700; PORTC->PCR[7] = 0x00000700; PORTD->PCR[4] = 0x00000100; PORTD->PCR[5] = 0x00000100; PORTD
-
Thread
ADC bei Atmega32
} void sev_segm_m(uint16_t number) { if(COMM_ANODE_M) { if( number < 10 ) PORTC = ~digits[number]; else PORTC = ~digits[10]; } else { if( number < 10 ) PORTC = digits[number]; else PORTC = digits[10]; } } void sev_segm_r(uint16
} void sev_segm_m(uint16_t number) { if(COMM_ANODE_M) { if( number < 10 ) PORTC = ~digits[number]; else PORTC = ~digits[10]; } else { if( number < 10 ) PORTC = digits[number]; else PORTC = digits[10]; } } void sev_segm_r(uint16
-
Thread
ATXmega32e5 SPI und Timer eliminieren sich gegenseitig?
Hallo, PORTC.REMAP = 0 PORTD.REMAP = 0 Habe ich beides.
CCP_IOREG_gc; CLK.CTRL = CLK_SCLKSEL_RC32M_gc; //Set My Ports PORTA.DIR=0xFF; PORTC.DIR=0xBF; PORTD.DIR=0xFF; PORTR.DIR=0xFF; PORTA.OUT=NULL; PORTC.OUT=NULL; PORTD.OUT=NULL; PORTR.OUT=NULL; //Note: Remap off! PORTC.REMAP = NULL; PORTD.REMAP
-
Thread
ATMega8 Externer Interrupt INT0
PORTC=0x02; _delay_ms(40); PORTC=0x00; _delay_ms(40); } } void tuwas3 (void) { // toggle c2 80 msec sei(); PORTC=0; while(1){ PORTC=0x04; _delay_ms
PORTC = 0x00; } return 1; } [/C]
-
Thread
Atmega 128 reset bei Interrupt
// 1mW Outputforce, 120k sendStringRS232(data); */ _delay_ms(500); PORTC = 0b00000001; _delay_ms(500); PORTC = 0b00000010; _delay_ms(500); PORTC = 0b00000100; _delay_ms(500); PORTC = 0b00001000; _delay_ms(500); PORTC = 0b00010000; _delay_ms(500); PORTC = 0b00100000; _delay_ms(500); PORTC = 0b01000000; _delay_ms(500); PORTC = 0b10000000; } return 0; } /** * This function initializes the SPI Interface (
-
Thread
Problem Mit LCD display
das was es soll. es Steht auf dem Dosplay `bddf anstat Hallo. Pinbelegung ist folgende: RS PORTC2 EN PORTC3 DB4 PORTC4 DB5 PORTC5 DB6 PORTC6 DB7 PORTC7 Danke für eure Hilfe
-
Thread
Schrittmotorsteuerung
/io.h> #include <util/delay.h> int main (void) { DDRC = 0xFF; while(1) { PORTC = 0b00000101; _delay_ms(40); PORTC = 0b00000001; _delay_ms(40); PORTC = 0b00001001; _delay_ms(40); PORTC = 0b00001000; _delay_ms(40); PORTC = 0b00001010; _delay_ms(40); PORTC = 0b00000010; _delay_ms(40); PORTC = 0b00000110; _delay_ms(40); PORTC = 0b00000100; _delay_ms(40); } } Mein verwendeter Controller ist der Atmega
-
Thread
Negation in if Abfrage => Problem
Ja, genau darum gehts. Scheiß Standart ;-) aber bei: PORTC &= ~(1<<PORTC2); bleibts doch auch bei 8bit...
Wo ist da dein Problem? Das ist doch [c] PORTC &= ~(1<<2); PORTC &= ~4; PORTC &= 0xFFFB; [/c] und der Compiler weiss, dass dies als Bit-Operation zum gleichen Ergebnis führt wie [c] PORTC = (int)PORTC & 0xFFFB; [/c] Entscheidend ist was
-
Thread
Peltier PWM ATMEGA48
= Output Config Pinb.1 = Output Config Portd.6 = Output Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 'Display Parameter Config Lcd = 20 * 2 'config LCD Cursor Off Config
-
Thread
Warum läuft BCD Schalter Abfrage nicht ? (Atmega8)
.2 = Output Config Pinc.3 = Output Config Pinc.4 = Output Config Pinc.5 = Output Rr Alias Portc.2 Gr Alias Portc.0 Br Alias Portc.1 Rl Alias Portc.5 Gl Alias Portc.3 Bl Alias Portc.4 Bit1 Alias Pind.2 Bit2 Alias Pind.3 Bit4 Alias Pind.4 Bit8 Alias Pind.5 Declare Sub Bcd_auswahl
.2 = Output Config Pinc.3 = Output Config Pinc.4 = Output Config Pinc.5 = Output Rr Alias Portc.2 Gr Alias Portc.0 Br Alias Portc.1 Rl Alias Portc.5 Gl Alias Portc.3 Bl Alias Portc.4 Schalter Alias Pind Declare Sub Bcd_auswahl Dim Stellung As Byte Dim Pwm As Byte Dim Warte As
-
Thread
Bascom: Mega16:mehrere Pins schalten nicht auf high
'LED aus Waitms C Set Portc.1 Waitms C Reset Portc.0 Waitms C Set Portc.2 Waitms C Reset Portc.1 Waitms C Print C Return
Set Portc.2 Waitms C Reset Portc.2 Waitms C Loop
-
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
Entprellung mit Dannegger-Code auf unterschiedlichen Ports
auch einen Zwischenschritt über eine Variable vorstellen: KEY_PIN_neu = ((PORTB |= _Taster1) | (PORTC |= _Taster2)); i = key_state ^ ~KEY_PIN_neu; [...] [/c] Könnt ihr das nachvollziehen?
deine Tasten an "aufeinanderfolgenden" Bist hängen - mit jeweisl einer Taste an Bit 0 von PORTB und PORTC ginge das nicht so einfach. [c] KEY_PIN_neu = ((PORTB |= _Taster1) | (PORTC |= _Taster2)); i = key_state ^ ~KEY_PIN_neu; [/c] ???? Damit komme ich nicht klar. Dazu finde ich auch keine
-
Thread
Tasterabfragen Problem
define LED PC1 int main(void) { DDRC |= (1<<LED); DDRC &= ~(1<<Menu_Taster); PORTC |= (1<<Menu_Taster); while(1) { if (PINC & (1<<Menu_Taster)) PORTC &= ~(1<<LED); else PORTC |= (1<<LED); } } So funktioniert zumindest schon einmal die Taster Abfrage richtig
lcd_initialisieren(); lcd_led(1); DDRC |= (1<<LED); DDRC &= ~(1<<Menu_Taster); PORTC |= (1<<Menu_Taster); lcd_zahl(1,1, a, 2); lcd_zahl(1,4, b, 2); while(1) { if (PINC & (1<<Menu_Taster)) a++; else b++; } }
-
Thread
Hat jemand Erfahrung mit dem 2,4GHz-Transceiver RFM70?
TX-Seite: Ich sende ein Datenbyte (0xAF) Das FIFO-Status_Register lese ich permanent aus (Ausgabe am PORTC) und erhalte 0010 0001 also TX FIFO full und RX FIFO empty. IRQ = immer 0. RX-Seite: Ich lese das FIFO (ist immer 0) und das FIFO-Status_Register permanent aus (Ausgabe am PORTC) und erhalte
/ CE = 1 while(1) { Payload_RX(0x61, 0x00); // Read FIFO Payload PORTC = SPDR; _delay_ms(2000); Payload_RX(0x17, 0x00); // Payload RX: command read FIFO status register & send 0x00 dummy byte PORTC = SPDR; _delay_ms(1000);
-
Thread
"lcd-routines.h"
kopiert. Frage: Wie passe ich die LCD-Portpins an meine HW Umgebung an ? Ich benötige Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 In der lcd-routines.h ist folgendes definiert: #define LCD_PORT PORTD #define LCD_DDR DDRD #define
@ Dietmar S. (jasmin) >DDR, RS und EN wie auch den kompletten Port kann ich also auf PortC >(oder wohin auch immer) ändern, Ja. >wie kann ich aber DB4-DB7 ändern, respektive wie kann man das völlig >variabel gestalten so das ich beispielsweise auch über diverse Ports >verschieden
-
Thread
Rückgabewert von Funktion wird nicht übegeben
Was willst du bezwecken mit: >> PORTC=abc(); > habe den port jetz als eingang geschaltet. Wenn du einen Wert ausgeben willst, musst du PORTC auf AUSGANG setzen.
PORT C ist als Ausgang geschaltet. wenn ich schreibe PORTC=PIND; funktionert es. Wenn ich schreibe PORTC=abc(); dann funktioniert es nicht...
-
Thread
Initalisierung
Portb.3 = 1 Waitms 20 Portb.4 = 1 Waitms 20 Portb.5 = 1 Waitms 20 Portc.0 = 1 Waitms 20 Portc.1 = 1 Waitms 20 Portc.2 = 1 Waitms 20 Portc.3 = 1 Waitms 20 Portc.2 = 0 Waitms 10 Portc.1 = 0
Waitms 20 Portb.4 = 0 Waitms 20 Portb.5 = 1 Waitms 20 Portb.5 = 0 Waitms 20 Portc.0 = 1 Waitms 20 Portc.0 = 0 Waitms 20 Portc.1 = 1 Waitms 20 Portc.1 = 0 Waitms 20 Portc.2 = 1 Waitms 20 Portc.2 = 0 Waitms 20 Portc.3 = 1 Waitms 20
-
Thread
Assembler - Funktionen in C einbinden
Test-Prog auch mit normalen Labels ausprobiert und es funktionierte. Anscheinend lag das Problem an out PORTC,temp erzetzt durch out _SFR_IO_ADDR(PORTC),temp. Das kann ich allerdings nicht ganz nachvollziehen da in der io.h bzw. in der iom16.h PORTC schon mit der adresse ersetzt wird: #define PORTC _SFR_IO8
Schleifenanfang. > Das kann ich allerdings nicht ganz nachvollziehen da in der io.h > bzw. in der iom16.h PORTC schon mit der adresse ersetzt wird: > #define PORTC _SFR_IO8(0x15) Wenn Du Dir jetzt noch die Definition von _SFR_IO8() ansiehst, kannst Du es vielleicht eher nachvollziehen. :-) Diese Definitionen