-
Thread
Anfänger braucht Hilfe bei C Programmierung
oben kaum verstehe. Wenn ich ein Bit/Pin als Ausgang setzen möchte, würde ich so etwas wie [c] PORTC |= (1 << PC0); [/c] schreiben. Das ist das selbe wie [c] uint32_t current_bitmask = PORTC; PORTC = ( current_bitmask | (1 << PC0) ); [/c] Gruß Daniel
( PIND,2 ) ) { > ( PINC,0 ) |= (1<<1); // Taster ist gedrückt > } > else { > PORTC,0 &= ~(1<<1); // Taster ist nicht gedrückt > } Müsste da nicht PORTC statt PINC?
-
Thread
Timer PWM 50Hz Pd 20ms OCR0A float Probleme
---------------------------------------------------------------------------------------------- PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3); //---------------------------------------------------------------------------------------------- TCCR1A |= _BV(COM1A1) | _BV(WGM10); TCCR1B |=
-
Thread
Timer soll Variabel löschen in Bascom.
Eingabe As String * 1 Dim Zähler As Byte Dim Länge As Byte Starten: Porta = 0 Portb = 0 Portc = 0 Wait 1 Portc.7 = 1 Empfangen = "" Print " Start " 'Rückmeldungstest '------------------------------------------------ Warten: Namen = Left(empfangen
Paketen Restore Map1 For T = 1 To 73 Read Pixel : Portb = Pixel Waitus 40 Next T Portc.7 = 1 Gosub Lied Portc.7 = 0 '------------------------------------------------ ' Ende nach Zeit '------------------------------------
-
Thread
Timer/Counter0 Overflow Interrupt kommt nicht
PORTA = 0x00; DDRB = (1<<PB3) | (1<<PB4); DDRD = (1<<PD6) | (1<<PD7); DDRC = 0xFF; PORTC = 0x00; PORTC |= (1<<PC1); // Timer0: Enable Phase correct PWM(non-inverted), prescaler = 8 TCCR0A = (1<<WGM02) | (0<<WGM01) | (1<<WGM00) | (1<< COM0A1) | (0<< COM0A0); TCCR0B
-
Thread
ADC Atmega16 single mode
zur Beschaltung: //* SDK600 SOIC //* Prozessor: ATmega8 Quarzfrequenz: INT 1Mhz //* Eingaenge: PORTC PC0 <- Potentiometer (VCC PC0 GND) //* Ausgaenge: PORTB 8 LED'S //* //* Informationen zur Funktionsweise: Binäre Ausgabe des HI anteils des ADC auf PORTB //* //*****************************
-
Thread
5x5x5 LED Cube interrupt not working
0b00100000) | ((LED_Layer_0 << 2) & 0b01000000) | ((LED_Layer_0 << 0) & 0b10000000); PORTC = ((LED_Layer_0 << 11) & 0b00000001) | ((LED_Layer_0 << 11) & 0b00000010) | ((LED_Layer_0 << 11) & 0b00000100) | ((LED_Layer_0 << 11) & 0b00001000) | ((LED_Layer_0 << 21) & 0b00010000) | ((LED_Layer
0b00100000) | ((LED_Layer_0 << 2) & 0b01000000) | ((LED_Layer_0 << 0) & 0b10000000); PORTC = ((LED_Layer_0 << 11) & 0b00000001) | ((LED_Layer_0 << 11) & 0b00000010) | ((LED_Layer_0 << 11) & 0b00000100) | ((LED_Layer_0 << 11) & 0b00001000) | ((LED_Layer_0 << 21) & 0b00010000) | ((LED_Layer
-
Thread
SD_Karte Directory erstellen
char*)buffer_adc); ffwrite(0x0D); ffwrite(0x0A); ffclose(); PORTC ^=(1<<PC0); } } counter_sd++; _delay_ms(100); start_converting(); } } [/c]
char*)buffer_adc); ffwrite(0x0D); ffwrite(0x0A); ffclose(); PORTC ^=(1<<PC0); } } counter_sd++; _delay_ms(100); start_converting(); } } [/c]
-
Thread
MAX7219: 3-Segment-Anzeige macht Probleme
main (void) { DDRA = 0x00; DDRB = 0xE0; DDRC = 0xFF; DDRD = 0xFB; PORTC = 0xFB; max7219_init (); while(1) { max7219_hex (16, 1); max7219_hex (16, 2); max7219_hex (0, 3); long_delay (100); max7219_hex (16, 1
-
Thread
Volatile Variable wird immer als undeklariert gemeldet
void); void ladestatus_pruefen_anzeigen(void); init_cpuClock(); // Ein- Ausgangs Deklaration PORTC.DIR |= (1<<PIN0) | (1<<PIN1) | (1<<PIN2) | (1<<PIN3) | (1<<PIN4); PORTE.DIR |= (1<<PIN0) | (1<<PIN3); PORTD.DIR = 0b00000000; PORTA.DIR = 0b00000000; // Timer-PWM Konfiguration TCC0.CTRLB =
Interrupts aktivieren ( HIGH LOW MIDDLE) // LED`s #define led_pwm TCC0.CCA #define port_led PORTC #define pin_ledgruen PIN1 //LED Gruen #define pin_leddualgruen PIN3 //Dual LED Gruen #define pin_leddualrot PIN2 //Dual LED Rot //Ladecontroller #define port_stat PORTD #define
-
Thread
LCD an Atmega 168 anschließen
[code] Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6 [/code] Oh, Herr ....
durch ebendiesen, was das für den Programmablauf bedeutet kannst du dir ja denken. 2. Bei PortC fällt mir ein dass es da was gab mit JTAG-Fuse der muss ausgeschaltet sein wenn man den Port benutzen will Ich bin mir aber nicht sicher ob das bei dem 168 auch so ist.
-
Thread
Bekomme SPI im ATMega8 nicht zum Laufen
Pin für debug Impulse void SPI_enable(void); void debug(uint8_t); int main(void) { PORTC &= ~(1 << DEBUG1); // Debug Port auf low und Ausgang DDRC |= (1 << DEBUG1); PORTB &= ~((1 << SCK) | (1 << MOSI)); // SCK / MOSI Ports auf low und Ausgang DDRB |= (1 << SCK) | (1 <
uint8_t n) // Sendet n kurze Debug-Impulse { uint8_t x; for(x=1; x<=n; x++){ PORTC |= (1 << DEBUG1); PORTC &= ~(1 << DEBUG1); } return; } [/C]
-
Thread
Problem mit Assembler (ATmega8 / AVR-GCC)
beschreiben: Ausgänge CLR click OUT DDRB, click ; DDRB mit 0x00 beschrieben: Eingänge OUT PORTC, click ; LEDs ausschalten OUT PORTB, click ; und PullUps deaktivieren loop: IN click, PINB ; die Taster auslesen und OUT PORTC, click ; und auf die LEDs spiegeln RJMP
LDI click, input OUT _SFR_IO_ADDR(DDRB), click ; Eingänge LDI click, 0x00 OUT PORTC, click ; LEDs ausschalten OUT PORTB, click ; und PullUps deaktivieren loop: IN click, _SFR_IO_ADDR(PINB) ; die Taster auslesen und OUT _SFR_IO_ADDR(PORTC), click
-
Thread
AVR Ports und Pins Verständnisfrage
PORTB logisch 1 machen will, muss ich 00010000 anlegen. Jetzt sehe ich aber auf einer Grafik das z.B PORTC auf dem Atmega328 nur 7 Pins hat, alle anderen 8, deswegen bin ich mir irgendwie nicht mehr ganz sicher ob meine bisherige Überlegung stimmt. fg
mir irgendwie nicht mehr ganz sicher ob > meine bisherige Überlegung stimmt. Das stimmt schon so. PORTC hat einfach einen Pin weniger weil dafür im 28-Pin Gehäuse kein Platz mehr war, sonst ist er ein Port wie jeder andere.
-
Thread
Quellcode: DMX Empfänger Modul für ATxMega
CLK.CTRL = CLK_SCLKSEL_PLL_gc; } void UART_init(void){ // Pin from USARTC0 TxD C3 set to input PORTC.DIRCLR = PIN6_bm; // Asynchronous Modus USARTC1.CTRLC = (USARTC0.CTRLC & ~USART_CMODE_gm ) | USART_CMODE_ASYNCHRONOUS_gc; // No parity USARTC1.CTRLC = (USARTC0.CTRLC & ~USART_PMODE_gm )
-
Thread
Absturz nach Spannungsabschaltung
//Reed 0 DDRD &=~(1<<RFM_IRQ); //IRQ_IN //interne Pull-Up-Widerstände einschalten PORTC |= (1<<DIP1); //DIP-Schalter PORTC |= (1<<DIP2); //DIP-Schalter PORTC |= (1<<DIP3); //DIP-Schalter PORTC |= (1<<DIP4); //DIP-Schalter PORTD |= (1<<REED_0); //Reed-Kontakt
-
Thread
CNC Maschinchen
Indy = 4 End If 'ports setzen Portb.4 = My(indy).1 Portb.5 = My(indy).2 Portc.0 = My(indy).3 Portc.1 = My(indy).4 End Sub Sub Motorz(rz As Integer ) Indz = Indz + Rz 'wenn obergrenze erreicht, dann auf anfang setzen If Indz > 4 Then Indz = 1 End
erreicht, dann auf ende setzen If Indz < 1 Then Indz = 4 End If 'ports setzen Portc.2 = Mz(indz).1 Portc.3 = Mz(indz).2 Portc.4 = Mz(indz).3 Portc.5 = Mz(indz).4 End Sub
-
Thread
Spannung am ATmega32-Output unterschieldich
<512+5*step){ PORTC|=1<<3; } if(ADC>=512+5*step && ADC<512+6*step){ PORTC|=1<<4; } if(ADC>=512+6*step && ADC<512+7*step){ PORTC|=1<<5; } if(ADC>=512+7*step && ADC<512+8*step){ PORTC|=1<<6; } if(0){ PORTC|=1<<7; } else{ PORTD=0; PORTC=0; } } } zurück zur Frage: wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung
-
Thread
Vergleich HW-SW SPI
SW SPI einfach die zu schreibenden Bytes über ein Port (MOSI) über high und low übertagen, z.B.: PORTC.OUT = 1; PORTC.OUT = 0; Bei HW SPI werden die Daten (je 1Byte) in das Daten-Register geschrieben, z.B.: SPIC.DATA = Byte; Da müssen aber auch für jedes einzelne Bit ein High bzw. Low geschickt
SPI einfach die zu schreibenden > Bytes über ein Port (MOSI) über high und low übertagen, z.B.: > PORTC.OUT = 1; PORTC.OUT = 0; Ja - wie der Name "SW SPI" schon sagt, handelt es sich um eine Emulation einer SPI-Schnittstelle in Software. > Bei HW SPI werden die Daten (je 1Byte) in das Daten-Register
-
Thread
Wie Assembler ISR in C integrieren ?
"I" (_SFR_IO_ADDR(GPIOR1), [gp2] "I" (_SFR_IO_ADDR(GPIOR2), [port] "I" (_SFR_IO_ADDR(PORTC))); [/c]
Programm bisher aber noch nichts. Sollen die Kurven in einem externen Eeprom gehalten werden mit PORTC als Adresseingang? Im Augenblick liefert ein DAC an PORTC nur eine Sägezahnkurve. Gruß, Stefan
-
Thread
der Interrupt für xmega256A3 wird nicht ausgelöst
PIN9 DIGI_PORT.DIRSET = OPTO_PIN; // Port C Pin 0 opto-coupler as digital output PORTC.PIN0CTRL= PORT_OPC_WIREDANDPULL_gc; PORTC.INTCTRL = PORT_INT0LVL_LO_gc | PORT_INT0LVL_MED_gc | PORT_INT0LVL_HI_gc; PORTC.PIN3CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc; PORTC.INT0MASK
} /***********************************/ ISR(PORTC_INT0_vect) // interrupt für I/O Port { uart_send_string("\ninterrupt ausgeloest\n"); // Diese serielle Ausgabe wird nicht an Termite angezeigt perioden_dauer = zaehler_auswerten(); interrupt
-
Thread
TLC5940 mit Xmega
<asf.h> #include <avr/io.h> #include <stdint.h> #include <util/delay.h> #define GSCLK_PORT PORTC #define GSCLK_PIN 4 #define SIN_PORT PORTC #define SIN_PIN 5 #define SCLK_PORT PORTC #define SCLK_PIN 3 #define BLANK_PORT PORTC #define BLANK_PIN 2 #define DCPRG_PORT PORTC #define DCPRG_PIN
> #include <stdint.h> #include <util/delay.h> #include <avr/interrupt.h> #define GSCLK_PORT PORTC #define GSCLK_PIN 4 #define SIN_PORT PORTC #define SIN_PIN 5 #define SCLK_PORT PORTC #define SCLK_PIN 3 #define BLANK_PORT PORTC #define BLANK_PIN 2 #define DCPRG_PORT PORTC #define DCPRG_PIN
-
Thread
74hc574n porterweiterung für atmega32
, deshalb die Clockleitungen alle auf High setzen . Bitmuster das ausgegeben werden soll auf PORTC ausgeben . Taktleitung für das FlipFlop, das das Bitmuster erhalten soll zuerst auf 0 und dann wieder auf 1 setzen (Werteübernahme)
-
Thread
Port initialisierung
ich das Programm Laden möchte mit dem PICkit3 erkennt er alles Ports ( sprich PORTA und PORTB aber PORTC nicht ?) die werden nicht mal "Grün"
-
Thread
Einfache Schalter>LED-Schaltung: Register brauchen mehrere Sekunden zum Reset
gedrückt war. [c] #include <avr/io.h> #include <stdlib.h> int main(){ DDRB = 0x00; PORTC = 0xFF; DDRC = 0xFF; while(1) { if(PINB & (1<<PINB0) ){ PORTC = 0x00; } else{ PORTC = 0xFF; } } return 1; } [/c] Atmega 328P, als Entwicklungsboard
-
Thread
ATmega8 ADC-Durchschnittsberechnung
if( blinkCnt < 50 ) PORTC &= ~LED_RED; else PORTC |= LED_RED; } } else { // rot ist nicht auf blinken geschaltet // wie soll es stehen. Wenn
= ~DEZ_PUNKT; } else { PORTD |= DEZ_PUNKT; } PORTC = ~(1 << (stelle + 3)); //7-Segmentanzeige blinkt if (blinkDisplay == 0x00) { PORTC &= ~(DIGIT_1 & DIGIT_2 & DIGIT_3); //Aus } else { PORTC |= DIGIT_1 |
-
Thread
LCD an PORTC ATmega8
mov temp2, temp1 swap temp1 andi temp1, 0b00001111 out PORTC, temp1 rcall lcd_enable andi temp2, 0b00001111 out PORTC, temp2 rcall lcd_enable rcall delay50us pop temp2 ret
einzufügen. ; Siehe dazu http://www.mikrocontroller.net/topic/81974#685882 lcd_enable: sbi PORTC, 5 ; Enable high nop ; mindestens 3 Taktzyklen warten nop nop cbi PORTC, 5 ; Enable wieder low
-
Thread
Internen Quarz und externen 32kHz Quarz benutzen auf Atmega128A
| (1 << bitFour)); // Bits für den 7-Segment umsetzer auf Ausgänge gesetzt PORTC &= ~((1 << trans1) | (1 << trans2) | (1 << trans3) | (1 << trans4)); // Alles auf 0 setzen PORTD &= ~((1 << bitOne) | (1 << bitTwo) | (1 << bitThree) | (1 << bitFour)); // s.o. // PORTC |= ((1 << trans1)); sei(); } [/c] Mein Programm hängt einfach und es passiert gar nichts.... Was muss ich ändern?
-
Thread
LCD zeigt nichts an
H 10 else // write instruction (RS=0, RW=0) dataBits=0; PORTC = dataBits | (data>>4); // output high nibble first, zzgl. Zustand für RS-Leitung lcd_flash_e (); [/c] geht mir die Galle hoch. Wer so programmiert, sollte nicht veröffentlichen.
-
Thread
ATmega16 und HD44780 in 4-Bit modus Hilfe!
DDRB = 0xF0; //Port B als Ausgang PORTA = 0x00; //LEDs auf null gesetzt. PORTC = 0x00; //LEDs auf null gesetzt. RS = 0; void lcd_init(); void lcd_clrscr(); void lcd_putc(char c) { lcd_write(c,1); } while(1) [/c] Na bumm. Schönenn Gruss an deinen
-
Thread
Darf nur den selben Mikrocontroller verwenden?
darf nicht schneller als CLK/8 also 125kHz sein. Der einzige Fehler der genauso oft auftaucht ist PortC bei der Mage32-Familie (JTAGen)
-
Thread
Abstand PORTA, PINA, DDRA
zwischen den Adressen für die I/O-Register gleich? Also gilt immer etwas wie: [c] &DDRC == (&PORTC + (&DDRA-&PORTA)) // immer true? [/c] Bei den Standard-ATmegas, die ich benutzt, paßt das (ATmega16, 32, 644), aber sollte ich sicherheitshalber damit rechnen, daß das mal in die Hose gehen