-
Thread
Problem bei Einlesen der Analogwerte
Port C als Ausgang setzen while( 1 ) { if( PINA & ( 1 << PA0 ) ) PORTC |= 1<<PC0; else PORTC &= ~(1<<PC0); if( PINA & ( 1 << PA1 ) ) PORTC |= 1<<PC1; else PORTC &= ~(1<<PC1); // Ansonsten setze PC0 LOW } }
PORTC &= ~(1<<PC1); [/c]
-
Thread
myAVR mk2 mit nur einem Taster bedienen - assembler
PORTB,r18 in r19,PINC sbrs r19,5 rjmp Taster rjmp mainloop Taster: sbi PORTC,5 Taster1: ldi r18,0b01011011 out PORTB,r18 in r20,PINC sbrs r20,5 rjmp Auswahl rjmp Taster1 Auswahl: ldi r18,0b00111111 ... Das problem ist derzeit
ldi r16,0x00 ldi r17,0xFF out DDRB,r17 out DDRD,r17 out DDRC,r16 out PORTC,r17 mainloop: ldi r18,0b00000110 out PORTB,r18 in r19,PINC sbrs r19,5 rjmp Taster rjmp mainloop Taster: cbi PORTC,5 Taster1: ldi r18,0b01011011
-
Thread
Kleine Bitmanipulationsfrage
PINC = 1; 4d6: 81 e0 ldi r24, 0x01 ; 1 4d8: 86 b9 out 0x06, r24 ; 6 PORTC = 1; 4da: 88 b9 out 0x08, r24 ; 8 [/c] Sondern mit '|=' benutzt er den 'sbi': [c] PINC |= 1; 4d6: 30 9a sbi 0x06, 0 ; 6 PORTC |= 1; 4d8: 40 9a sbi 0x08
-
Thread
UART AT90CAN128 Einstieg
{ uint8_t c; c = uart_getc(); DDRC = 0xFF; PORTC = c; } else { } } } [/c] Die Kommunikation scheint auch zu funktionieren, allerdings reagiert der Controller auf jede mögliche Eingabe. So springen
-
Thread
AVR: unsigned 24 bit auf 3 Ports verteilen
// ok, OUT PORTA,Rn PORTB = ((wert >> 8) & 0xff); // 4 Register werden sinnlos umkopiert PORTC = ((wert >> 16) & 0xff); // ok, OUT PORTC, Rn+2 } machmal(0x00112233UL); Der gcc läuft mit -o3 Wie gehts besser ? Union etc. geht nicht, weil ich alles in Registern behalten will. Gruß
sinnlos umkopiert d4: 82 e2 ldi r24, 0x22 ; 34 d6: 85 b9 out 0x05, r24 ; 5 PORTC = ((wert >> 16) & 0xff); // ok, OUT PORTC, Rn+2 d8: 81 e1 ldi r24, 0x11 ; 17 da: 88 b9 out 0x08, r24 ; 8 } [/c]
-
Thread
LED als Sensor
Kann mir einer den Fehler bei diesem Programm sagen? Auf PORTC befinden sich übrigens LEDs mit denen ich anzeigen will, dass sich überhaupt etwas ändert, wenn sich die Helligkeit bei der "mess LED" verändert.
-
Thread
Led mit UART ansteuern
} auch sinnlos Uwe S. schrieb im Beitrag #3877436: > was ist PC5 ? ein Portbit 5 im PortC eines Atmel, hier unbenutzt. > was ist /char = c;/ - wird das überhaupt übersetzt ? kann ich mir nicht vorstellen ohne Fehlermeldung.
-
Thread
16X1 LCD zeigt nur 8 Zeichen
string); void LCD_blink(); void LCD_scroll(unsigned char direction); #define LCD_DATA_PORT PORTC #define LCD_DATA_DDR DDRC #define LCD_DATA_PIN PINC #define LCD_CNTRL_PORT PORTD #define LCD_CNTRL_DDR DDRD #define LCD_CNTRL_PIN PIND #define LCD_RS_PIN 2 #define LCD_RW_PIN
-
Thread
Problem mit DOGM204W-A Display und Atmega 328 P
0xFF; InitDisplay(); while(1) { } } void InitDisplay(){ _delay_ms(200); PORTC=0; SendData(0x3A);//1 SendData(0x09);//2 SendData(0x06);//3 SendData(0x1E);//4 SendData(0x39);//5 SendData(0x1B);//6 SendData(0x6E);//7 SendData(0x57);//8 SendData(0x7F);
-
Thread
Anfänger Programm
PORTD = 255; DDRC = 255; while(1) { if((PIND & (1 << 1))) { PORTC &= (1 << 5); } else { PORTC |= (1 << 5); } } } [/c] Wenn ich das Programm auf den µC spiele, dann Leuchte meine LED an PortC.5. Jedoch sobald ich einmal den Taster
fehlt ne welle [c] PORTC &= ~(1 << 5); [/c]
-
Thread
Schrittmotorsteuerung für primitive Astro-Nachführung
/ PINB0 - PINB3 auf Eingang und PINB5 Ausgang MPORT = 0b00000000; //MDDRX = 0xFF; // PORTC AUF AUSGANG MDDRX = 0b00011111; // // Initialisierung des LCD // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken // verschwunden sein lcd_init();
define TASTE2 PINB1 #define TASTE3 PINB0 #define TASTE4 PINB3 #define MDDRX DDRC #define MPORT PORTC #define MOT_ENABLE PC0 #define MOT_SM1 PC1 #define MOT_SM0 PC2 #define MOT_DIR PC3 #define MOT_STEP PC4 uint8_t MENU; uint32_t WINKEL; uint8_t ZEIT; uint8_t WIEDERHOLUNGEN; uint8_t START
-
Thread
RTTTL Player
#include <avr/sleep.h> // Lautsprecherport #define SPEAKER_DDR DDRC #define SPEAKER_PORT PORTC #define SPEAKER PC7 // Taster #define TASTER_DDR DDRC #define TASTER_PORT PORTC #define TASTER_PIN PC2 #define TASTER_INT PCINT18 // Vorteiler fuer Timer0 (in ctc_on() TCCR0B entsprechend
-
Thread
ATtiny8 und GIMSK
#include <avr/sleep.h> // Lautsprecherport #define SPEAKER_DDR DDRC #define SPEAKER_PORT PORTC #define SPEAKER PC7 // Taster #define TASTER_DDR DDRC #define TASTER_PORT PORTC #define TASTER_PIN PC2 #define TASTER_INT PCINT18 // Vorteiler fuer Timer0 (in ctc_on() TCCR0B entsprechend
-
Thread
Ausgangsbits werden nicht gelöscht
) | (1<<PC5) | (1<<PC6) | (1<<PC7) ); // Datenrichtungsregister für PORT C setzen (Eingänge) PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7); // Datenregister für PORT C setzen (Pull-Up-Widerstände aktivieren) DDRB &= ~( (1<<PB0) | (1<<PB1)
) | (1<<PC5) | (1<<PC6) | (1<<PC7) ); // Datenrichtungsregister für PORT C setzen (Eingänge) PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7); // Datenregister für PORT C setzen (Pull-Up-Widerstände aktivieren) DDRB &= ~( (1<<PB0) | (1<<PB1)
-
Thread
RS232 Steuerung
9600 , Parity = None , Stopbits = 1 , Databits = 8 Config Lcdpin = Pin , Rs = Portd.7 , E = Portc.0 , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 Config Lcd = 20 * 2 Cursor Off Cls Dim Lautstärke As String * 16 Config Rc5 = Pind.6 , Wait = 2000 Dim
-
Thread
Frequenz und Piezolautsprecher
anlegt, sondern einen Lautsprecher. (Lsp auf PC7) Nehme ich z.B. den Code [c] while(1) { PORTC &=~(1<<PC7); _delay_ms(1); PORTC |=(1<<PC7); _delay_ms(1); } [/c] erzeuge ich damit an meinem PC7 ein ein- und ausschalten des Lsp. Die Zeit _delay_ms() kann ich verändern
-
Thread
Attiny2313 mit Pollin LCD-Modul C0802-04
#define LCD_E0 SBIT( PORTD, 4 ) #define LCD_DDR_E0 SBIT( DDRD, 4 ) #define LCD_on() PORTC |= (1<<PC4) #define LCD_off() PORTC &= ~(1<<PC4) static void lcd_nibble( u8 d ) { LCD_D4 = 0; if( d & 1<<4 ) LCD_D4 = 1; LCD_D5 = 0; if( d & 1<<5 ) LCD_D5 = 1; LCD_D6 = 0; if( d &
-
Thread
ATxmega32A4U - wieviele Uarts?
gerade aus de, "Datenblatt" nicht schlau. Die ATXmega...A4U Serie wird mit 5 USART beworben: "PORTC and PORTD each has two USARTs. PORTE has one USART. Notation of these peripherals are USARTC0, USARTC1, USARTD0, USARTD1 and USARTE0, respectively." Sind das jetzt wirklich 5 individuell und gleichzeitig
-
Thread
ATmegaSTepper und Timer1
endvorn=0; } } } void vor (int data) { int i=0; for (i=0;i<data;i++) { PORTC = Werte[timer_zaehler]; timer_zaehler=timer_zaehler+1; if( timer_zaehler == 7 ) {timer_zaehler = 0;} timer (speed); if (endvorn==1)break; } } void back (int
=0; for (i=0;i>data;i--) { if( timer_zaehler == 0 ) {timer_zaehler = 7;} PORTC = Werte[timer_zaehler]; timer_zaehler=timer_zaehler-1; timer (speed); if (endhinten==1)break; } } void int0(void) { PORTD|=0x04; //PD2(INT0) GICR|=(1<<INT0);
-
Thread
Versäumte Prüfungsverbesserung
bezüglich der Adressberechnung gibt. Und dann gibt es natürlich noch die Unterscheidung des Registers PORTC vom Register PINC. Wenn man schon in die Adressfalle tappt, dann sollte man dann doch wenigstens soweit korrekt assozieren, dass man nicht vom Register PORTC einliest, sondern von PINC. ad 10)
-
Thread
Schieberegister in einem 4x4x4 Cube in C ansteuern
das genauer erläutern? SET_BIT ist den Pin des Portes auf 1 zu setzten und clear bit auf 0. an PORTC,7 ist die Clock. Für die Clock hab ich eine Schleife. Für die LEDs in einer Spalte ist PORTD,4 zuständig. Nehmen wir an ich will jetzt jede 2 Spalte beleuchtet haben. Den setze ich hier das
1,0 usw.. Ist meine denkweise richtig? SET_BIT(PORTD,4); for (i=0;i<8;i++) { SET_BIT(PORTC,7); _ms_delay(10); CLEAR_BIT(PORTC,7); _ms_delay(10); } lg
-
Thread
Timer1 Atmega8A?
; [/c] Zufrieden ? Und auch mit 0x80 wird es funktionieren: [c] if ((PORTC != 0) && (PORTC < 0x80)) PORTC <<= 1; else PORTC =1; [/c]
im Beitrag #3864131: > Zufrieden ? Nein. Marc Vesely schrieb im Beitrag #3864131: > if ((PORTC != 0) && (PORTC < 0x40)) PORTC <<= 1; else PORTC =1; PC6 ist Reset. Da läuft er zwar rüber aber die Anzeige bleibt auch einmal dunkel. [c] if (PORTC < 0x20) PORTC <<= 1; else PORTC =1; [/c]
-
Thread
Bit auf Variable setzen?
schnellerem Code: [c] $cat test.c #include <avr/io.h> #include <stdbool.h> void f1(bool x) { PORTC= (PORTC & ~(1<<PC0)) | (x<<PC0); } void f2(bool x) { if (x) PORTC= PORTC | (1<<PC0); else PORTC= PORTC & ~(1<<PC0); } [/c] Compilieren mit [code]avr-gcc -c -mmcu=atmega8 -save-temps
-
Thread
ATMega32 PortC "seltsame" spannung
betreffen (spi, uart) und muss die fuse irgendwo überlesen haben^^ EDIT: habs grade unter den PortC eigenschaften gefunden im datenblatt (dachte dass der abschnitt unwichtig is, da ich bei attiny und atmega328 bis jetzt nur input/output/adc da gelesen habe)
-
Thread
Allgemeines Toggle LED Problem
Woran liegt das? Beispiel Programm:[c] if(adcval < 140) // Kleiner 684mV { PORTC |= (1<<PC0); PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); } [/c] funktioniert natürlich, aber [c] if(adcval < 140) // Kleiner 684mV { PORTC
DDRC = 0x00; // Eingänge DDRC = ((1 << DDC0) | (1 << DDC1) | (1 << DDC2)) ; // PC0-3 Ausgang PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2)) ; DDRD = 0xFF; // Alle Pins von Port D als Ausgang DDRD &= ~ (1<<DDD7); // Pin 7 als Eingang PORTD = (1<<PD0)| (1<<PD1)|(1<<PD2)|(1<<PD3)|(1<<
-
Thread
Timer1 LED Uhr test mit modulo
DDRC = 0x00; // Eingänge DDRC = ((1 << DDC0) | (1 << DDC1) | (1 << DDC2)) ; // PC0-3 Ausgang PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2)) ; DDRD = 0xFF; // Alle Pins von Port D als Ausgang DDRD &= ~ (1<<DDD7); // Pin 7 als Eingang PORTD = (1<<PD0)| (1<<PD1)|(1<<PD2)|(1<<PD3)|(1<<
DDRC = 0x00; // Eingänge DDRC = ((1 << DDC0) | (1 << DDC1) | (1 << DDC2)) ; // PC0-3 Ausgang PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2)) ; DDRD = 0xFF; // Alle Pins von Port D als Ausgang DDRD &= ~ (1<<DDD7); // Pin 7 als Eingang PORTD = (1<<PD0)| (1<<PD1)|(1<<PD2)|(1<<PD3)|(1<<
-
Thread
Atmel Studio, µC Grundlagen Hilfe
if verzweigung gestartet { PORTC = PORTC | (1<<PC3); // PORTC wird ODER verknüpft mit PC3 } } //while } //main [/c] Bitte kann mir jemand die einzelnen Parameter zu dieser Aufgabe erklären
Deine Kommentare erzählen nicht WARUM etwas gemacht wird. Du beschreibst hier [c] PORTC = PORTC | (1<<PC3); // PORTC wird ODER verknüpft mit PC3 [/c] das PORTC ODER verknüpft wird. Und zwar mit PC3. Aber warum machst du das? Was ist der Zweck der Übung? Das da eine Oder Verknüpfung
-
Thread
XMega TWI - Problem mit Portexpander
byte); int PCF8574_read_byte(TWI_t *I2C, int Adresse); void I2C_Master_Init(TWI_t *I2C) { PORTC.DIRSET |= PIN0_bm; PORTC.DIRSET |= PIN1_bm; I2C->MASTER.BAUD = TWI_BAUDRATE; I2C->MASTER.CTRLA = TWI_MASTER_ENABLE_bm | TWI_MASTER_INTLVL_HI_gc | TWI_MASTER_RIEN_bm | TWI_MASTER_WIEN_bm
-
Thread
Bascom - Anwesenheitskontrolle mit iButtons
folgendes: $crystal = 16000000 $regfile = "m32def.dat" Config 1wire = Portb.0 Config Portc = Output Dim Rom_data(8) As Byte Do Rom_data(1) = 1wsearchfirst() If Err = 1 Then Portc = 0 End If If Err = 0 Then If Rom_data(8) = &H2F Then Portc.1 = 1 Elseif Rom_data(8) = &H69 Then Portc.7 = 1 End If End If Loop So funktioniert es natürlich nur mit einem Button zur Zeit, leider habe ich aber ja zwei iButtons
-
Thread
Globale Variablen im ISR
include <avr/interrupt.h> #include "uart.h" int main() { uart_init(); DDRC = 0xFF; // PORTC Ausgang sei(); while (1) { PORTC = uart_string[0]; _delay_ms(5000); PORTC = uart_string[1]; _delay_ms(5000); PORTC = 0xFF; _delay_ms(50); PORTC = 0x00; _delay_ms(50); PORTC = 0xFF; _delay_ms(5000); } return 0; // never reached } [/c] In jedem File wird das und nur das #includ-iert was tatsächlich in diesem File (sei es Header oder C-File) notwendig
-
Thread
AVR-ASM Knobelei : Bitmanipulation am LCD im 4-Bit Mode
Al1 und Al2 setzen out portb, r18 ;Daten/Befehlsbyte ausgeben sbi portc, 5 ;E auf High setzen cbi portc, 5 ;E wieder auf Low setzen ; mov r18, r16 ;Datenbyte kopieren rol r18 ;unteres Nibble an die
Al1 und Al2 setzen out portb, r18 ;Daten/Befehlsbyte ausgeben sbi portc, 5 ;E auf High setzen cbi portc, 5 ;E wieder auf Low setzen ret [/avrasm] Mir ist es auch wichtig, Code so zu schreiben, das er einfach angepasst werden kann
-
Thread
DRV8811 Richtungswechsel
MOT_DIR PC3 #define MOT_STEP PC4 [/c] [c] int main(void) { DDRC = 0xff; PORTC= 0b00000000; //PORTC &= ~(1<<MOT_ENABLE); // Enable //PORTC &= ~(1<<MOT_SM0); // SM0 //PORTC &= ~(1<<MOT_SM1); // SM1 //PORTC &= ~(1<<MOT_DIR); while(1) { PORTC |
=0; j<=100; j++) { long_delay(1); PORTC |= (1<<MOT_STEP); long_delay(150); PORTC &= ~(1<<MOT_STEP); } } [/c]
-
Thread
PIC16F630 Schleife für Delay einer LED
Reset-Vektor für Prozessor ;****Ports definieren**** bcf STATUS,RP0 ;Bank 0 clrf PORTC ;Init PORTC bsf STATUS,RP0 ;Wechsel zu Bank 1 movlw 0x00 ;Alle Ports als Ausgang movwf TRISC bcf STATUS,RP0 ;Wechsel zu Bank 0 movlw 0x01 ;LED
Speicherstelle Label1 ;****Ports definieren**** bcf STATUS,RP0 ;Bank 0 clrf PORTC ;Init PORTC bsf STATUS,RP0 ;Wechsel zu Bank 1 movlw 0x00 ;Alle Ports als Ausgang movwf TRISC bcf STATUS,RP0 ;Wechsel zu Bank 0 movlw 0x01
-
Thread
ARM, Philosophie und Programmierparadigmen
vergleichen: AVR: [c]// Pin C3 auf output setzen DDRC |= (1 << 3); // Pin C3 auf High setzen PORTC |= (1 << 3)[/c] STM32F4: [c]// Pin C3 auf output setzen GPIOC->MODER |= (1 << (3*2)); // Pin C3 auf High setzen GPIOC->BSRR = (1 << 3);[/c] Also ich sehe keine riesiges Gestrüpp an Libraries
-
Thread
SPI zwischen zwei ATMEGA8A mit SPI-Interrupt
ATMEGA8A, mit 8MHZ interner Oszillator getaktet, einer (der Slave) in STK500 der auf die Leds über PORTC angeschlossen ist. Der Master ist an einem Experimentier Board und mit kable verbunden. (ich habe einen skizzenhaften Schaltplan angehängt an den die SPI Verbindungen ausgezeichnet sind) Besten
//SPI Transfer Complete Interrupt starting on page 124 in datasheet ISR(SPI_STC_vect){ PORTC = 0xf0; zyklus = SPDR; } void init_spi_slave() { SPCR |= ((1 << SPIE) | (1 << SPE) | (0 << DORD) | (0 << MSTR) | (1 << CPOL) | (1 << CPHA) | (0 << SPR1) | (0 << SPR0)
-
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