-
Thread
Atmega88P, Blinklicht in AtmelStudio 7 simulieren
ich direkt in der ISR vom Timer0: [c] #define DEBUG_DIR DDRC #define DEBUG_VAL PORTC #define DEBUG_PIN PC5 ISR( TIMER0_COMPA_vect ) { ++tick_ms; if( tick_ms == 1000 ) { /* Set debug state */ DEBUG_VAL ^= (1 << DEBUG_PIN); tick_ms = 0U; } } [/
PRESCALER) / IRQ_VALUE_MS ) /* GPIO ports */ #define DEBUG_DIR DDRC #define DEBUG_VAL PORTC #define LED_DIR DDRD #define LED_VAL PORTD #define INP_DIR DDRB #define INP_VAL PINB /* GPIO pins */ #define DEBUG_PIN PC5 #define SENSOR_TOP PB0
-
Thread
Pin Change Interrupt PCINT0
Status-LEDs PC0, PC1, PC2, PC3 DDRC |= ((1<<DDC0)|(1<<DDC1)|(1<<DDC2)|(1<<DDC3)|(1<<DDC4)); PORTC &= ~((1<<PORTC0)|(1<<PORTC1)|(1<<PORTC2)|(1<<PORTC3)|(1<<PORTC4)); // -- Konfiguration PCINT0 Interrupt an Pin PB0, PB1 & PB2 -- DDRB &= ~((1<<DDB0)|(1<<DDB2)|(1<<DDB2)); PORTB |=
15; i++) { PORTC = i; _delay_ms(200); } sei(); //LED Sequenz beendet? Interrupts aktivieren. } [/c]
-
Thread
AVR Multiplexing 7 Segment-Anzeigen
Florian D. schrieb im Beitrag #4617937: > Ist es so trotzdem (aufgeteilt auf PORTC und PORTD) relativ gut machbar Ja. Man kann die Bits einzeln setzen, siehe Arduino digitalWrite http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1
Florian D. schrieb im Beitrag #4617937: > Ist es so trotzdem (aufgeteilt auf PORTC und > PORTD) relativ gut machbar, Es ist gut machbar. Lege die Ansteuerung der beiden Segmente von PD0+PD1 auf PC0+PC1. Die Digits werden dann mit PC2 - PC5 angesteuert.
-
Thread
Bitmanipulationsproblem
Welcher Prozessor ? PORTC wirklich Register für Input ?
Der Gast schrieb im Beitrag #4609110: > PORTC wirklich Register für Input ? Mit hinreichender Wahrscheinlichkeit sollte es das PINC Register sein...
-
Thread
Assembler Programm zu umständlich
kommt ggf. noch der CRT0-Startcode aus der C-Bibliothek. Muss ja, wegen Stack. [c] PORTC = (PORTC & 0x0f) | i; // Ausgabe von i auf PORTC[0..3] [/c] Die unteren 4 bits sollen ausgeblendet werden, oder ? [c] PORTC = (PORTC & 0xf0) | i; // Ausgabe von i auf PORTC[0..3] [/
den Stack-Pointer mit 0 initialisieren. Die neueren setzen ihn stattdessen auf RAMEND. > PORTC = (PORTC & 0x0f) | i; // Ausgabe von i auf PORTC[0..3] > > Die unteren 4 bits sollen ausgeblendet werden, oder ? > > PORTC = (PORTC & 0xf0) | i; // Ausgabe von i auf PORTC[0..3] Ja
-
Thread
ATMEGA8 - ULN2803 - LM23-K
ich komme nicht weiter... (sehr alten Compiler aber läuft) PORTD ist für die Aushabe am ULN PORTC lediglich für die Bestätigung, das der Taster an PORTB gedrückt wurde. PorgrammCode: #define F_CPU 3686400 #include <avr\io.h> #include <avr\wdt.h> #include <util\delay.h> #include
while(!(PINB & 0b00000010)){ PORTC = 0b00000001; if(j>=0){ PORTD = schritt[j]; newdelay(50); j--; } else { j=3; } } PORTC = 0b00000000
-
Thread
Verständnis Zugriff auf IO-Ports, Portierung von AVR zu ESP
um folgenden Code. [c]#define portOfPin(P)\ (((P)>=0&&(P)<8)?&PORTD:(((P)>7&&(P)<14)?&PORTB:&PORTC)) #define ddrOfPin(P)\ (((P)>=0&&(P)<8)?&DDRD:(((P)>7&&(P)<14)?&DDRB:&DDRC)) #define pinOfPin(P)\ (((P)>=0&&(P)<8)?&PIND:(((P)>7&&(P)<14)?&PINB:&PINC)) #define pinIndex(P)((uint8_t)(P>13?P
-
Thread
AVR springt nicht aus Funktion
<util/delay.h> #define Stat_LED_bl PC5 #define Stat_LED_rt PC6 void test_Funktion() { PORTC |= (1<<Stat_LED_bl); // blaue Status-LED einschalten } int main(void) { test_Funktion(); PORTC |= (1<<Stat_LED_rt); // rote Status-LED einschalten while (1) {
findest. >Das führt zumindest genau zu dem verhalten. Nö, macht es nicht. Im M103-Mode wäre PortC generell als Ausgang konfiguriert. MfG Spess
-
Thread
Webserver Ethernet ENC28j60 ATmega1284p TCP ARP Assembler
ATmega1284p stelle ich Euch noch mit zur Verfügung, JTAG-Interface war bei mir noch aktiviert und PORTC ließ sich nicht auf Ausgang schalten.... lange gesucht und µC vergeblich gewechselt. >Ich meine mich zu erinnern, dass mein ENC Interrupts meldete, die ich >gar nicht enabled hatte (Senden
-
Thread
ATMega8: HDMM01 Sensor auslesen über I2C(Atmel)
return (data); //Return the degrees value (16-bit integer from 0-3650). } int main(void) { PORTC = 0xFF; I2C_init(); char data[16]; unsigned int compass; unsigned char length; while(1) { /*compass = KompassRead(); itoa(compass, data, 10); length =
-
Thread
Atmega8 und I2C-Display startet nicht
<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } void Port_init() { DDRB |=(1<<PB0);// PB0 Ausgang (LED) PORTC |=(1<<PC4);//PC4 Pullup (SDA) PORTC |=(1<<PC5);//PC5 Pullup (SCL) } void I2C_init() // (100KHz) { TWSR = 0; TWBR = 12; } void uart_send_string(const char *s) { while(!(UCSRA&(1<<UDRE
<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } void Port_init() { DDRB |=(1<<PB0);// PB0 Ausgang (LED) PORTC |=(1<<PC4);//PC4 Pullup (SDA) PORTC |=(1<<PC5);//PC5 Pullup (SCL) } void I2C_init() // (100KHz) { TWSR = 0; TWBR = 12; } void uart_send_string(const char *s) { while(!(UCSRA&(1<<UDRE
-
Thread
DMX-Transmitter Code von Henne’s Sites ändern
auskommentiert werden. Das Invertieren ist in den Pullup begründet. [c]DDRC= 0; //enable DIPs PORTC= 0xFF; [/c] Auf Eingang schalten und Pull Up aktivieren, wenn man nun den Eingang ließt ist dieser 1 und wenn man den Schalter auf On stell 0 . Alles wichtige läuft komplett in der ISR ab
solche Race Konditionen vernünftig abzusichern. Bei jeden durchlaufen der for schleife wird der PortC gelesen und ins Array geschrieben. Das muss auskommentiert werden! Sonst überschreibt diese Anweisung immer dein Value.
-
Thread
SPI - Chip Select funktioniert nicht am PortB
das mache ich Daher kannst du jeden beliebigen Pin dafür verwenden. -> dachte ich auch. Mit PortC klappts, mit PortB2 nicht.
-
Thread
Attiny2313 + LM7001 + Bascom - Wer kann helfen?
gerne mal nach deinem Vorschlag testen ... Ich habe es als Ausgang bisher immer so hinbekommen > PORTC.x PORTD.x usw. Und als Eingabe für Tasten habe ich immer direkt im Code dieses geschrieben: IF PINC.x = 1 THEN mache dies EndIf Hat bisher einwandfrei funktioniert. Aber wie gesagt ich werde
gerne mal nach deinem Vorschlag testen ... Ich habe es > als Ausgang bisher immer so hinbekommen > PORTC.x PORTD.x usw. Und als Bezweifle ich sehr, aber OK, wenn du es sagst... > Eingabe für Tasten habe ich immer direkt im Code dieses geschrieben: > IF PINC.x = 1 THEN mache dies EndIf > Hat bisher
-
Thread
DS18S20 wird vom ATmega8 nicht gefunden
swstack = 64 $framesize = 64 Config Lcd = 20 * 4a , Chipset = Ks077 Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1 , Db5 = Portc.2 , Db4 = Portc.3 , E = Portc.4 , Rs = Portc.5 Initlcd Config 1wire = Portd.7 Const Ds18s20 = &H10 Const Skiprom = &HCC
m8def.dat" $crystal = 8000000 Config Lcd = 20 * 4a , Chipset = Ks077 Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1 , Db5 = Portc.2 , Db4 = Portc.3 , E = Portc.4 , Rs = Portc.5 $hwstack = 40 $swstack = 40 $framesize = 60 Declare Sub Temperatur_aus_ds18b20 Declare Sub Temperatur_aus_ds18s20
-
Thread
ATmega32 16PU erster Schritt mit AtmelStudio
endif #include <avr/io.h> #include <util\delay.h> int main(void) {DDRC |= (1<<6); do{ PORTC |= (1<<6); _delay_ms(1000); PORTC &= ~(1<<6); }while(1); } [c]
-
Thread
AVR- Taster an PortPin anschließen
Start DDRD &= ~(1<<PD3); //Int1 DDRC &= ~(1<<PC4); //Ende // Pull-up resistor PORTC |= _BV(PC3); PORTC |= _BV(PC2); PORTD |= (1<<PD1); // Enable pull-up resistor PORTD |= (1<<PD2); // Enable pull-up resistor PORTC |= (1<<PC4); // Enable pull-up resistor
Hallo, Diese IF-Abfrage [c](PINC & (1 << PC4))[/c] ist fast immer Wahr, da der Pullup von Portc.4 eingeschaltet wurde.
-
Thread
Atmel Studio 7 - Atmega328p - Befehle werden rot unterstrichen
einfach b0..b7 zu definieren und dann nur diese zu benutzen, also: [c] PORTB &= ~(1 << b5); PORTC &= ~(1 << b6); [/c] Und auch das nur, damit man weiss, dass es sich um eine Bitoperation handelt und das man genau diese bits setzen oder löschen wollte. Weder PB5 noch PORTB5 haben irgendetwas
-
Thread
RN4020 PIC18 UART
High level indicates module is awake and active. ***********************/ PORTC = 0x00; TRISC = 0b10010001; LATC = 0b00101110; SPEN=1; //bit SPEN (RCSTA1<7>) must be set (=1) /************************ * Port D -> LEDs * PD7:
-
Thread
ATtiny1634 kein Eingang mit Pullup?
=0xff; DDRB=0x00; PORTB=0xff; while (1) { if (PINB&(1<<DDB3)) { PORTC=0x00; } else { PORTC=0xff; } } } [/C] Was kann die Ursache sein? Fuses falsch? Danke im Voraus! Beste Grüße Dani
-
Thread
WinAVR bleibt nach Interrupt stecken und ignoriert Schleife
if(counter>blue){ pattern&=~ (1<<2); } if(counter==255){ counter=0; } PORTC= pattern; } int main(void){ /* PC0 rot PC1 gruen PC2 blau */ init(); red=202; while(1){ green=200; // wird nicht ausgefuehrt DDRC=0XFF; //wir nur ein mal ausgefuehrt
-
Thread
PWM mit Sleepmode
PB0) | (1<<PB3) | (1<<PB4) | (1<<PB5));//PB1/2 PORTB|=((1<<PB2)|(1<<PB1)); DDRC|=(1<<PC5); PORTC|=(1<<PC5); /******************PWM*******************/ ICR1=0x9C40; // -> 20ms Periodendauer (Topwert, ab da wieder auf 0) vorher 7fff TCCR1A |= ((1<<COM1A1) | (1<<COM1B1)); //Bei Wert ICR1
//LADE-STEUERUNG////////////// if(akkuadc()<50)//wenn akku <3V ladung(PC5) aus { PORTC&=~(1<<PC5); ladeflag=1; } else if(ladeflag==0)PORTC|=(1<<PC5); if(akkuadc()>75) ladeflag=0; ///////////////SONNENSENSOR AUSWERTEN////////////// if(adc(2)<124)//azimut
-
Thread
SPI immer gleiche Antwort
sei(); USART_Transmit('O'); USART_Transmit('K'); DDRC &= ~(1<<PC0); PORTC |= (1<<PC0); //ChipslesctPin auf Ausgang DDR_SPI |= (1<<DD_SS); SPI_MasterInit(); // x und y Achsen deaktivieren u8_spi_write_buffer[0] = 0x20; u8_spi_write_buffer[1] = 0x04
sei(); USART_Transmit('O'); USART_Transmit('K'); DDRC &= ~(1<<PC0); PORTC |= (1<<PC0); //ChipslesctPin auf Ausgang DDR_SPI |= (1<<DD_SS); SPI_MasterInit(); PORT_SPI |= (1<<DD_SS); // x und y Achsen deaktivieren u8_spi_write_buffer[0] = 0x20; u8_spi_write_buffer
-
Thread
FT800 / FT810 Library
high, PowerDown set to low, pullup-resistors for unused pins activated */ DDRC = 0x00; PORTC = 0xff; DDRD = 0x00; PORTD = 0xff; Der Bildschirm meldet sich nur mit einem mittelhellen Bildschirm. (grau) Wenn ich (in TFT_init(void))das Kalibrieren des Bildschirms einschalte läuft
das Ganze jetzt noch mal "on the fly" auf mit einer > auf F303 umgelöteten BluePill. Ich habe den PORTC, PIN15 im verdacht. Da > hängt PDN dran und die Pins C13, C14 und C15 sind bei STM schwache > Sonderlinge. Interessant. Vor allem frage ich mich gerade warum PD scheinbar zappelt. Paul B.
-
Thread
GLCD funktioniert an mega128 aber nicht an mega32
habe als Dataport den PortC Bit0-Bit7 und als Controlport den PortB Bit0-Bit4 genutzt. (http://www.mikrocontroller.net/topic/83008 bis auf kleine Änderungen quasi dieser code) JTAG ist an PortC, habe JTAGEN in den Fuses
-
Thread
PIC18F66 Konflikt zwischen RA0 und Init CAN-Modul
TRISC = 0x08; // RC3(SCK) & RC4(SDI) as input, others as output PORTC = 0x00; // clear PORTC TRISD = 0x00; // set PORTD as output TRISE = 16; // RE4(CAN RX) as input, others as output (CAN TX
configureCAN(); // Configure CAN module Lcd_Init(); while(1) { PORTC = 0x1; Delay_ms(500); PORTC = 0x0; Delay_ms (500); for(k=0;k<4;k++) { PORTB = pin_mux[k]; // set MUX/I0 Delay_ms(1); adc_rd = ADC_Read(0); // get ADC value from
-
Thread
Barcodescanner mit Atmega128 einlesen
******* LCD konfigurieren ******************* Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 Config Lcdbus = 4 ' einmaliges Initialisieren des Displays Dim ___lcdno As Byte ___lcdno = 0 :