-
Thread
Kennt noch wer das DDR-Schulmessgerät, digital, mit Bargraph?
1-aus-N ausgeben, mit Einzeltransistoren als Treiber. Ein N von ca. 20 dürfte da mit porta,portb, portc machbar sein. Dürfte von der Software her doch kein Problem sein. wenn mehr LEDs sein sollen, Messwert seriell ausgeben, auf ein (langes) Schieberegister. Das könnte man auch leicht auf 256 ausgänge
aus-N ausgeben, mit Einzeltransistoren als Treiber. Ein N von ca. 20 > dürfte da mit porta,portb, portc machbar sein. Dürfte von der Software > her doch kein Problem sein. Im Detail trotzdem unterlegen. Denn der A277 hat Konstantstrom-Ausgänge. Und - noch schicker - im Bandbetrieb spart er Strom
-
Thread
Loxone Link - CAN-Bus
else { if (((b2 & (1 << (i - 8))) >> (i - 8)) == 1) PORTC |= (1 << (i-8)); else PORTC &= ~(1 << (i-8)); } } } } } } } [/code] Der Code ist noch nicht vollständig
-
Thread
Selbsgebauter Controller für Qualcom Quickcharge 2.0
lautet wie folgt: [c] #include <avr/io.h> int main() { DDRC = 0xFF; //Alle Pins von PortC als Ausgang PORTC = 0b00010000; //LED anschalten PORTC = 0b00010001; _delay_ms(2000); PORTC = 0b00010011; _delay_ms(100); PORTC = 0b00010001; _delay_ms(200); PORTC = 0b00010101; PORTC = 0b00011101; while (1) { ; } } [/c] Hier gibts weitere Infos über Quickcharge http://www.hackvlog.com/2016/12/bitbanging-quick-charge
-
Thread
Schieberegister mit Atmega88 unter Verwendung von AtmelStudio und mySmartUSBlite ansteuern
{ pin_ein(PORTC,PC4); //Schiebetakt aktivieren pin_aus(PORTC,PC4); //Schiebetakt reserten pin_aus(PORTC,PC1); //Seriellen Eingang auf dig. Null } pin_ein(PORTC,PC3); //Speichertakt
//pin_aus(PORTC,PC1); //Seriellen Eingang auf dig. Null //} pin_ein(PORTC,PC3); //Speichertakt aktivieren. pin_aus(PORTC,PC3); //speichern. pin_aus(PORTC,PC2); //Ausgänge
-
Thread
XMEGA: Waveform generator ungenau
/* Switch to PLL clock (32MHz)*/ PORTA.DIR = 0xff; PORTB.DIR = 0xFF; PORTC.DIR = 0xFF; PORTD.DIR = 0xFF; PORTE.DIR = 0xFF; HIRESE.CTRLA = HIRES_HRPLUS_bm | HIRES_HREN_TC0_gc; //High Resolution aktivieren TCE0.CNT = 0; TCE0_CTRLA = 1;
-
Thread
Atmega Strom sparen
showStatus(); cli(); DDRB = 0xFF; DDRC = 0xFF; DDRD = 0xFF; PORTB = 0xFF; PORTC = 0xFF; PORTD = 0xFF; cli(); // quiet for just a moment shutOffADC(); // prepare ADC for sleep PRR = (1<<PRTWI) | (1<<
-
Thread
8 Bit nach 3x BCD umwandeln
µC als voll selbständige Teil eingebauen, ohne externe Details. Z.B. PORTD nimmt 8 bit, PORTB und PORTC geben 3x4 Bit BCD aus. Man kann auch Pins so definieren, wie das bequemer wird.
-
Thread
XMEGA & TWI -> Lese Problem
Page_adress ist die Slave ID und Adress ist die Addresse der Speicherzelle. Der Block mit dem PortC ist noch nicht dynamisch, da ich da noch keine Arbeit reingesteckt hatte. Btw. das ist von einem C++ Projekt. Wenn du also nicht TWIC nutzt musst du da noch den Port ändern. [c] void twi_read(TWI_t
if(twiname->MASTER.STATUS & (1<<TWI_MASTER_ARBLOST_bp)) { twiname->MASTER.CTRLA = 0; PORTC.DIRSET = PIN1_bm; for(uint8_t i=0;i<9;i++) { PORTC.OUTSET = PIN1_bm; _delay_us(20); PORTC.OUTCLR = PIN1_bm; _delay_us(20); } PORTC.DIRCLR = PIN1_bm;
-
Thread
SPI empfaengt nur 0xFF
IDAddr 0xD0 // see Datasheet BMP280 page 31 & 24 ff. int main(void) { DDRC = 0xF0; PORTC |= (1 << DDC5); uint8_t ID = 0x00; uint8_t pressMSB = 0x00; uint8_t pressLSB = 0x00; uint16_t press = 0x00; // initialize SPI as Master, MSB first, Interrupt off, clock rate
if (ID == 0x00) // wurde keine ID gelesen wird die LED an PC5 ausgeschaltet PORTC &= ~(1 << DDC5); press = spiPressBMP280 (pressMSB, pressLSB); ID = 0x00; } while (1); return 1; } [/c] spi.c [c] #include "spi.h" #include <avr/io.h
-
Thread
Grafikdisplay mit SSD1289 mit XMEGA, DMA und 16bit Interface sehr schnell
Bit Interface funktionieren. Anbindung: Das ist meine Anschlusskonfiguration. Der Pin WR an PORTC PIN3 ist wichtig sonst muss ein anderer timer2 genutzt werden. Ansonsten kann man das wohl nach belieben machen: [c] #define SSD_LPORT PORTA #define SSD_HPORT PORTB #define SSD_CONTROL_PORT PORTC // control line pins #define LCD_CD_bm PIN2_bm //RS #define LCD_WR_bm PIN3_bm //LCMPD of TCC2 #define LCD_RD_bm PIN4_bm #define LCD_CS_bm PIN5_bm #define LCD_RES_bm PIN6
-
Thread
Frage zu AVR-C
dem "Oder" Es geht ja darum einen Ausgang anzusteuern. Das kann man doch auch so machen. PORTC = (1<<1); wozu noch ein &, bzw |....
#5031960: > Es geht ja darum einen Ausgang anzusteuern. > Das kann man doch auch so machen. > > PORTC = (1<<1); > > wozu noch ein &, bzw |.... Weil bei dieser Schreibweise der gesamte Port C auf 0 gesetzt wird außer dem einen Bit. Bei der Schreibweise |= wird nur das eine Bit auf 1 gesetzt und
-
Thread
I2C Atmega328p als Master und 24LC256 EEPROM IC als slave
while (!(TWCR &(1<<TWINT))); //wait for TWINT flag SET } int main (void) { DDRC=0xff; PORTC=0x30; //Enable internal pullups on PORTC PINS SDA(PC4) , SCL(PC5) DDRD=0xFF; //Port D as output set_clock(100); //setting clock 100KHz send_start(); if(check_start_status
while (!(TWCR &(1<<TWINT))); //wait for TWINT flag SET } int main (void) { DDRC=0xff; PORTC=0x30; //Enable internal pullups on PORTC PINS SDA(PC4) , SCL(PC5) DDRD=0xFF; //Port D as output set_clock(100); //setting clock 100KHz send_start(); if(check_start_status
-
Thread
SPI mit ATMEGA328 als Master und X25020 als slave
recvd_char = SPI_Rx(); return recvd_char; } int main (void) { DDRC=0xff; //PORTC as output char recvdchar=0; spi_master_init(); spi_slave_init(); write_to_slave(); recvdchar=read_from_slave(); if(recvdchar==0x01) PORTC=1<<PC0
-
Thread
PORTA RA0 bis RA3 auf input setzen
pin's //**********Define********************************************** #define LEDl PORTC.RC0 //LED low liegt an Port RC0 #define LEDh PORTC.RC2 //Led high liegt an Port RC2 #define SIGNAL PORTA.RA4 //SIGNAL liegt an Port RA4 #define meml PORTC.RC4
wertl; void main(void) { // Hauptprogramm TRISC = 0x30; // set PORTC 0-3=output, 4+5=input PORTC = 0x30; // set PORTC 0-3 0V
-
Thread
ATxmega32A4U - 9 Bit UART Problem
USART_BAUDCTRL_BSEL_9600 = 621 * USART_BAUDCTRL_BSCALE_9600 = -2 */ void init_usart_slv(void) { PORTC.DIRCLR = PIN6_bm; PORTC.DIRSET = PIN7_bm; PORTC.PIN7CTRL = PORT_INVEN_bm; // TX Inverted I/O data USART_NineBits_InterruptDriver_Initialize(&USART_SLV, &USARTC1, USART_DREINTLVL_LO_gc);
-
Thread
Taster auf "1" abfragen in AVR-C
//PortB Eingänge DDRC=0xFF; //PortC Ausgänge PORTB=0xFF; //Pullup do { PORTC = 0; } while(!(PINB & (0x01))); //wenn TasterEin gedrückt { PORTC = 0x01; _delay_ms(500); PORTC = 0x02; _delay_ms(500); PORTC = 0x04; _delay_ms(500); } return 0; } [/c
)..warum? Es müsste doch alles ausgehen wegen PORTC = 0;
-
Thread
Entprellung in der Timer-ISR
DDC2) | (1<<DDC1) | (1<<DDC0); // Port B, LEDS (Atmel -> LEDS) -> OUTPUT // #define LEDS PORTC // LEDs an Vcc // /********************************* LEDs (Port C) ***********************************************************
-
Thread
AVR-C Programm Ledansteuerung
Ausgang_schalten==1) //Bedingung prüfen für Aus/NotAus, wenn "1" Aus/NotAus nicht gedrückt PORTC = (1<<0)|(1<<1); // C.0 und C.1 ansteuern für Ausgabe else PORTC = 0; } int main() { DDRC = 0xFF; // Ausgänge DDRB = 0x00; // Eingänge //PORTB = 0b00000001
-
Thread
Selbsthaltung durch Variable
avr/io.h> Int Einschaltet=0; Int main (void){ DDRC &= ~(1<<PC0),~(1<<PC1),~(1<<PC2); // Eingang PORTC = 0x00; // Ohne pulldownwid… While(1){ if (PINC & (1<<PC0)==1){ // Bedingung = true führe die Schleife aus Eingeschaltet=1;} // Variable Eingeschaltet wird der Wert 1 gegeben if (Eingeschaltet
: [c] #include <avr/io.h> Int main (void){ DDRC &= ~(1<<PC0),~(1<<PC1),~(1<<PC2); // Eingang PORTC = 0x00; // Ohne pulldownwiderstände While(1){ if (PINC & (1<<PC0)==1){ // Bedingung = true führe die Schleife aus s++;} // Zählt eine Variable nach oben (+1 pro Durchgang der schleife) }
-
Thread
"avr-objdump: '_bung_inC.elf': No such file" Fehlermeldung
die folgende funktion durchgeführt werden { if (PINB & (1<<0)) //wenn PinB.0 gedrückt ist PORTC = (1<<0); //dann PORTC.0 Ausgabe } return 0; } [/c]
-
Thread
lcd 19264B will nicht.
dass sie sogar weiß sind" einstellen. Die Datenleitungen sind an PORTA, die Steuerleitungen an PORTC (von nem Atmega2560). Doch egal ob Reset High oder Low, Display auf On oder Off, Reset durchführen oder nicht, es zeigt einfach nichts an. Laut "Datenblatt" soll der "E-Cycle" min 1000ns lang sein
-
Thread
Benutzung des Arduino Bootloaders
Board einschalten - sie bleibt aus. [code] int main (void) { DDRB=255; PORTB=255; DDRC=255; PORTC=255; DDRD=255; PORTD=255; for(;;); .. [/code]
-
Thread
ATMega328-basierter Sprach-Synthesizer für den CPC 464 - Schnelles Byte-weises Lesen mit dem 328?
keine 8bit "am Stueck" frei an den Ports, deswegen musste ich ein Nibble vom PORTB und eines vom PORTC lesen und verknusen. Evtl. kostet selbst das zu viel Zeit... evtl. sollte ich die Daten lieber "Raw" in 2 Arrays speichern (eines fur PORTB, eines fuer PORTC), und vor dem Abspielen / Senden an den
int main(void) { DDRB = 0; DDRC = 0b00110000; initUSART(); clearBit(PORTC, 5); clearBit(PORTC, 4); while (receiveByte() != ':'); buffer_index = 0; last_low = 0; last_high = 0; initInterrupt(); while ( 1 ) { setBit(PORTC, 5
-
Thread
Berechnungsfehler bei der Konstruktion von Assembler Warteschleife?
), dann sind die Zeiten spürbar kürzer. Ich versuchte es so: [avrasm] longdelay: sbi PORTC, 0 ldi Temp3, 40 ; wait 1200ms loop: rcall Delay30ms ; 30ms x 40 dec Temp3 brne loop cbi PORTC, 0 ret [/avrasm] Das Signal auf PORTC dient
-
Thread
STM32Fxxxx Machbarkeit Frage
ganze Darauf zuschneiden. Quasi Steuerbyte = 10100000 bedeutet das 2 Byte nutzdaten von Porta und portc übertragen werden da auf Portb und Porto keine Veränderungen beim Sample vorhanden waren.
-
Thread
externer interrupt
1 << ISC10)|(1<<ISC11); sei(); while(1){ PORTC=0xff; _delay_ms(1); PORTC=0x00; _delay_ms(1); } } ISR(INT1_vect) { PORTB=0xff; PORTB=0x00; }[/c] Ein Signal des PortC wird dabei zum Test auf den INT1/PD3 gegeben. Zum Oszibild: blau PortC und gelb PortB
-
Thread
c compiler Unterprogramme aufrufen mit Funktion
Programm. //** D E F I N E S ********************************************* #define LED PORTC.RC0 //LED liegt an Port C RC0 //**Prototype*************************************************** void pausen ( int ms ); void main() { // Hauptprpgramm TRISC = 0; // set PORTC to be digital output PORTC = 0; // TURN off LEDs on PORTC while(1) { //Hauptschleife LED = 1; //LED einschalten
-
Thread
Frage zu Atmega8 Board/Programm
Ich habe es verstanden. Eine Frage noch...warum funktionierte es dann trotzdem, als ich über den PortC programmiert hatte??? Denn die Pullups sind ja in beiden Versionen ausgeschaltet gewesen...... HAT SICH ERLEDIGT...Es sind dann ja in C die andere Positionen...
www.mikrocontroller.net/articles/Formatierung_im_Forum > warum funktionierte es dann trotzdem, als ich über den > PortC programmiert hatte??? Weil Port C ein anderer Port ist. Da kannst du hinschreiben, was immer du willst, ohne dass es deine Eingänge auf Port B beinflusst.
-
Thread
Atmega32 ADC0 bis ADC7 nur High oder Low erkennen
1<<PORTB3); // Set PORTB3 ON } else if(!(PINC & (1<<PORTC4))) { // PORTC4 ACTIVE - DOWN PORTB |= (1<<PORTB0); // Set PORTB0 ON PORTB &= ~(1<<PORTB1); // Set PORTB1 OFF PORTB |= (1<<PORTB2); // Set PORTB2 ON PORTB |= (1<<PORTB3); // Set PORTB3 ON } else if(!(PINC & (1<<PORTC5))) { // PORTC5 ACTIVE - LEFT PORTB &= ~(1<<PORTB0); // Set PORTB0 OFF PORTB |= (1<<PORTB1); // Set PORTB1 ON PORTB |= (1<<PORTB2); // Set PORTB2 ON PORTB |= (
-
Thread
[C] GCC Atmega32, Menü über Funktionspointer, PeDa Entprellung, unterscheidet key_short/long nicht
TWI, an dem die RTC hängt, die ich jedoch erst später integriert habe. Darum habe ich das DDRC und PORTC auch so gesetzt: [c]KEY_DDR=0x02; // PINC als Eingang, bis auf PC0 + PC1 KEY_PORT=0xfc; // Int. Pull-Ups am Eingang aktiviert, bis auf PC0 + PC1[/c] Da ich aber nicht daran gedacht habe, die Repeat_Mask