sollte. Im Anhang ist der Quellcode in C und das Datenblatt des AS6C4008. Anmerkungen: PORTC = Datenbus, PORTD(PIN 0,1,2) = 3 kaskadierte 74hc595 für die Adressierung an den AS6C4008, PORTD(PIN 3,4,5) = WE, OE, CE für die Steuerungspins des SRAMs, PORTD(PIN 6,7) und PORTA(PIN 7) = ein einzelner
: die Adresse des PORT-Registers an dem die RESB- // Leitung des Sensors angeschlossen ist (Bsp. &PORTC) // 9. Element: das entsprechende Bit der RESB-Leitung (Bsp. PC4) //Rückgabeparameter: keine //Revision: //Status: freigegeben //********************************************************************
clock für PortA SCL pin RCC_AHB1PeriphClockCmd(I2C_PERIPH_SDA_PORT, ENABLE); // Enable clock für PortC SDA pin I2C_Cmd(I2C_CHANNEL, DISABLE); // I2C abschalten, damit Bus still bleibt // Port mit SCL einrichten GPIO_InitStruct.GPIO_Pin = I2C_SCL_PIN; // Pin A8 (I2C3_SCL) GPIO_InitStruct.GPIO_Mode =
Kopie als Text geht nicht). Im Moment der Aufnahme waren alle Ports offen, trotzdem wird bei PORTC, Bit 13, 0 eingelesen. Die Schleife, mit der ich das Verhalten teste, ist der Vollständigkeit halber am Ende des Beitrags. Das Programm zur Initialisierung der Ports habe ich mir hier gespart
\ (port==&PORTB) ? (1L<<(bit+16)) : ( \ (port==&PORTC) ? (1L<<(bit+8)) : ( \ (port==&PORTD) ? (1L<<(bit+0)) : 0)))) [/c] Das schaue ich mir mal in Ruhe an, vielen Dank.
clock für PortA SCL pin RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // Enable clock für PortC SDA pin I2C_Cmd(I2C3, DISABLE); // I2C abschalten, damit Bus still bleibt // Port A einrichten GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8; // Pin A8 (I2C3_SCL) GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
define DISP_DATA_DDR DDRA #define DISP_DATA_DDR_MSK 0xff /* All bits as output */ #define DISP_CNTRL PORTC #define DISP_CNTRL_DDR DDRC #define DISP_CNTRL_MSK 0xc0 /* Output PC7 and PC6 changed to correct value 0xc0 instead of 0x0c at 18.12.2015*/ #define OE_UPPER PC7 /* Bit for the OE-Input of first 374
equ LED_PORT = PORTB .equ LED_DDR = DDRB .equ LED_PIN = PB0 in .equ LED_PORT = PORTC .equ LED_DDR = DDRC .equ LED_PIN = PC2 "Spechende Namen" sind eine sehr praktische Hilfe, wenn man was ändern will oder nach 2 Jahren wieder in das Programm schaut. Gruß aus Berlin Michael
PINB6 = 6 ; Port B Input Pins bit 6 .equ PINB7 = 7 ; Port B Input Pins bit 7 ; ***** PORTC ************************ ; PORTC - Port C Data Register .equ PORTC0 = 0 ; Port C Data Register bit 0 .equ PC0 = 0 ; For compatibility .equ PORTC1 = 1 ; Port C Data Register bit 1 .equ PC1 = 1 ; For compatibility .equ PORTC2 = 2 ; Port C Data Register bit 2 .equ PC2 = 2 ; For compatibility .equ PORTC3 = 3 ; Port C Data Register bit 3 .equ PC3 = 3 ; For compatibility .equ PORTC4 = 4 ; Port C Data Register
Anfang JTAG-Interface eines ATmega16 per Software deaktivieren und damit die JTAG-Pins an PORTC für "general I/O" nutzbar machen ohne die JTAG-Fuse-Bit zu aendern. Dazu ist eine "timed sequence" einzuhalten (vgl Datenblatt ATmega16, Stand 10/04, S. 229): Das JTD-Bit muss zweimal
Christian T. schrieb im Beitrag #4394517: > cli(); > PORTC ^= ((1<<5)|(1<<4)|(1<<3)); > millis=0; > sei(); cli und sei haben in der Interruptroutine nichts verloren, das wird automatisch gemacht
<stdbool.h> #include <math.h> #include <util/delay.h> #include <avr/eeprom.h> #define LED_RED (1<<PORTC1) //LED sind low aktiv (LOW um eingeschaltet zu sein) #define LED_GREEN (1<<PORTC2) //LED sind low aktiv (LOW um eingeschaltet zu sein) #define DIGIT_1 (1<<PORTC3) //7-Segementanzeige letzte Digit
Hallo, ich möchte 4 Portpins am PORTC meines ATmega88 abfragen und zwar soll der Programmfluss an der Stelle [c] while (!(PINC & 0x0F)); // Warte hier, solange eine Taste noch gedrückt ist... [/c] solange angehalten werden, solange einer der Pins (0...3) auf LOW liegt. PORTC = HIGH + Pullups aktiviert Was mache ich hier falsch?
Richtig. Es kann hierbei zu einem Signalübersprechen kommen und wenn man AVCC, das ja den Kompletten PORTC versorgt, belastet kann auch die Referenzquelle driften was wiederum in einem Zappeln der ADC-Werte mündet. Beides ist in der Regel nicht gewollt. Karl H. schrieb im Beitrag #4389652: > Ich halte
/Ausgang; Die vier Anoden der 7-Segmentanzeigen //vier 7-Segmentanzeigen aktivieren PORTC|=(1<<PC0); PORTC|=(1<<PC1); PORTC|=(1<<PC2); PORTC|=(1<<PC3); while(1) { int i=0; do { PORTD=sieben_seg_ziffer[i]; if(extraTime
5 Dim Bin_led_data As Byte Dim Displaystelle(6) As String * 1 'Array für Displaystellen Config Portc = Output 'Port C als Ausgang Led_din Alias Portc.5 'DIN Pin von MAX7219 Led_clk Alias Portc.4 'CLK Pin von MAX7219 Led_load Alias Portc.3 'LOAD Pin von MAX7219 '********************************
//Shiftclock auf Ausgangsposition PORTC &= ~(1<<A); //A auf Ausgangsposition } else { PORTC &= ~(1<<A); //stelle (zur Sicherheit) Datenbus auf Low PORTC |= (1<<SHIFTCLOCK); //und gibt eine Positive Flanke auf Shiftclock (Bit rutscht in den
Output Richtung Alias Portb.1 Config Portb.2 = Output Motor_stop Alias Portb.2 Portb.2 = 0 Config Portc.0 = Input Dim Geber As Integer Dim Position As Byte Const Null = 1 Const Mitte = 2 Const Ende = 3 Config Adc = Single , Prescaler = Auto , Reference = Avcc Portb.2 = 1 ' Motor Freigabe Wait 2 Do Geber
|= (1<<PC0) //Pin PC0 auf Ausgang gesetzt PORTC &= ~(1<<PC0) // Pin PC0 auf High gesetzt (0V == GND) Das verwirrt mich gerade ein bisschen. Hoffe Ihr wisst darauf eine Antwort!!! Gruss
pad89 schrieb im Beitrag #4377608: > PORTC &= ~(1<<PC0) // Pin PC0 auf High gesetzt Genau deshalb sollte man sich solche Kommentare sparen...
= "m32def.dat" $crystal = 8000000 $hwstack = 150 $swstack = 200 $framesize = 200 Config Portc = Output 191_load Alias Portc.5 164_data Alias Portc.6 164_clk Alias Portc.7 Dim Datenbyte As Byte Dim Zeile As Byte Dim A As Byte Dim B As Byte Config Timer0 = Timer , Prescale = 64
Pind.3 'K9 Ch2 Alias Pind.2 'K8 Ch3 Alias Pinc.4 'K11 Ch4 Alias Pinc.3 'K12 Portd.3 = 1 Portd.2 = 1 Portc.4 = 1 Portc.3 = 1 'Pullups for channels Ddrb.0 = 1 Servoout Alias Portb.0 'Manual Servo output K7-1 Dim Servostart As Byte 'Flag Dim Servovalue As Word 'K13 C.2 is divided battery voltage Config Adc
aufsteigend angeordnet sind. Ich hätte selber eine Lösung bevorzugt, die aus C6 die Konstanten PORTC, DDRC, PINC erzeugt hätte. Dann wäre das sauber. Das geht aber nicht mit dem Standard-C-Preprocessor wegen fehlender "De-Stringification".
einem Port-Ausgangspin nicht auch nachsehen darf, wie der Ausgangspinn gerade steht [c] if( PORTC & ( 1 << PC1 ) ) // steht der Pin auf 1? PORTC &= ~( 1 << PC1 ); // -> ja tut er. auf 0 schalten else PORTC |= ( 1 << PC1 ); // -> nein, tut er nicht. auf 1 schalten
Taster0Jetzt; // Taste wurde betätigt, die LED PC0 in den anderen Zustand schalten if( PORTC & ( 1 << PC0 ) ) PORTC &= ~( 1 << PC0 ); else PORTC |= ( 1 << PC0 ); } _delay_ms( 10 ); } [/c] Jeder Code ist aus 'Modulen' zusammengebaut. Diese können