-
Thread
avr asm LCD Problem
ldi temp, 0b111110 ;alles Ausgang außer 0 out LCDDC, temp ldi temp, 0b000001 ;PORTC0 Eingang mit pullup out LCDC, temp [/c] Ab hier sind CS1 & CS2 Low (aktiv). Bis zur Init kommt nur für's LCD unwesentlicher Code. [c]lcd_init: ... ldi Daten, LCD_START_LINE ;Start
-
Thread
Umstieg von Arduino IDE auf AVR -- scheitert an IRQs
0110) sei(); // re-activate Interrupts DDRC |= 40; } void loop() { PORTC = PORTC ^ 8; delay(500); } ISR (WDT_vect) { PORTC = PORTC ^ 32; } [/c] bringt beide LED zum Blinken. In der "NoDuino-"Form: [c] #include <stdint.h> int main(void) {
re-activate Interrupts DDRC |= 40; // PC 3 and PC 5 are Output while (1) { PORTC = PORTC ^ 8; delay(500); } } ISR (WDT_vect) { PORTC = PORTC ^ 32; } [/c] blinkt nur noch die LED, die von der Watchdog-Timer Routine aufgerufen wird. Habt Ihr eine Erklärung für
-
Thread
Bascom - C Umstieg Teil 1 - IDE-Probleme
AVRispMK2-Progammer) [c] #include <avr/io.h> #include <util/delay.h> int main(void) { PORTC.DIR = PIN0_bm | PIN1_bm; while (1) { PORTC.OUTSET = PIN0_bm; _delay_ms(10000); PORTC.OUTCLR = PIN0_bm; _delay_ms(10000); } } [/c] Version 1:
-
Thread
Unterschied Arduino-PWM und Analog
. Natürlich ist der das! Aber das kann sich ja ändern. Immerhin hat er ja schon die Pins von PORTC gefunden. Also gib ihm bitte die Chance! Und verurteile nicht. Wie lange braucht ein Kind, zum laufen lernen, und dann bis es einen Marathon bestreiten kann. Sagst du da auch schon am dritten
-
Thread
Variable wird nach verlassen der PCINT ISR wieder auf vorherigen Wert gesetzt
// PORTB Definition #define BUZZER (1<<PB1) #define COIL (1<<PB0) // PORTC Definition #define COILTEMPSENSOR (1<<PC2) #define SETTINGBUTTON (1<<PC5) // PORTD Definition #define MDI_CLK (1<<PD3) #define MDI_DATA (1<<PD4) #define
BUZZER | COIL; DDRC = 0x00; DDRD = LED_REF | LED_CTRL; PORTC |= SETTINGBUTTON; PORTD |= MDI_DATA | MDI_CLK; init_peripheral(); sei(); while(1) { _delay_ms
-
Thread
STM32F103 Bluepill mit 128kb lässt sich nicht flashen
> Reflexionen und kurze Störspitzen. Der Oszi ist auf dem Weg.... Maßnahmen: RTC Pins des PortC sind gekappt, d.h. nicht eingelötet (fiese Störquelle) Alle Pins beim Setup auf AIN gesetzt, dann die gebrauchten initialisiert. GND kontrolliert Elko + 100nf hinter den 3.3V DC/DC Wandler Alle
Beitrag #6652165: > Falls PortC, waren die nicht > etwas schlapper als die anderen? Poart A, weil Portc gibt es nicht beim BP (Pins muss man ziehen, da RTC hochohmig) und PortB Remap den MOSI mit dem I2C teilt (SMAI). Ansonsten überlässt man es dem Designer was dazu baut und drängt ihm nicht Lösungen
-
Thread
Pin für bestimmte Zeit schalten
für mindestens 50 µs HIGH um ihn als Trigger zu verwenden. Zurückgesetzt wird aktuell über: [c] PORTC.OUTSET = PIN4_bm//Setzen TC0_ConfigClockSource( &TCD0, TC_CLKSEL_DIV64_gc ); ISR(TCD0_CCA_vect){//Zurücksetzen PORTC.OUTCLR = PIN4_bm; TC0_ConfigClockSource( &TCD0, TC_CLKSEL_OFF_gc ); } [/
-
Thread
QDEC und CCA effizient nutzen
CCA_vect){ uint16_t cca_res = TCC0.CCA + trigger_aufloesung; uint16_t per = TCC0.PER; PORTC.OUTTGL = PIN4_bm; //Trigger Laser TC_Restart(&TCDO); TC0_ConfigClockSource( &TCD0, TC_CLKSEL_DIV64_gc ); //Starte PegelTimer (100 µs) if(cca_res > per){ //Is CCA still reachable?
-
Thread
Ausgänge bei 3.2V
define STEPPER_Q4_PIN PD5 #define SPEED_JUMBER_DDR DDRC #define SPEED_JUMBER_PORT PORTC #define SPEED_JUMBER_PIN1 PINC0 #define SPEED_JUMBER_PIN2 PC1 #define SPEED_JUMBER_PIN3 PINC2 #define PAUSE_JUMBER_DDR DDRC #define PAUSE_JUMBER_PORT PORTC #define PAUSE_JUMBER_PIN1
-
Thread
PWM Frequenz ATMega328P einstellen
ADPS0) | (1<<ADPS1) | (1<<ADPS2); sei(); DDRD = 0xFF; PORTD = 0x00; DDRC = 0x00; PORTC = 0x00; DDRD |= (1<<PD6); //PWM Output DDRB |= (1<<PB0); //green LED DDRB |= (1<<PB1); //PWM Output uint16_t Min1 = 122; uint16_t Min2 = 982; uint16_t Max1 = 982; uint16_t
-
Thread
Vorstellung und erstes Projekt
set_Pin(unsigned char port, unsigned char pin, bool state) { ... } Der Aufruf wäre dann z.B für PORTC, Pin 7 eine 1 schreiben: set_Pin(PORTC, 7, 1); Gruß
Oops... hab mich gerade dran erinnert, dass das Macro PORTC ja direkt das Register beschreibt. D.H. das lässt sich nicht einfach als unsigned char übergeben.. Dadurch ist es zwar nicht schwierig zu lösen, aber evtl als Anfänger jetzt erstmal nicht so wichtig
-
Thread
ModelServo-Signal-Serialisierer Mega8
high sind. Gleich kommt was zu der impliziten Flankenerkennung. Die Eingangssignale hängen alle an PORTC0:3 und werden einfach durch Einlesen von PORTC & 15 gemacht. Als ich so am rumdebuggen war, hab ich die Anzahl der gesampelten Kanäle bis 1 verringert und beim späteren erhöhen übersehen, dass PORTC0
-
Thread
STM CubeIDE - Debugger hängt sich auf
gesucht haben. Man kann es nicht allen recht machen. Früher gab es hier jede Woche die Meldung 'der PortC an meinem ATMega funktioniert nicht'...
-
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
Atmega8A 1000ms != 1s ?
fixled_off(); _delay_ms(10000); } } void ioinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void adcinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void fixled_on(void) { PORTC |= _BV(PC3); } void fixled_off(void) { PORTC &= ~_BV(PC3); } void statled_on(void) { PORTC |= _BV(PC4); } void statled_off(void) { PORTC &= ~_BV(PC4); } void gps_on(void) { PORTC |= _BV(PC5); } void gps_off(void) { PORTC &= ~_BV(PC5); } [/c]
-
Thread
Frage zu Externes SRAM(XMEM) und Atmel Studio 7
oben "Using all 64Kbytes Locations of External Memory" das man diese bekommt wenn man alle Pins an PortC freigibt für den XMEM Bus. Aber das habe ich dort getan wenn ich keins der XMMn Bits setzte oder? Also kann ich doch jetzt die vollen 64kB ansteuern oder nicht? Im Linker habe ich eingestellt das die
"Using all 64Kbytes Locations > of External Memory" das man diese bekommt wenn man alle Pins an PortC > freigibt für den XMEM Bus. Aber das habe ich dort getan wenn ich keins > der XMMn Bits setzte oder? Also kann ich doch jetzt die vollen 64kB > ansteuern oder nicht? Nicht ganz, denn der externe
-
Thread
ROM-Codes als HEX-Zahlen per USART 0 senden
Bit/s // 1-Wire-Schnittstelle initialisieren (bitte Punkte passend ersetzen) w1_setup(PORTC , 2); // Port und Portbit wählen gemäß Hardwarebeschreibung sei(); // Bibliotheksfunktionen nutzen Interrupts, daher // müssen Interrupts global
-
Thread
[S] Suche Dienstleistung für PIC18F45K22
U6 = (U6<<8); U6 = (U6|ADRESL); } void init (void) { PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; LATA = 0; LATB = 0; LATC = 0; LATD = 0; ANSELA = 0b00101100; ANSELB = 0b00001101; ANSELC = 0b00000000; ANSELD = 0b10111111; TRISA = 0b11101100
-
Thread
Mikrofon als PWM Eingang benutzen
* 255 - 0 / 1023 - 0 + 0 } if ((PINC&(1<<PORTC3)) && (PINC&(1<<PORTC2))) { Micro = Sound; Drehzahl= change(Micro,0,1023,0,255); OCR0A = Drehzahl; } mein bisheriger code (ohne initialisierung dachte dann wäre zu viel code
-
Thread
Potentiometer + Servomotor I Atmega328PB
) // An dieser Stelle muss die Deklarations-Kopfzeile korrekt vervollständigt werden { PORTC |= 0xFF; // Servo-Ausgang selektiv auf HIGH } // Interrupt-Service-Routine des Timer/Counter 1 (Endzeitpunkt der HIGH-Phase einer PWM-Periode) ISR(TIMER1_CAPT_vect) // An dieser Stelle muss die Deklarations-Kopfzeile korrekt vervollständigt werden { PORTC &= ~(1 << 2); // Servo-Ausgang selektiv auf LOW } int main(void) { // ADC initialisieren ADMUX = (1 << REFS0 ); // ADC Referenzspannung AVcc, rechtsbündige
-
Thread
Stm32F103C8 (Bluepill) Pin B4 und B5
ohne Pull Up (haben die LPC z.B.). Und auch beim AVR Mega32 war ein FAQ 'warum funktioniert mein PortC nicht richtig?'. Nur auf SWJ/JTAG zu achten reicht nicht.
-
Thread
Laufzeitverhalten main-Funktion
PORTC ^= (1<<PC3); trigger_1ms = false; } [/c]
Aber der TO wollte das haben: PORTC ^= (1<<PC4); und nicht das: PORTC = (1<<PC4); Und "PORTC ^= (1<<PC4);" ist nicht interruptsicher
-
Thread
Potentiometer mit ADU Atmega328PB [HILFE]
Mich irritiert dies hier > PORTC = 0xFF; // Alle Segmente der 7-Segemntanzeige ... Anschließend wird mit PC_Bitmaske verodert, da ändert sich folglich dann gar nichts. Muss das nicht PORTC = 0 heißen (je nach Segment-Beschaltung
Vorschlag: PORTC &= PC_Bitmaske[number]; (Vielleicht auch PORTC &= ~(PC_Bitmaske[number]), je nachdem, wie PC_Bitmaske codiert wurde)
-
Thread
PIC LED mit Taster schalten
void main(void) { PORTB = 0; LATB = 0; ANSELB = 0; TRISB = 0; PORTC = 0; LATC = 0; ANSELC = 0; TRISC = 0; TRISBbits.TRISB6 = 1; //Eingang TRISCbits.TRISC0 = 0; //Ausgang while (1){ LATCbits.LATC0
-
Thread
Atmega Taster einlesen und in Register schreiben funktioniert nicht wie geplant
<<PA1)) && (PINB & (1<<PB1)) ) ) {PORTB &= ~(1<<PB1);} else {PORTB &= ~(1<<PB1);} PORTC = PIND; } [/c] Was genau mache ich falsch?
PINB & (1<<PB7)) ) ) {PORTB &= ~(1<<PB7);} else {PORTB |= (1<<PB7);} */ PORTC = PINB; } return 0; } int mode_select() { int mode_select_sw; mode_select_sw = (PIND & 0xf0) >> 4; //read portd,filter out pin 4-7(last 4 bit, high-byte), //store in
-
Thread
Ständige Receive Complete Feuerung xMega USART
); /* PIN3 (TXD0) as output. */ PORTE.DIRSET = PIN3_bm; /* PC2 (RXD0) as input. */ PORTC.DIRCLR = PIN2_bm; /* Use USARTC0 and initialize buffers. */ USART_InterruptDriver_Initialize(&USART_data, &USARTR,&USARTT, USART_DREINTLVL_LO_gc); /* USARTC0, 8 Data bits, No Parity
> /* PIN3 (TXD0) as output. */ > PORTE.DIRSET = PIN3_bm; > /* PC2 (RXD0) as input. */ > PORTC.DIRCLR = PIN2_bm; Wozu? Das wird doch schon mit TXEN und RXEN gemacht: Manual: 'The receiver will override normal port operation for the RxD pin, when 'enabled. 'The transmitter will override
-
Thread
_delay_ms Faktor 13 zu langsam
) | (1 << PB2) | (1 << PB3) | (1 << PB4) | (1 << PB5); DDRD |= (1 << PD2) | (1 << PD5); PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3) | (1 << PC4) | (1 << PC5); PORTD |= (1 << PD6) | (1 << PD7); TCCR1A |= (1<<WGM10); TCCR1A |= (1<<COM1A1) | (1<<COM1B1); TCCR1B
-
Thread
Atmega 1284 Pin-Change Interrupt, funktioniert nicht
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable //SW_Init(); //Initialize Taster }
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up // c-->f PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable } void SW_Init() { PCICR = 0x0c
-
Thread
AVR C array Programmierung wo liegt der Fehler?
} R1_temp = R1_temp >> 1; if (G1_temp & 0x1){ PORTC |=(1<<G1);} else{ PORTC &= ~ (1<<G1); } G1_temp = G1_temp >> 1; if (B1_temp & 0x1){ PORTC |= (1<<B1);}
//Clock Signal erzeugen PORTC |= (1<<CLK); _delay_us(0.1); PORTC &= ~(1<<CLK); } //Ein"latchen" der Reihe PORTC |= (1<<PC5); _delay_us(0.1); PORTC &= ~(1<<PC5)
-
Thread
interrupt nutzen
initialisieren (Alle LEDs aus, restliche Bits passend für Input und Tristate) DDRC = 0x18; PORTC = 0xFF; DDRD = 0x7C; PORTD = 0x7C; // Timer/Counter 0 initialisieren: CTC Modus, Prescaler 1/1024, Interrupt-Intervall 10 ms TCCR0A = (1<<WGM01); TCCR0B = (1<<CS02)|(1<<CS00
passend für Input und Tristate) DDRC = 0x18; PORTC = 0xFF; DDRD = 0x7C; PORTD = 0x7C; // Timer/Counter 0 initialisieren: CTC Modus, Prescaler 1/1024, Interrupt-Intervall 10 ms TCCR0A = (1<<WGM01); TCCR0B = (1<<CS02)