-
Thread
problem mit Header Datei
(am ADC) { c=adc(0); if( c <= 158 ) { PORTD = ( 1 << LED1 ); PORTC=0x01; } else if( c <= 374){ PORTD = ( 1 << LED2 ); PORTC=0x00; _delay_ms(300); PORTC=0x01; _delay_ms(300); } else if( c < 1023) { PORTD = ( 1 << LED3 ); PORTC=0x00; _delay_ms(1000); PORTC=0x01; _delay_ms(1000); } else PORTD = 0; PORTC=0x00; } } void init_ports() { DDRD=0xFF; //PORTD als Ausgang
-
Thread
flankenerkennung mit exklusiv oder
ich es so versucht [c] uint8_t old,tick; int main(void) { while(1) { if (old^PORTC) { tick++; old = PORTC; } } } [/c] aber ich möchte das ich nur bei änderung des Portc3 tick incrementiert wirt! Endschuldige mich für meine Dummen Fragen !!!
Ich ändere in einem Timerinterrupt Portc3 nur zur simulation!!!! (Nachher werde ich das über einen externen Eingang machen und endsprechend auf Pin umschreiben ) Nochmal zu meiner Frage wie ich nur auf änderung des einen Bit (PORTC3
-
Thread
Midi Stepsequencer controller
' Tasten-Merker Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Dim I As Byte , J As Byte , X As Byte Config Portc.6 = Input 'launch btn Config
.2 = 1 ' internen Pull-Up aktivieren für Taster ' Portc.5 = 1 ' Portc.4 = 1 Portb.2 = 0 Portb.1 = 0 Goto Start_routine Start_routine: 'Welcome-screen Cls I = 0 Locate 1 , 1 Lcd "Welcome :)"
-
Thread
Keine Anzeige auf dem LC Display AVR
PORTD |= 0x01; _delay_ms(1); PORTD = 0x00; _delay_ms(1); } lcdinit () { PORTC = 0x00; PORTD = 0x00; _delay_ms(40); PORTC = 0x30; //8bit lcdenable(); PORTC = 0x30; //8bit lcdenable(); PORTC = 0x30; //8bit lcdenable
PORTC = 0x06; //ENTRY MODE SET lcdenable(); PORTC = 0x0F; //Display on lcdenable(); PORTC = 0x01; //Display clr lcdenable(); PORTC = 0x02; //home
-
Thread
8x8 Matrix Laufschrift
Multiplexen der Anzeige */ ISR(TIMER0_COMP_vect) { static volatile uint8_t spalte = 0; PORTC &= ~((1<<PC7) | (1<<PC6) | (1<<PC5) | (1<<PC4) | (1<<PC3)); PORTB &= ~((1<<PB2) | (1<<PB1) | (1<<PB0)); // neue Zeilendaten ausgeben PORTA = ~(VRAM)[spalte]; // Spalte aktivieren switch (spalte) { case 0: PORTC |= (1<<PC3); break; case 1: PORTC |= (1<<PC4); break; case 2: PORTC |= (1<<PC5); break; case 3: PORTC |= (1<<PC6); break; case 4: PORTC |= (1
-
Thread
AVR ATmega Probleme mit Timer1
); // Timer/Counter1 Output Compare Match A Interrupt Enable } ISR (TIMER1_COMPA_vect) { PORTC ^= ( 1 << PC5 ) } [/c]
PORTC auf Ausgang gestellt?
-
Thread
Phänomen oder Fehlbedienung?!
zum Problem: Wenn (wie im Codebeispiel) die Zeilen [C] if (clock0.taktbyte.bit2 == 1) { PORTC |= (1 << PC2); } else { PORTC &= ~(1 << PC2); } [/C] in der Endlosschleife stehen, bleibt der Wert an PORT C auf 0x00. Stehen diese Zeilen stattdessen in der ISR...: [C] SIGNAL(SIG_OVERFLOW0
{ TCNT0 = STARTVAL_DEB; clock0.cval++; if (clock0.taktbyte.bit2 == 1) { PORTC |= (1 << PC2); } else { PORTC &= ~(1 << PC2); } } [/C] ... macht das Programm was es soll und PC2 blinkt. Kann mir jemand sagen, was ich falsch mache? Danke für jeden Tipp
-
Thread
Probleme mit Display (KS0108B)
ldi r16, 255 out DDRB, r16 out DDRC, r16 pop r16 ret ENABLE: sbi PORTC, PC2 nop cbi PORTC, PC2 ret SELECT1: cbi PORTC, PC4 sbi PORTC, PC3 ret SELECT2: cbi PORTC, PC3 sbi PORTC, PC4 ret SENDCOM: cbi PORTC, PC0 cbi PORTC, PC1 out PORTB, r16 rcall ENABLE ret SENDDAT: sbi PORTC, PC0 cbi PORTC, PC1 out PORTB, r16 rcall ENABLE ret [/avrasm]
-
Thread
Tasterverriegelung und Tasterentprellung
an. [c] if(get_key_press(1<<KEY_2))// nur Taste press { // LED an PORTC &= ~(1<<PC1); } if(get_key_press(1<<KEY_3)) // nur Taste press { // LED aus PORTC |= (1<<PC1); } [/c] Verwende ich die Tasterentprellung von Peter, ist es
|=(1<<PA2); // EN ein PORTC &= ~(1<<PC5); // LED 5 an } } [/c] mfg.
-
Thread
AD9850 braucht Hilfe
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); } static void
[i]; while ((SPSR & _BV(SPIF)) == 0) /* wait */; } /* Update now. */ PORTC |= _BV(1); PORTC &= ~_BV(1); } [/c] Ist nicht sehr gut abstrahiert, gebe ich zu. ;-)
-
Thread
HD44780-LCD an ATMega16 reagiert nicht auf Programm
programmiert wird über ISP mittels Atmel AVRISPmkII. Das Display ist wie folgt angeschlossen: LCD-DB7 an PORTC7 LCD-DB6 an PORTC6 LCD-DB5 an PORTC5 LCD-DB4 an PORTC4 LCD-DB3 an GND LCD-DB2 an GND LCD-DB1 an GND LCD-DB0 an GND LCD-RW an GND LCD-RS an PORTB2 LCD-EN an PORTB4 Nach Anlegen der Versorgungsspannung
an das Programm angepasst. Hast du nicht. Denn mit /dem/ Code ist diese Belegung LCD-DB7 an PORTC7 LCD-DB6 an PORTC6 LCD-DB5 an PORTC5 LCD-DB4 an PORTC4 LCD-RS an PORTB2 LCD-EN an PORTB4 erst mal schlicht und einfach gesagt nicht möglich. Dieser Code geht davon aus, dass alle LCD-Anschlüsse
-
Thread
Beamer RS232 vom AVR aus (von PC geht)
$framesize = 40 $baud = 38400 Config Rc5 = Pind.6 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.0 , Rs = Portd.7 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Cls Enable Interrupts Dim Address As Byte
-
Thread
[V] Mini GPS Module - SkyTraq Venus 6 (22x22x8mm)
char c; while (1) { c = uart_getc(); if ( c & UART_NO_DATA ) { PORTC |= (1 << 0); } else { if ( c & UART_FRAME_ERROR ) { PORTC |= (1 << 1); } if ( c & UART_OVERRUN_ERROR ) { PORTC |= (1 << 2); } if ( c & UART_BUFFER_OVERFLOW ) { PORTC |= (1 << 3); } PORTC |= (1 << 4); } } return 0; } [/c]
-
Thread
At Mega 8 Codeabfrage
0b111100; PORTC = 0b001000; waitMs(200); // 1 break; } break; case 0b110100 : DDRD = 0b00000000; PORTD = 0b10000000; DDRB = 0b111100
= 0b111100; PORTC = 0b001000; waitMs(200); // * break; } break; default : PORTC = 0x00; break; } } } Leider
-
Thread
Serielle Daten auswerten (Bascom 2.0.7.1)
Dim V As Bit Dim M As Bit Dim K As Bit Dim Mi As Bit Dim R As Bit ' Ein-/Ausgänge Config Portc = Output 'Port B als Ausgang Config Porta = Output '1 Ausgang, 0 Eingang 'Ausgänge: Segment_a Alias Portc.7 Segment_b Alias Portc.6 Segment_c Alias Portc.5 Segment_d Alias Portc.4 Segment_e Alias Portc.3 Segment_f Alias Portc.2 Segment_g Alias Portc.1 Dp Alias Portc.0 Ziffer_6 Alias Porta.0 Ziffer_5 Alias Porta.1
-
Thread
Atmega644 PORTB geben immer 0,8V aus
define F_CPU 20000000UL #include <util/delay.h> #include <avr/io.h> int Loeschen() { PORTC=0b11111111; PORTA=0b00000000; PORTD=0b00000000; PORTC=0b00000000; } int main(void) { DDRA=0b11111111; DDRB=0b11111111; DDRC=0b11111111; DDRD=0b11111111; while(1) { Loeschen(); PORTD=0b11111111; PORTC=0b11111111; PORTA=0b11111111; } }
-
Thread
RC5-Auswertung Problem
Letzter_befehl As Byte , Startwert As Byte Dim Interrupt_vektor As Byte 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 Config Timer0 = Timer , Prescale = 8 On Ovf0 Tim0_isr Enable Timer0 Startwert = 125
-
Thread
2 i2c ports in bascom mit mega8 ode mega 88
' I/O port control bits Return I2cstop Read_sp5055: Config Scl = Portc.5 Config Sda = Portc.4 I2creceive Addr2 , Pllstat Return Write_sp5055_1: Config Scl = Portc.6 Config Sda = Portc.7 I2cstart 'start
' I/O port control bits Return I2cstop Read_sp5055_1: Config Scl = Portc.6 Config Sda = Portc.7 I2creceive Addr2 , Pllstat Return [/pre] aussehen ist das ok?
-
Thread
EA DIP128-6 LCD Ansteuerprobleme (Wo liegt der Fehler im Code?)
cbi PORTD,6 ;write cbi PORTD,5 ;instruction ldi r16,0b01000000 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 ;write data cbi PORTD,6 ;write sbi PORTD,5 ;data ldi r16,0b00000000 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 ;write data cbi PORTD,6 ;write sbi PORTD,5 ;data ldi r16,0b11111111 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 ;write data cbi PORTD,6 ;write sbi PORTD,5 ;data ldi r16,0b10101010 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 jmp start
-
Thread
Erste Versuche mit dem Entwicklungsboard MikroElektronika EasyPIC v7
// Configure PORTB pins as digital ANSELC = 0; // Configure PORTC pins as digital TRISB0_bit = 1; // set RB0 pin as input TRISC = 0x00; // Configure PORTC as output LATC = 0xAA; // Initial PORTC value oldstate = 0; do { if (Button(&PORTB, 0, 1, 1)) { // Detect logical one oldstate = 1; // Update flag } if (oldstate
-
Thread
ADC Wandler des ATMega32
5/1023; PORTC = i; } } [/c]
(ADCSRA & (1<<ADSC) ); //i=ADCW*5/1023; PORTC = ADCH; } } [/c] Besten Danke :)
-
Thread
ATMEGA8 Standartoperation(total easy wahrscheinlich)
bekomme kein stehendes Bild. Hier der Quellcode: while(1) { if( PIND & (1<<PIND3) ) { PORTC |= (1<<PC0); } else { PORTC &= ~ (1<<PC0); } if ( PIND & (1<<PIND2) ) { PORTC |= (1<<PC1); } else { PORTC &= ~ (1<<PC1); } if ( PIND & (1<<PIND0) ) { PORTC |= (1<<PC2); } else { PORTC &= ~ (1<<PC2); }
-
Thread
Bascom Unerklärlicher Fehler im Programm
deklarieren Declare Sub On_int0 Declare Sub On_int1 'LCD Initialisieren Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _ Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cls Cursor Off 'PD2(Int0) und PD3(INT1) als Eingang , PD7 und PD7 als Servo und PB0 als
deklarieren Declare Sub On_int0 Declare Sub On_int1 'LCD Initialisieren Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _ Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cls Cursor Off 'PD2(Int0) und PD3(INT1) als Eingang , PD7 und PD7 als PB0(Servo) und PB0
-
Thread
Multiplex 7-Segment-Anzeige mit gemischten Ports
... } void Multiplex(void) { ?????? // Bezug zum Timer2?? if(muxflag==0) { PORTC |= (1<<PC5); PORTC &= ~(1<<PC6); PORTC &= ~(1<<PC7), } if(muxflag==1) { PORTC &= ~(1<<PC5); PORTC |= (1<<PC6); PORTC &= ~(1<<PC7); } if(muxflag==2) { PORTC &
) { PORTA = num[z-1]; PORTC &= ~(1<<PC5); PORTC |= (1<<PC6); PORTC &= ~(1<<PC7); } if(muxflag==2) { PORTA = num[h-1]; PORTC &= ~(1<<PC5); PORTC &= ~(1<<PC6); PORTC |= (1<<PC7); muxflag=0;
-
Thread
[C] Merkwürdige Erscheinung
Programmierstil, die können böse Seiteneffekte haben. Schreib mal beim ATmega48: [c] PORTD = PORTC = 0xFF; [/c] Und dann staune, warum PORTD = 0x7F ist. Also vergiß diese fehlerträchtigen Kettenzuweisungen ganz schnell wieder! Peter
Peter Dannegger schrieb im Beitrag #2894106: > Stimmt, PORTC ist 7 Bit breit. Und da die Kettenzuweisung ja wieder > zurücklesen muß, kriegt PORTD auch nur 7 Bit gesetzt. *Muss* sie? Ich finde das gerade eine ziemlich spannende Fragestellung. Leider finde
-
Thread
Folientastatur
folientastatur&fh_refview=search) folgendermaßen angeklemmt: die ersten drei leitungen (Spalten) PORTC0-2 die anderen 4 (Zeilen) an PORTC3-6 Hier das Prog ============================================================================ void main(void) { ////////////////////////////////////
Zahl = '*'; lcd_puts("*"); } _delay_ms(50); //// Spalte_2 //// PORTC |= 0x07; //Port C0-2 auf HIGH setzen PORTC &= 0xFD; //Port C1 LOW setzen [Spalte 2] if( ( PINC & ( 1 << PC3 ) ) == 0 ) //Zeile_1 { Zahl = 2; lcd_puts("
-
Thread
4 Pins von PortC tun nicht was sie sollen
Platine aufgebaut, weil ich erst dachte der Chip ist hin. Im Anhang ist das Bild. Pin 2,3 und 5 von PortC sind die ganze Zeit high und Pin 4 ist die ganze Zeit low. Ich hab schon im ausgeschalteten Zustand gemessen. Die Pins sind nicht kurzgeschlossen sondern hochohmig. Aber aktiv reagieren sie gar
Ausgang ldi temp, 0xFF out DDRC, temp rjmp main main: ldi temp, 0xFF out PORTC, temp rcall warte100ms ldi temp, 0x00 out PORTC, temp rcall warte100ms rjmp main [/avrasm]
-
Thread
12 LEDs an ATMega32 (Port A + C)
{ DDRA = 0xFF; DDRB = 0xFF; DDRC = 0xFF; DDRD = 0b11100000; PORTA = 0xFF; PORTC = 0xFF; while(1) {} return 0; } [/c] Das funktioniert, alle LEDs leuchten und an allen Pins liegen ~5V an. Schalte ich jetzt PortC komplett aus, habe ich schon das erste seltsame Verhalten
komplett aus, PORTC komplett an. [c] DDRA = 0xFF; DDRB = 0xFF; DDRC = 0xFF; DDRD = 0b11100000; PORTA = 0x00; PORTC = 0xFF; [/c] Jetzt leuchten ausschließlich die hintern 2 LEDs an PortC (PC2
-
Thread
delay Funktion arbeitet falsch??
>PORTC = (1<<3); >PORTC = (0<<3); Das funktioniert aber nur zufälligerweise richtig.
flo wrote: >>PORTC = (1<<3); >>PORTC = (0<<3); > wie mache ich es denn "besser" oder korrekter?? PORTC |= (1<<PC3); // High PORTC &= ~(1<<PC3); // Low
-
Thread
ATmega1284p - unerklärliche Phänomene
Lösungsansätze: Beispiel, die einen Reset auslösen: [c] int main(void) { DDRC = 0xFF; PORTC = 0xFF; while(1) { PORTC = 0xF0; _delay_ms(100); // <~ RESET PORTC = 0x0F; // wird nie erreicht _delay_ms(100); } return 0; } [/c] selbes Beispiel mit Watchdog
aus (allerdings ist die Lösung für mich nicht tragbar): [c] int main(void) { DDRC = 0xFF; PORTC = 0xFF; while(1) { PORTC = 0xF0; wdt_enable(WDTO_8S); _delay_ms(100); wdt_reset(); wdt_disable(); PORTC = 0x0F; wdt_enable(WDTO_8S); _delay_ms
-
Thread
Anfängerproblem: mega16 & lcd (Bascom)
Portd.0 frei. Ideen? Danke & Gruß Matthias $regfile "m16def.dat" $crystal = 1600000 Config Portc = Output Config Portd = Output Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 20 * 2 Config Lcdbus = 4 Portd.0 =
keinen Zeilennummern-Anzeigemodus gibt. [pre] $regfile "m16def.dat" $crystal = 1600000 Config Portc = Output Config Portd = Output Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 20 * 2 Config Lcdbus = 4 Portd.0 =
-
Thread
Atmega Midi und Bascom
Onrxd Enable Urxc Enable Interrupts Dim Rxbyte As Byte Dim I As Integer I = 0 Led1 Alias Portc.5 Config Portc.5 = Output Led2 Alias Portc.4 Config Portc.4 = Output Led3 Alias Portc.3 Config Portc.3 = Output Led4 Alias Portc.2 Config Portc.2 = Output Led5 Alias Portc.1 Config Portc.1 = Output Led6 Alias Portc.0 Config Portc.0 = Output Cls Do Loop Onrxd: If I = 1 Then Rxbyte = Udr Led1 = Rxbyte.0 Led2 = Rxbyte.1
-
Thread
Bascom LCD an I2C AN118
ist die Leitung ? LAN-Kabel geht dafür nicht !! Sind auch die Ports definiert ? Config Scl = Portc.5 Config Sda = Portc.4 zum Bleistift mfg Oliver
$crystal = 8000000 $lib "Lcd_i2c.lib" Const Pcf8574_lcd = &H40 'I2C Adresse Config Scl = Portc.0 'I2C SCL Pin Config Sda = Portc.1 'I2C SDA Pin Dim _lcd_e As Byte _lcd_e = 128 'LCD im 4-Bit Mode betreiben Cls 'loesche das LCD Display Locate
-
Thread
Lerne Assembler - brauche eure Hilfe
r17 #define rChannelByte r18 #define rBit1 r19 #define rBit2 r20 #define CHIPSEL_HIGH sbi PORTC, 0 #define CHIPSEL_LOW cbi PORTC, 0 #define DOUT_HIGH sbi PORTC, 1 #define DOUT_LOW cbi PORTC, 1 #define CLOCK_HIGH sbi PORTC, 2 #define CLOCK_LOW cbi PORTC, 2 ;--------------
Master (STM32). Johannes PS: Damit es nicht zu Verwirrungen führt: Ich initialisiere teile von PORTC als Ausgang. Im Kommentar steht was von SCK usw. Das sind die Leitungen an denen die ADC's hängen. Die sind momentan noch irrelevant.
-
Thread
PIR und R vs. Pullup
und soll gleichzeitig was ausgeben? PORTC hat überhaupt keine Funktion?
Ich vermute, da soll eher so etwas wie "PORTC^=(1<<PC2)" stehen.
-
Thread
Tastenenprellung Deluxe P. Dannegger
PORT_OPC_PULLUP_gc; PORTD.PIN6CTRL = PORT_OPC_PULLUP_gc; PORTD.PIN7CTRL = PORT_OPC_PULLUP_gc; PORTC.DIR = 0xff; PORTC.OUTCLR = 0xff; while(1) { if(get_key_press(PIN4_bm)) { PORTE.OUTTGL = 0x77; } } } [/c]
Clock auf 32Mhz einstellen*/ CLK.CTRL = CLK_SCLKSEL_RC32M_gc; /* Pullup für alle Taster */ PORTC.PIN3CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN2CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN0CTRL |= PORT_OPC_PULLUP_gc; PMIC.CTRL |= PMIC_LOLVLEN_bm; // Lo Interrupt Enable init_timer(
-
Thread
3 bit Zähler in der Mitte eines Ports ausgeben ?
Hallo, ich habe ein riesen Problem, ich habe einen 3 bit Zähler und den möchte ich anstelle von Portc 0 - Portc 2, auf Portc 3 - Portc 5 ausgeben? Beim uC handelt es sich um einen Atmega16 , und das ganze wird im Bascom geschrieben. Könnte mir da jemand weiterhelfen? Das wäre super !
nix schieben,maskieren oder sonstigen quatsch :) dass geht doch *ganz* einfach mit 3 Befehlen portc.3 = zaehler.0 portc.4 = zaehler.1 portc.5 = zaehler.2 nicht verzahgen, Charly fragen ;) vlG Charly
-
Thread
Ports mit EODER verknüpfen
am Ausgang. Hier der Programmauszug: ............. Freq=TCNT0; if(Freq >= 128){ PORTC &= ~(1<<PC1); } else { PORTC |= (1<<PC1); } if(Freq >= 256){ if(PINC & (1<<PC0)) { PORTC &= ~(1<<PC0); } else { PORTC |= (1<<PC0); } PORTB ^= PC0
? (8-bit oder 16-bit Counter) > if(PINC & (1<<PC0)) > { > PORTC &= ~(1<<PC0); > } > else > { > PORTC |= (1<<PC0); > } > > PORTB ^= PC0 ^ PC1; //Hier sollte ein um 90 Grad Phasenverschobenes > //Rechteck zu PC0 rauskommen!
-
Thread
LED Matrix Zeile für Zeile leuchten lassen
Was hat es damit PORTB |= (1<<PB2) | (1<<PB4); // Schieberegister SRCLR, RCLR auf High PORTC |= (1<<PC5); // D-Ausgang des Multiplexer auf 1 auf sich. PORTC wird in meinem Programm nicht benutzt und um PB2 und PB4 hab ich mich nicht gekümmert.
setzen das nichts leuchtet und dann Zeilen anschalten PORTA = ( PORTA & ~0x70 ) | RowCodes1[CurRow]; PORTC = ( PORTC & ~0x23 ) | RowCodes2[CurRow]; PORTC = ( PORTC & ~0x3C ) | RowCodes3[CurRow]; PORTB |= ( 1 << PB3 ); // Schieberegister zum durchschalten der Bits bringen PORTB &= ~( 1 << PB3 );
-
Thread
nRF24L01 defekt?
into String lcd_string(itoabuffer);*/ //folgendes eingefügt: int test = zaehler; aus(PORTC,PC0); aus(PORTC,PC1); aus(PORTC,PC2); aus(PORTC,PC3); aus(PORTC,PC4); aus(PORTC,PC5); aus(PORTB,PB6); aus(PORTB,PB7); if (test & 0b00000001) { an(PORTC,PC0); } if (test & 0b00000010) { an(PORTC,PC1); } if (test & 0b00000100) { an(PORTC,PC2); } if (test & 0b00001000) { an(PORTC,PC3); } if (test & 0b00010000) { an(PORTC,PC4); } if
-
Thread
LCD funktioniert nur an Port D (ATmega644P)
Helfer schrieb im Beitrag #2198276: > PORTC ist tückisch, wenn man die Werkseinstellung für JTAG (enabled) > nicht ändert. Würde es reichen die Fuses JTAGEN und SPIEN zu deaktivieren, um alle Pins an PortC als normale Pins ansprechbar zu
############# [/code] Allerdings funktioniert die Initialisierung und Ausgabe der Zeichen auf PortC immernoch nicht :(
-
Thread
Von Türkisch auf Deutsch (ASM)
LCD_TIZ MOVF LSB,W MOVWF TIZ CALL GOSTER CALL TIZYAZ GOTO TIZTEST TIZYAZ BCF PORTC,0 BCF PORTC,1 BCF PORTC,2 BCF PORTC,3 BTFSC TIZ,0 CALL SET0C BTFSC TIZ,1 CALL SET1C BTFSC TIZ,2 CALL SET2C BTFSC TIZ,3 CALL SET3C RETURN ;***********
************************ SET0C BSF PORTC,0 RETURN SET1C BSF PORTC,1 RETURN SET2C BSF PORTC,2 RETURN SET3C BSF PORTC,3 RETURN SET4C BSF PORTC,4 RETURN SET5C BSF PORTC,5 RETURN SET6C BSF PORTC
-
Thread
IO-Pins als Bitfeld zusammenfügen und maskieren (AVR)
//welche Ports werden für die Motoren verwendet volatile uint8_t * Port_Mask[ARRAY_LENGTH] = { &PORTC, &PORTC, &PORTC, &PORTC, &PORTA, &PORTA, &PORTA, &PORTA, &PORTB }; //mit welchen Pins sind die Motoren verbunden uint8_t Pin_Mask[ARRAY_LENGTH] = {PC7, PC6, PC5, PC4, PA7, PA6, PA5, PA4, PB0};
pin) //»a->b« Kurzform für »(*a).b« #define SBIT(x,y) SBIT_(x,y) #define MOTOR1 SBIT( PORTC, 7 ) #define MOTOR1_DDR SBIT( DDRC, 7 ) #define MOTOR2 SBIT( PORTC, 6 ) #define MOTOR2_DDR SBIT( DDRC, 6 ) #define MOTOR3 SBIT( PORTC, 5 ) #define MOTOR3_DDR SBIT( DDRC, 5 ) #define
-
Thread
LCD-Modul MC1001AW-TGR
BASCOM Code : [pre]$regfile = "M8def.dat" $crystal = 1000000 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 Lcd "Lichtomat " do:loop [/pre]
-
Thread
LCD Problem mit blafusel´s Routinen
delay_loop_2 (((F_CPU/4000)*us)/1000) // wartet µs void lcd_write_init(uint8_t data) { PORTC = (data>>4); // output high nibble only,(!) zzgl. Zustand für RS-Leitung lcd_flash_e (); } // Enable-Leitung toggeln void lcd_flash_e () { PORTC = PORTC | ( 1<<DDC5 ) ; // Enable = HIGH delay(1); // kurz warten, damit Flanke entsteht PORTC = PORTC & ~( 1<<DDC5 ) ; // Enable = LOW delay(64); // Warten, bis der durch Enable angelegte Befehl hoffentlich verarbeitet wurde } // Kommando oder Zeichen an Display senden
-
Thread
manchmal abruptes Ein + ausschalten der LED
/------------------------------------------------------------------------ void init() //PORTC 0,1 und D2 Reserve Ein u Ausgänge { // Ports initialisieren DDRB |= _BV(1); // PORTB1 auf Ausgang (ausgabe der pwm für faden der lichter DDRC |= 0xff; //PORTC auf Ausgänge f LEDs
if (PINB &(1<<PINB1)){ //Ports C2-5 mit PORTB1 synchronisieren PORTC|=(1<<PC5); PORTC|=(1<<PC4); PORTC|=(1<<PC3); PORTC|=(1<<PC2);} else{ PORTC &=~(1<<PC5); PORTC &=~(1<<PC4); PORTC &=~(1<<PC3); PORTC &=~(1<<PC2);} } // Mainloop-Ende } //--
-
Thread
Pin Change Interrupt - Controller hängt sich auf ab 40kHz - ATMega168
PCIE2); //read the countet Interrupts PCINT_buffer[PCINT_STATE] = PCINT_count; PORTC = (PORTC & ~(1<<PC3 | 1<<PC4)) | PCINT_STATE++; //restore counter value PCINT_count = 0; //enable PIN Change Interrupt PCICR |= (1 << PCIE2); } [/c]
nicht "gast" schrieb im Beitrag #2712043: > PORTC = (PORTC & ~(1<<PC3 | 1<<PC4)) | PCINT_STATE++; PORTC = (PORTC & ~(1<<PC3 | 1<<PC4)) | PCINT_STATE++ << PC3;
-
Thread
Ganz kleines UART timing problem (?)
high part der Addresse) PORTB = (addr >> 10) & 0xFF; addh = (addr >> 18) & 0x3; PORTC = addh | N_PROG; PORTC = addh | N_PROG | HADR; PORTC = addh | N_PROG; //zweiter Teil der addresse (low part der Addresse) PORTB = addr & 0xFF; addh = (addr >> 8) & 0x3; PORTC = addh | N_PROG; PORTC = addh | N_PROG | LADR; PORTC = addh | N_PROG; //Ausgabe aktivieren PORTC = addh | N_PROG | OUTPUT_ENABLE; //
-
Thread
Bit 2 bis 5 als EINE Variable ansprechen
Bits 0-3 gesetzt anstatt Bit 2-5. Ich suche irgendwas in der Form von: #define BCD_Output [PORTC.2;PORTC.3;PORTC.4;PORTC.5] Vielleicht könnte ich selbst einen Datentyp definieren (#typedef) aber ich weiss nicht, was ich schreiben soll...
nicht, ob CV mit dieser Terminologie arbeitet, aber so ungefähr wird es gehen: #define LCD_PORT(X) PORTC = ((PINC&0xC3)|X) Beim GCC: #define LCD_PORT(X) outp((inp(PINC)&0xC3)|X,PORTC) Gruß Olaf
-
Thread
Port C am ATmega8
DDC4)|(1<<DDC3)|(1<<DDC2)|(1<<DDC1); DDRD = (1<<DDD4)|(1<<DDD3)|(1<<DDD2)|(1<<DDD1)|(1<<DDD0); PORTC |= _BV(1); PORTC |= _BV(2); PORTC |= _BV(3); PORTC |= _BV(4); [/c] Kennt jemand das Problem? Danke schon im Voraus R. Strub
Volt, wie der Chip auch > gespiesen wird. Bist Du sicher, dass die Versorgungsspannung anliegt? PortC wird nicht von VCC versorgt sondern von AVCC. Es gehören immer alle GNDs und VCCs angeschlossen. ...