timer1 avr_spi_master_init(); // initialization of SPI as master DDRC |= 0xFF; // set PORTD as output PORTC = 0xFF;// switch off all LEDs on PORTC DDRD = 0x3F; // set lower 6bits of PORTD as outputs and bit 7/8 as inputs PORTD = 0xFF;// switch off all LEDs on PORTD DDRB = 0x3F;// set bit 0 to 5 as outputs
.2 , E = Portd.1 , Rs = Portd.0 Initlcd Cursor Off Cls Config Pinb.2 = Input 'Slave Select Config Portc.5 = Output 'LED Grün Config Portc.3 = Output 'LED Rot Dim Test As Word Dim Wert As Integer Dim Awertl As Byte Dim Awerth As Byte Dim Befehl As Byte Dim Led As Byte Config Spi = Hard , Interrupt = Off
.2 , E = Portd.1 , Rs = Portd.0 Initlcd Cursor Off Cls Config Pinb.2 = Input 'Slave Select Config Portc.5 = Output 'LED Grün Config Portc.3 = Output 'LED Rot Dim Test As Word Dim Wert As Integer Dim Awertl As Byte Dim Awerth As Byte Dim Befehl As Byte Dim Led As Byte Config Spi = Hard , Interrupt = Off
einer "naked"-Routine einen Funktionsaufruf zu starten? [code]ISR( PCINT2_vect, ISR_NAKED ){ PORTC = GPIOR1; isr_more_logic(); reti(); }[/code]
Schon das PORTC = GPIOR1 ist nicht "sicher", weil das nicht ohne Zuhilfenahme eines Registers funktioniert, welches wegen des naked ja nicht gesichert und wiederhergestellt wird.
LEDs ziemlich dunkel leuchten. Darauf hin habe ich mit [c] int main(void) { DDRC = 0xff; PORTC = 0xff; while (1) { PORTC ^= 0xff; } } [/c] die Pins getoggelt und sie mir unter dem Oszi angeschaut. 4 Pins liefern ein schönes Rechteck, die anderern nicht. Stattdessen schwingen
target !! ; #define SDA 1 // SDA Port C, Pin 1 #define SCL 0 // SCL Port C, Pin 0 #define SDA_PORT PORTC // SDA Port C #define SCL_PORT PORTC // SCL Port C ;******---------------------------------------------------------------------- ;-- map the IO register back into the IO address space #define SDA_DDR
Beispiel: AD7524 an PORTD einer ATmega88PA, für Hüllkurve 6 bit-DAC mit Widerstandarray R-2R an PORTC (oder auch PWM, dafür reicht auch "normale" Fast-PWM ohne PLL). Kommunikation mit Steuereinheit per SPI (PORTB).
Init_MCU(); While (1) { In=(~PINA&(1<<SWT1))==(1<<SWT1); If (IN) PortC|=(1<<LED1); Else Portc&=~(1<<LED1); } } Ich bekomme es aber nicht umgebaut, dass wenn ich eine Taste drücke der Zustand beibehalten wird. Ich habe versucht mit in Flanken und entprellen von Schalter einzulesen aber
t on = 0; while (1) { if ((~PINA & (1<<SWT1)) == (1<<SWT1) on = 1; if (on) PORTC |= (1 << LED1); else PORTC &= ~(1 << LED1); } [/c] Entprellen geht bspw. mit einem delay nach der 1. Messung der Pin-Zustände. Wenn dann nach dem delay der Zustand gleich ist, kannst
hier jemand helfen? hier ist der Code für die LEDs: int main(void) { DDRC = 0xFF; //Makes PORTC as Output while(1) //infinite loop { PORTC = 0x01; _delay_ms(200); PORTC = 0x03; _delay_ms(200); PORTC = 0x07; _delay_ms(200); PORTC= 0x00; //Turns OFF All
LED nur (TRISA->EINGANG,TRISC->EINGANG) realisieren muss, oder jedesmal (PORTA->LOW,TRISA->AUSGANG,PORTC->LOW,TRISC->AUSGANG) ausführe. Eberhard H. schrieb im Beitrag #4863054: > Nur 100nF sind bei deiner Applikation auf > jeden Fall viel zu wenig. Ich glaube das täuscht etwas. Richtig ist, das intern pausenlos alle 4 Register (TRISA,TRISC,PORTA,PORTC) umgeladen werden. Da bei dem Multiplexing hier aber jeweils maximal nur eine LED gleichzeitig ON sein kann, ergibt sich bei angenommenen 1,7V über dem 220 Ohm Widerstand an der leitenden LED nur knapp
=============================================================================== LED_DATA alias Portc.0 LED_SCK Alias Portc.1 Config LED_DATA = output config LED_SCK = output LED_SCK = 0 LED_DATA = 0 Dim LED_Config as Long Dim LED_R as Word Dim LED_G as Word Dim LED_B as Word Dim LED_Counter0
/* PORTB0 = Motor PORTB1 = LED Blau (Sekunden) PORTB2 = LED Grün (Minuten) PORTC0 = LED Rot (Stunden) Für die Sekunden und Minuten kann der aktuelle Wert als Grad position für die Anzeige verwendet werden, da hier nur mit 60 grad pro umdreheung(59 wenn man den 0-Punkt mitzählt)
Vielleicht ist das bei moderneren besser gelöst: #define MOSI (1<<PCx) for(uint8_t m=128;m;DDRD&m?PORTC|=MOSI:(PORTC&=~MOSI),m=m/2); GCC checkt genau, was ich will, übersetzt es aber sehr umständlich, er nimmt einen 16-bit Schleifenzähler und zählt von 0000 bis 0008. [code] e2a: 90 e8
unsigned int // This implementation uses Port C for the Data port, all 8 bits of it #define DATA_PORT PORTC // This implementation uses Port B for the Control port #define COMM_PORT PORTD #define LCD_RS PIN5_bm /* RS on pin PD5 */ #define LCD_E1 PIN4_bm /* E1 on pin PD4 */ #define LCD_E2 PIN1_bm /* E2 on
oder longbool angesprochen werden kann. Irgendwelche Pseudo-Vereinheitlichungen a la "#define PORTC 2" und so sind überhaupt nicht hilfreich, sondern schaffen bloß einen uneffektiven Code. Stattdessen solltest du wirklich das RefManual lesen und dich mit dem Gebrauch der GPIO-Peripheriecores
Pins bit 5 .equ 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 bit 4 .equ PC4
if(minuten>=60){ stunden++; } if(stunden>=12){ stunden = 0; } PORTC = minuten; PORTB = stunden; _delay_ms(100); } return 0; } [/c] Hardwaremäßig funktioniert alles (nachgemessen mit Multimeter etc.). Es kann gut sein dass die Uhr
Liebe Kollegen, an meinem ATMEGA644 am PORTC4 (einer der JTAG Pins) habe ich eine LED. Um die anzusteuern, muss ich in Software den JTAG ausschalten: int main(void) { MCUCSR=(1<<JTD); MCUCSR=(1<<JTD); Programmiert wird der Chip
Ich suche Erklärungen für diese Befehle. if(ACSR & (1<<ACO)){ PORTC |= (1<<DDC0); } else{ PORTC = (0<<DDC0); Ich habe das ganze gegoogelt aber nix gefunden. Kann da jemand kurz helfen?
Warum schreibt man denn PORTC = (0<<DDC0); anstelle PORTC = 0;
/LED blau OFF #define SWITCH_INPUT PTC->PDIR; //read SWITCH //////////PROTOTYPS///// void PORTC_PORTD_IRQHandler(void); int main (void){ SystemInit(); /////////PORT'S EINSCHALTEN///////////////// SIM->SCGC5 |=SIM_SCGC5_PORTC_MASK; // PORT C einschalten SIM->SCGC5 |=SIM_SCGC5
erlauben TIMSK0 |= (1<<TOIE0); // Global Interrupts aktivieren sei(); //Taster auf PORTC DDRC=0x00; //PortC als Eingang PORTC=0x01; //PullUp von Pin 0 eingeschaltet //Leds auf PORTA DDRA=0xFF; //PORTA als Ausgang definieren /* * Zähler Info * PORTA0