-
Thread
Erstes PCB mit Eagle: STM32 Breakout Board
BOOT0 auf VDD oder GND und der zweite Jumper setzt BOOT1 auf VDD oder GND. Passt das so? PortB und PortC muss ich noch rausführen, stimmt. Ich mache das gleich mal und setze mich dann auch direkt ans Routing. W.S. schrieb im Beitrag #6286938: > Nochwas zur Gestaltung: > Mal abgesehen davon, daß solche
-
Thread
AVR Studio und Funktion _delay_ms()
delay_time = 2000; DDRB = 0xFF; // PORTB STK500 LEDs PORTB = 0x00; DDRC = 0xFF; // PORTC 2x 74C48 PORTC = 0x00; for (;;) { for (int i = 0; i <= 255; i++) { _delay_ms (delay_time); PORTB = i; PORTB = ~PORTB; PORTC = i; _delay_ms (delay_time
-
Thread
Attiny 861 - nach reset anderes verhalten
define LED_OFF PORTA.OUT |= LED // Schematisch D1 = AUS #define TASTER !(PORTC.IN & ~TA) // Schematisch SW1, Sensor meldet ob Roboter auf Position steht int main(void) { _delay_ms(1000); // PORT PORTA.DIR = 0b10000100; PORTC.DIR = 0b0000; /
0x08 //PC3 is SW1 #define TASTER ((PORTC.IN & TA)==0) [/c]
-
Thread
Neue AVR Familie - AVR-DA
ATSAMC2x hat auch DIR, OUT und IN. Dazu aber auch DIRCLR, DIRSET, DIRTGL, OUTCLR, OUTSET, OUTGL. PORTC.DIR |= PIN6_bm; Yup, man erkennt sofort, dass das AVR ist. > Will das jeder? Tja. > Kann das jeder? Tja.
-
Thread
ILI9341 reagiert anders als erwartet
CS PORTE |= (1<<T_LCD_RD); PORTD &=~ (1<<DCX); //low level command PORTG &=~ (1<<WRX); PORTC = (Data & 0xff); PORTA = ((Data >> 8) & 0xff); PORTG |= (1<<WRX); PORTH |= (1<<T_LCD_CS); } void writePar9341(uint16_t Data){ //CS low, DCX hig -> register, WRX from low to high, rdx
PORTE |= (1<<T_LCD_RD); PORTD |= (1<<DCX); //high level parameter PORTG &=~ (1<<WRX); PORTC = (Data & 0xff); PORTA = ((Data >> 8) & 0xff); PORTG |= (1<<WRX); PORTH |= (1<<T_LCD_CS); } [/c] Init Sequenz aufs kleinste Reduziert: [c] void init_ili9341(){ DDRH |= (1<<T_LCD_CS
-
Thread
static volatile variable in einer Funktion
Interessante Sicht! Der Zugriff wird ja sogar auch ohne die Addition durchgeführt. Ein [C] PORTC = PORTC; [/C] muss ja auch den Port lesen und den gelesenen Wert wieder zurück schreiben. Ob man da jetzt noch 0 dazu addiert oder nicht, macht dafür keinen Unterschied. Es gibt ja auch I/O-Register
dein Rolf M. schrieb im Beitrag #6232695: > Ein [c] PORTC = PORTC; [/c] > muss ja auch den Port lesen und den gelesenen Wert wieder zurück > schreiben. ist da schon etwas schwieriger. Muss der "geänderte" Wert von PORTC am Ende nochmal gelesen werden
-
Thread
Bascom - Atmega16 Led-Uhr
1 Ledr10 Alias Portb.2 Config Ledr10 = 1 Ledr11 Alias Portb.3 Config Ledr11 = 1 Ledg0 Alias Portc.0 Config Ledg0 = 1 Ledg1 Alias Portc.1 Config Ledg1 = 1 Ledg2 Alias Portc.2 Config Ledg2 = 1 Ledg3 Alias Portc.3 Config Ledg3 = 1 Ledg4 Alias Portc.4 Config Ledg4 = 1 Taster1 Alias Pind
Ledr8 Alias Portb.0 Ledr9 Alias Portb.1 Ledr10 Alias Portb.2 Ledr11 Alias Portb.3 Ledg0 Alias Portc.0 ' wird im Programm nicht verwendet! Ledg1 Alias Portc.1 Ledg2 Alias Portc.2 Ledg3 Alias Portc.3 Ledg4 Alias Portc.4 Taster1 Alias Pind.6 Taster2 Alias Pind.7 [/code] TomTom schrieb
-
Thread
ILI9486L in Betrieb nehmen
); _delay_ms(2); PORTD |= (1<<RDX); _delay_ms(2); } void setData(uint16_t *Data){ PORTC = (*Data & 0xff); PORTA = ((*Data >> 8) & 0xff); }[/c]
PORTG &=~ (1<<WRX); setData(Data); PORTG |= (1<<WRX); } void setData(uint16_t Data){ PORTC = (Data & 0xff); PORTA = ((Data >> 8) & 0xff); }[/c]
-
Thread
Ampelschaltung PORTC
Community, Ich möchte gerne eine sehr einfach Ampelschaltung programmieren. Dabei soll bei rot PORTC 3 gesetzt sein, bei gelb PORTC 2 und bei grün PORTC 1. Außerdem soll wenn die Ampel wenn sie grün ist blinken und zwischen dem Wechseln ein delay von 1 sec. also 1000ms haben. Das ganze sollte dann
> PORTC = 3
-
Thread
Delay timing Problem
PORTD |= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); PORTC = 0b00110000; // 8 Bit Modus senden _delay_us(5); PORTD |= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); PORTC = 0b00111000; // 8 Bit / 2
|= (1<<7); _delay_us(5); PORTD &=~ (1<<7); _delay_us(5); _delay_us(100); // T PORTC = 'T'; _delay_us(5); PORTD |= (1<<5); _delay_us(5); PORTD |= (1<<7); _delay_us(5); PORTD = 0x00; PORTC = 0x00; _delay_us(5); while(1) { PORTD |= (1<<6
-
Thread
Atmega8 UART ext. Quarz
-----------Hauptprogramm------------------- int main(void) { DDRC=0x0F; // alle Pins an PortC als Ausgänge DDRD=0x04; // alle Pins an PortD als Ausgänge DDRB=0xFF; // alle Pins an PortD als Ausgänge USART_init(UBBR_Value); USART_Flush(); sei(); while(1) { //PORTC = 0x00; //data=USART_Receive(); //USART_Transmit(data); //PORTC = data; PORTD ^= ( 1 << PD2 ); } } //-------------------ISR------------------- ISR(USART_RXC_vect) { ///* if (Auswahl == 0) { data=USART_Receive(); } if
-
Thread
PIC18F4550 LATA mit PORTA nicht auslesbar?
External USB transceiver RCV input". UCON.USBEN muss '0' sein weil sonst Teile von PORTA,PORTB und PORTC für USB verwendet werden.......
-
Thread
QTOUCH ohne ASF (C Sourcecode)
.328[A/P/PA/PB]. Es läßt sich leicht auf andere AVRs und mehr Touchtasten anpassen. Benutzt werden PORTC4 und PORTC5. Über PORTB1 erfolgt die Ausgabe der ADC-Werte mit 9600 Baud. Getestet wurde es auf dem STK500. Als Sensorflächen wurden 2 der 2-poligen Kabel angeschlossen. Gesteuert wird mit den Tasten
-
Thread
PWM auslesen STM8
natürlich immer gerne offen! Hier der Code für den Interrupt: [c] @far @interrupt void EXTI_PORTC_IRQHandler(void) { if((GPIOC->IDR & 1<<6) == (1<<6)){ switch(FlankFlag){ case 0: FbFlag = TRUE; T1_H = TIM4->CNTR; FlankFlag++; break; case
void) { ovFlag = 1; TIM4->SR1 = ~0x01; //Clear Flag } [/c] [c] @far @interrupt void EXTI_PORTC_IRQHandler(void) { if(GPIOC->IDR & 1<<6){ if(FlankFlag == 0){ FbFlag = TRUE; T1_H = ((TIM4->CNTR)+255*ovFlag); FlankFlag++; ovFlag = 0; }else if(FlankFlag
-
Thread
ATMega8 ADC Interrupt - lesen mehrerer Eingänge liefert Schrott
DDRB = 0b00111111; DDRC = 0b00000000; DDRD = 0b11111010; PORTB = 0b00111101; PORTC = 0b00000000; PORTD = 0b11110111; uart_init(); ADC_Init(); sei(); uart_string("Oszi-Debug"); uart_string(CR); // HAUPTSCHLEIFE ===========================================
-
Thread
Pinabfrage ATMEGA
{ PORTD ^= (1<<PD6); //Toggel Augang PD6 if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 { PORTD &= ~(1<<PD7); //LED einschalten } if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 { PORTD |= (1<<PD7); //LED ausschalten
> if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 > if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 PIN - Abfrage!
-
Thread
Xmega Scheduler
uartInitBufferAndHardware_new( &USARTC0, USART_DREINTLVL_LO_gc, USART_RXCINTLVL_HI_gc, 500, 500, uBscale_m7, 2094, &PORTC, PIN3_bm, PIN2_bm); uartEnable(&UART0); Uart0_p = &UART0; //serial_debug_msg_print(Uart0_p,1, "LODDL!",true); kos_init(); sem = kos_semaphore_init(0); kos_new_task
-
Thread
String über UART an LCD
Also ich habe jetzt den Interrupt so konfiguriert: [avrasm] receive: cli SBI PORTC,3 push temp1 clr r27 ;XH auf 0 ldi r26, 0x0060 ;Anfang des SRAMs beladen = XL in temp1,UDR st X+, temp1 out UDR,temp1 rcall senden ;Feedback, was gesendet wurde
temp1 pop zl pop zh ret [/avrasm] [avrasm] receive: cli SBI PORTC,3 push zl push zh ldi zl, low(text) ldi zh, high(text) push temp1 warten: sbis UCSRA, RXC rjmp warten in temp1, UDR st Z+, temp1
-
Thread
ATmega809 - SPI empfängt 1 Byte und dann nie wieder
Code-Abschnitt hab ich den MISO-Pin entsprechend als Ausgang definiert: [c] self->SPI.PORT = &PORTC; self->SPI.MOSI = PIN0_bm; self->SPI.MISO = PIN1_bm; self->SPI.SCK = PIN2_bm; self->SPI.SS = PIN3_bm; self->SPI.PORT->DIR |= self->SPI.MISO; [/c] So sieht die ISR aus: [c]
-
Thread
Schalten eines Tasters
EDIT: [avrasm]SBI PORT PORTC,4[/avrasm]
OK...Blöd wenn die Katze vorzeitig auf Enter drückt ;D Ich meine natürlich: [avrasm]SBI PORTC,4[/avrasm] So jetzt aber
-
Thread
#define nutzen um mehr als 8 Ein- oder Ausgänge anzusprechen
// definiert PORTA Import #define TastePort PINC = PORTC |= (1<<PC7) // definiert PC7 als Import /* 'das ist natürlich Unsinn, da ich "TastePort" 2x deklariere! */ const uint8_t taste_Pins[] = { PA0, PA1, PA2, PA3, PA4
dazu noch taste_Ports[], der die Pointer auf die Portaddresse beinhaltet. { PORTA, PORTA ..... , PORTC } Frag mich nicht nach der genauen Syntax, bin schon zu lange raus aus C. Noch besser ist natürlich sich einen eigenen Typ zu definieren, der dann aus Portaddresse und Pin-Nummer besteht und
-
Thread
AVR XPlained 328PB Freigabe/Nutzung von PCINT 21
16000000 #include <avr/interrupt.h> #include <avr/io.h> #include <asf.h> ISR(PCINT21_vect){ PORTC|=1<<PORTC3; } int main (void) { DDRD|=1<<PORTD5; PCICR|=1<<PCIE2; PCMSK2|=1<<PCINT21; sei(); while(1){} } Leider kommt hier immer eine Fehlermeldung bezüglich
#define F_CPU 16000000 #include <avr/interrupt.h> #include <avr/io.h> ISR(PCINT2_vect){ PORTC|=1<<PORTC3; } int main (void) { PORTD|=PORTD5; DDRC|=1<<PORTC3; PCICR|=1<<PCIE2; PCMSK2|=1<<PCINT21; sei(); while(1){} } [/c]
-
Thread
Ansteuerung eines Getribeschrittmotors in abhängigkeit der Drehzahl (nonblocking)
push r2,r26,r27 ld r26,ptrlow ld r27,ptrhigh ld r2, X+ out portb,r2 ld r2, X+ out portc,r2 ld r2, X+ add t1cmpal,r2 ld r2, X+ adc t1cmp1h,r2 st ptrlow,r26 pop r27,r26,r2 reti [/avrasm] Diese kleine Routine ändert beim nächsten Timer 1 compare interrupt die Ports
r27 > ld r26,ptrlow > ld r27,ptrhigh > ld r2, X+ > out portb,r2 > ld r2, X+ > out portc,r2 > ld r2, X+ > add t1cmpal,r2 > ld r2, X+ > adc t1cmp1h,r2 > st ptrlow,r26 > pop r27,r26,r2 > reti > Diese kleine Routine ändert beim nächsten Timer 1 compare interrupt die
-
Thread
Grafik Display mit Grafik Controller ST7565R - Probleme bei Zeichenausgabe
code]#include <avr/io.h> #include <avr/pgmspace.h> #define F_CPU 16000000 #define LCD_DATA PORTC #define LCD_DATA_DDR DDRC #define LCD_CONTROL PORTA #define LCD_CONTROL_DDR DDRA #define DB0 PC0 #define DB1 PC1 #define DB2 PC2 #define DB3 PC3 #define
-
Thread
avr-g++: external linkage von const/PROGMEM Symbol.
int main(void) { // irgendwie verwenden, ansonsten sinnlos PORTB = bm.xsize; // ok PORTC = pgm_read_byte(&(cbm.xsize)); // undefined reference to `cbm' PORTD = pgm_read_byte(&(cbmp.xsize)); // undefined reference to `cbmp' while(1) ; } // main --------------------
-
Thread
LCD T6963 an ATXMEGA128A1
Dieses LCD betreibe ich mit einem ATXMEGA128A1 auf einem Board von Ledato (www.ledato.de). PORTC - 8 Bit Datenleitungen PORTB - Steuerleitungen PB0 = /RST PB1 = /CS PB2 = /RD PB3 = /WR PB4 = C/D PB5 = MD2 Fontumschaltung PB6 = Display
-
Thread
Debuggen AVR DRAGON Variable ?
PIND & 1<<PD2) #define PHASE_B (PIND & 1<<PD3) #define LEDS_DDR DDRC #define LEDS PORTC // LEDs against VCC volatile int8_t enc_delta; // -128 ... 127 static int8_t last; void encode_init( void ) { int8_t new; new = 0; if( PHASE_A ) new = 3;
-
Thread
C -> Makro für Pointer Adresse
PortPointer s_PortLookup[Port_Count] = { [Port_A] = &PORTA, [Port_B] = &PORTB, [Port_C] = &PORTC, //... [Port_F] = &PORTF, }; return s_portLookup[i_p]; } typedef struct sMyS{ int8_t action; uint8_t port; // for values see Ports enumeration }MyS; void doSmth(const
-
Thread
DS18S20 keine Temperaturwandlung
****************************************************** ; Lichtschranke .equ ls_port = PORTC .equ ls_port_io = DDRC .equ ls_diode = 2 ; PortC2 .equ ls_emitter = 1 ; PortC1 ;One Wire .equ one_wire_port = PORTC .equ one_wire_pin = 3
******************************************************* one_wire_reset: cbi PORTC,3 ; auf LOW sbi DDRC,3 ; auf Ausgang ldi ar_1,1 ;warte 1ms sts ms_wait_counter_time+1,ar_1 rcall wait_ms sbi PORTC,3 ; auf HIGH
-
Thread
ATMega128 - Programm Reset nach Portzugriff (PORTA)
LCD-Controller in einem 12864 LCD ansprechen. Die Datenübertragung ist im 8-Bit-Mode. Datenport ist PORTC, Über PA4..PA7 laufen RS, RW, E und RST. Der ATMega128 hat folgende Fuses: L:E4, H:D1, E:FF. Problem: Sobald ich PA7 auf "hi" setze (also nach dem RESET des LCD) und einen weiteren Schreibzugriff
in das Hauptprogramm setze, der Fehler dann nicht mehr auftritt. Dann habe die PINs an PORTA und PORTC bei Überprüfung mit dem Scope die korrekten Signale und Soft- und Hardware arbeiten einwandfrei. Die Platine habe ich auch überprüft. Zwei ATMega128 (jeweils auf Breakoutboards verlötet) zeigen