-
Thread
problem mit Header Datei
(am ADC) { c=adc(0); if( c <= 158 ) { PORTD = ( 1 << LED1 ); PORTC=0x01; } else if( c <= 374){ PORTD = ( 1 << LED2 ); PORTC=0x00; _delay_ms(300); PORTC=0x01; _delay_ms(300); } else if( c < 1023) { PORTD = ( 1 << LED3 ); PORTC=0x00; _delay_ms(1000); PORTC=0x01; _delay_ms(1000); } else PORTD = 0; PORTC=0x00; } } void init_ports() { DDRD=0xFF; //PORTD als Ausgang
-
Thread
for Schleife
auslagern: > waits = 0; // signal wait = 0 > if(!(PINC&(1<<PC5))) // Abfrage PortC PC5Grün > leds_set_status(1,5); // schaltet LED 5 Grün auf ein > > else > leds_set_status(0,5); // schaltet LED 5 Grün auf aus
Hallo Der Code geht ganz hervorragend. Noch ein bischen angepasst, alles ok. Kleine Frage noch dazu. Wenn ich diesen Code mehrmals verwende, z.B. um unterschiedliche LED an verschiedenen Teilen im Prg zu schalten, muss
-
Thread
RS232 Befehl
"m8def.dat" $crystal = 8000000 $baud = 9600 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.5 = Input Do Debounce Pind
Danke!!! jetzt geht es. >In der Anleitung steht, dass die Box ASCII-Befehle möchte und keine >Hexstrings Hm, nicht gesehen. Noch mal, vielen Dank! Gruss Alex
-
Thread
EA DIP128-6 LCD Ansteuerprobleme (Wo liegt der Fehler im Code?)
PORTD,6 ;write sbi PORTD,5 ;data ldi r16,0b11111111 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 ;write data cbi PORTD,6 ;write sbi PORTD,5 ;data ldi r16,0b10101010 out PORTC,r16 sbi PORTD,2 rcall delay cbi PORTD,2 jmp start
Jeha! geht!! Danke!!! Wenn du mir jetzt noch sagst wie du darauf gekommen bist, bin ich glücklich :)
-
Thread
[ATMEGA168] ISP - Fuses falsch gesetzt
Warum tooglest du nicht den PC0 und verwendest den als Takt? PORTC ^= _BV(PC0);
Dein Rettungsprogramm im http://www.mikrocontroller.net/topic/235987#2391930 gibt ein Dauer-LOW auf PORTC.0 aus. Das ist nicht was du willst. Toggeln geht z.B. so ([[Bitmanipulation]]) oder wie ...(Gast) geschrieben hat: [C] #define F_CPU 1000000UL /* 1 MHz CPU clock */ #include <avr/io.h> int
-
Thread
Steuerung für Ersa-Kolben
Abdul K. schrieb im Beitrag #2237838: > Win7 auf dem Lötkolben? Ohne geht es nicht. Was hat das mit Windows 7 zu tun? Der Intel i7 ist eine Prozessor.
Config Portb.1 = Output ' Fet zum Einschalten der Heizung Config Portc.0 = Input 'adc0 = strommessung Config Portc.1 = Input 'adc1 = outputvoltage Config Portc.5 = Input
-
Thread
CAN Verarbeitung mehrer Botschaften
buffer_relais[7] = CANMSG; send_relais = 42; // Daten für TB-1 untere Reihe Laden PORTC = buffer_relais[1]; PORTG |= (1 << PG4); // Daten für TB-1 obere Reihe Laden PORTC = buffer_relais[0]; PORTG &= ~(1 << PG4); // Daten für TB-2 untere Reihe Laden PORTC = buffer_relais[3]; PORTG |= (1 << PG3); // Daten für TB-2 obere Reihe Laden PORTC = buffer_relais[2]; PORTG &= ~(1 << PG3); // Daten für TB-3 untere Reihe Laden PORTC = buffer_relais[5]; PORTD |= (1 << PD4); // Daten für TB-3 obere Reihe Laden PORTC = buffer_relais
-
Thread
vusb Probleme - allerdings nur auf PCB
kann ich leider erst morgen da ich hier grad keine teile habe... aber warum geht es dann auf dem board auch ohne c's?
io.h> int main(void){ DDRC = _BV(PC0) | _BV(PC1); while(1){ PORTC |= _BV(PC0); _delay_ms(100); PORTC ^= ~_BV(PC0); _delay_ms(100); PORTC |= _BV(PC1); _delay_ms(100);
-
Thread
Kann man folgenden Code platzsparender schreiben
hilft es teile des Programs in Assembler zu programmieren, wenn es nicht um Speicher im KB Bereich geht.
PORTB &= ~_BV(7); PORTC |= _BV(1); PORTC &= ~_BV(1); /* * Now, we're ready to hand over the data transmission to SPI. */ SPCR = _BV(SPE) | _BV(DORD) | _BV(MSTR); SPSR = _BV(SPI2X); } [/c] Kann es
-
Thread
Senderenschalten vor der Sendung per Uart
dem Senden automatisch eingeschaltet und ausgeschaltet nach den Senden, mit einem 3ten Portpin. Wie geht den das? Zur zeit mache ich noch: [code] PORTC |= (1 << PC4); delay_ms (1); sendecode(werte); delay_ms(1); PORTC &= ~(1 << PC4); [/code] Gruß Paul
Paul J. schrieb im Beitrag #5489069: > Wie geht den das? Gar nicht, Warum auch ? Der uC ist programmierbar. Paul J. schrieb im Beitrag #5489069: > Zur zeit mache ich noch: Vernünftig und geht. Reicht jedenfalls zum freischalten eines
-
Thread
Bascom ATmega8a - Problem aus Powerdown aufwecken
= Output Config Pind.2 = Input Portd.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Int0 = Low Level On Int0 Isr Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Isr_timer Enable
Nun habe ich jedoch ein anderes Problem... Dazu werde ich aber einen neuen Thread aufmachen, geht um was anderes.
-
Thread
Zeitscheibensysteme
void Application_1s (void) { blink = ~blink; //-------------- LED blinken -- if (blink) {PORTC = PORTC | LED; } else {PORTC = PORTC & ~LED; } } Ich will das die LED (LED_Bit) 400 ms an und 900 ms aus ist. Das ganze soll aber in der 100 ms Zeitscheibe ablaufen
Deine Variable i nix mit der Zeit zu tun hat, sondern in der Schleife decrementiert wird. Und das geht rasend schnell.
-
Thread
Einstieg in uC über Moodlight?
Pullup oder Pulldown? DDRC = 0b00110000; //PortC5 und C4 als Ausgang definieren und auf 0 setzen PORTC = (0<<PC5); //Ports LOW-Aktiv! PORTC = (0<<PC4); Das ist meine ganze Initialisierung. mfg
//PortC5 und C4 als Ausgang definieren und auf 0 setzen PORTC = (0<<PC5); //Ports LOW-Aktiv! PORTC = (0<<PC4); Das setzt gezielt gar nichts auf 0. Eine 0 die x mal nach links geschoben wird, ist immer noch 0. Obiges ist also äquivalent zu PORTC = 0
-
Thread
Servo-Signal auslesen mit Atmega 8 - wo liegt der Fehler?
doch mein Problem ist, dass dieser Wert sowohl bei minimaler als auch bei maximaler Knüppelstellung PORTC.5 einschaltet, bei einem um 1 höheren Rc_value geht bei keiner Knüppelstellung mehr der Port an. Meines Wissens hat ein Servosignal in den zwei Endstellungen einen Unterschied von ~1 Mhz, deswegen
mein Problem ist, dass dieser Wert sowohl bei minimaler als auch > bei maximaler Knüppelstellung PORTC.5 einschaltet, bei einem um 1 > höheren Rc_value geht bei keiner Knüppelstellung mehr der Port an. Kann nicht sein, denn grösser als 32767 kann ein Integer nicht werden. Das If Then kann nie eintreffen
-
Thread
Frequenz errechnen
Output ' Stiftleiste JP 2; Pin 3; PC0 Stepper1_reset Alias Portc.0 Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1 Stepper1_direction Alias Portc.1 Config Pinc.2 = Output ' Stiftleiste
Output ' Stiftleiste JP 2; Pin 3; PC0 Stepper1_reset Alias Portc.0 Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1 Stepper1_direction Alias Portc.1 Config Pinc.2 = Output ' Stiftleiste
-
Thread
Entprellung mit Dannegger-Code auf unterschiedlichen Ports
auch einen Zwischenschritt über eine Variable vorstellen: KEY_PIN_neu = ((PORTB |= _Taster1) | (PORTC |= _Taster2)); i = key_state ^ ~KEY_PIN_neu; [...] [/c] Könnt ihr das nachvollziehen?
deine Tasten an "aufeinanderfolgenden" Bist hängen - mit jeweisl einer Taste an Bit 0 von PORTB und PORTC ginge das nicht so einfach. [c] KEY_PIN_neu = ((PORTB |= _Taster1) | (PORTC |= _Taster2)); i = key_state ^ ~KEY_PIN_neu; [/c] ???? Damit komme ich nicht klar. Dazu finde ich auch keine
-
Thread
PWM mit ATMEGA8
eine ISR brauchst Du nicht, (auch kein sei) was geht denn an deinem Programm nicht, die Verstellung der PWM oder geht gar keine PWM?
> Wieso ist das mit PORTC unsinn? Weil ich Tomaten auf den Augen habe :-) Ich hab nicht mitgekriegt, dass deine Taster low aktiv sind
-
Thread
Tasterabfrage xmega8E
/*PORTC.2 auf low UV-LEDs->aus*/ PORTC.OUT &= ~ PIN3_bm; /*PORTC.3 auf high WW-LEDs->aus*/ PORTC.OUT &= ~ PIN4_bm; /*PORTC.4 auf high KW-LEDs->aus*/ //PORTC.OUT |= PIN3_bm; /*PORTC.3 auf high WW-LEDs->an 100%*/ //PORTC.OUT |= PIN4_bm; /*PORTC.4 auf high KW-LEDs->an 100%*/ PORTC.DIR = 0x1C; /*PORTC auf Ausgang LEDs*/ /*System ON/OFF*/ PORTC.DIR |= PIN1_bm; /*PORTC.1 auf Ausgang ON/OFF*/ PORTC.OUT
-
Thread
Probleme bei der Stueuerung über Taster!
Hier noch der Plan der Schaltung. PD4 geht auf RS vom Display und Interrupt des AD5932 auf PD6. Das ist im Plan noch falsch. Martin
ich diese schöne funktion am besten setzen? Wieso um pflanzen? sind doch dioden mit drin. Außerdem geht es jetzt leider nicht mehr. Würde ich auch nicht mehr so machen! Martin
-
Thread
UART mit LIN-Protokoll
auslösen } }//parität else{ DDRC = (1 << DDC4); PORTC |= (1<<PC4);} //gelbe LED eischalten, somit liegt ein Paritätsfehler vor }//syncfeld }//FE }//ISR [/c]
else{ return UDR0; // Zeichen aus UDR an Aufrufer zurueckgeben } DDRC = (0 << DDC3); PORTC &= (0<<PC3); //rote LED ausschalten (receive) } [/c]
-
Thread
Ports mit EODER verknüpfen
am Ausgang. Hier der Programmauszug: ............. Freq=TCNT0; if(Freq >= 128){ PORTC &= ~(1<<PC1); } else { PORTC |= (1<<PC1); } if(Freq >= 256){ if(PINC & (1<<PC0)) { PORTC &= ~(1<<PC0); } else { PORTC |= (1<<PC0); } PORTB ^= PC0
? (8-bit oder 16-bit Counter) > if(PINC & (1<<PC0)) > { > PORTC &= ~(1<<PC0); > } > else > { > PORTC |= (1<<PC0); > } > > PORTB ^= PC0 ^ PC1; //Hier sollte ein um 90 Grad Phasenverschobenes > //Rechteck zu PC0 rauskommen!
-
Thread
Wie ist PORTB implementiert?
template<...> auch nicht eine uint8_t PortNummer übergeben, sondern eine voll funktionsfähige class{} PortC (oder ein struct{} ) Als Beispiel: ports_.h enthält die class PortImplementation{}, die die Funktionalität enthält. Das Makro AUTO_IO_REG_WRAPPER stellt die Verbindung zu avr.io her. . der PortC wird deklariert mit: [c] namespace Private { AUTO_IO_REG_WRAPPER (PORTC, OutC, uint8_t); AUTO_IO_REG_WRAPPER (DDRC, DirC, uint8_t); AUTO_IO_REG_WRAPPER (PINC, InC, uint8_t); } using PortC = PortImplementation < Private::OutC,
-
Thread
ATMega8 und ATMega168, beide wie tot
#include <avr/io.h> #include <util/delay.h> int main() { DDRC = 0x3f; while (1) { PORTC ^= 0x3f; //_delay_ms(5); PORTC ^= 0x3f; } } [/pre] Leider liegen die Pins am PortC alle auf gnd. Takt intern oder Quarz 16MHz, beim M168 kann ich den Takt am Ausgang sehen.
warum ein AVR sich so verhält und wie könnte ich noch prüfen, ob er z.B. intern ständig in reset geht oder das Programm ordentlich abarbeitet ? Gruß, Michael
-
Thread
Über Mikrocontroller Beschleunigungssensor auslesen
, die 0 Ahnung davon haben, wie so eine CPU funktioniert oder worums beim Programmieren überhaupt geht.
Es geht nicht darum, ob du sich schon super auskennst. Es geht um die Fähigkeit sich selbstständig in ein Thema einzuarbeiten und zumindest sich erstmal die Grundlagen selber durchliest. Frage: Hast du
-
Thread
Atmega 128 reset bei Interrupt
// 1mW Outputforce, 120k sendStringRS232(data); */ _delay_ms(500); PORTC = 0b00000001; _delay_ms(500); PORTC = 0b00000010; _delay_ms(500); PORTC = 0b00000100; _delay_ms(500); PORTC = 0b00001000; _delay_ms(500); PORTC = 0b00010000; _delay_ms(500); PORTC = 0b00100000; _delay_ms(500); PORTC = 0b01000000; _delay_ms(500); PORTC = 0b10000000; } return 0; } /** * This function initializes the SPI Interface (
-
Thread
AVR ATmega Probleme mit Timer1
); // Timer/Counter1 Output Compare Match A Interrupt Enable } ISR (TIMER1_COMPA_vect) { PORTC ^= ( 1 << PC5 ) } [/c]
PORTC auf Ausgang gestellt?
-
Thread
Probleme mit rjmp beim AVR Atmega 8L
(Also Leuchtdiode über Taster einschalten), bis die drei > Zeilen wieder darunter kommen, schon geht die Leuchtdiode (dies mal halt > an PORTC)wieder an :-( ldi r17,0b00000100 mov r16,r17 out PORTC,r17 warum kopierst du r17 nach r16, wenn du dann doch r17 ausgibst? (Außerdem
(Also Leuchtdiode über Taster einschalten), bis die drei >> Zeilen wieder darunter kommen, schon geht die Leuchtdiode (dies mal halt >> an PORTC)wieder an :-( > > > ldi r17,0b00000100 > mov r16,r17 > out PORTC,r17 > > > warum kopierst du r17 nach r16, wenn du dann doch r17 ausgibst
-
Thread
meinungen zu ass.prog.
enable global int ----------------------------------------------------------- Kann man auf z.B. Portc (Latch oder Pin) schreiben (out), obwohl der Port als "in" und "hochohmig/tristate" konf. ist ? Bei mir gehts,wie sollten sonst Daten zu den Leds kommen ? (siehe Listing).Etwas seltsam. Für mich irgendwie praktisch,sonst müßte ich den Portc dauernd umschalten,beim Daten Schreiben oder Lesen. Im UP "io_write:" werden Portc Daten geschrieben. Portc ist als "in" konfiguriert.Ein Widerspruch ? Oder mein Fehler? Wichtig:Es funktioniert
-
Thread
F_CPU bei atmega644 Standardeinstellungen
/ WARTEN AUF CTS SIGNAL UDR0 = data; PORTC=1<<PC0; } [/C]
genau. Besser wäre ein Quarz. Selbst mit Quarz beträgt der Baudratenfehler 8.5%. Sprich Baudrate geht nicht mit 1MHz.
-
Thread
Skurriles Problem mit BS170 Mosfets
* Serial protocol for 74HC595 shift register */ #define DDR_SER DDRC #define PORT_SER PORTC #define PIN_SER PINC #define SER PC0 #define DDR_SCK DDRC #define PORT_SCK PORTC #define PIN_SCK PINC #define SCK PC1 #define DDR_SCL DDRC #define PORT_SCL PORTC
brueckst und die LED ist immer noch an: -> BS170 defekt. Das habe ich gerade gemacht und tatsächlich geht das bei demjenigen, dessen LED am hellsten leuchtet, nicht, dass die LED ausgeht. Bei einem der Ok ist (Segment geschaltet) geht die LED aus. Bei einem desssen LED ohne Pegel ein wenig leuchtet geht
-
Thread
Pollin Display Fragen (bezug auf "Tetris auf AtMega8")
herausgefunden: [code] inline void LCD_Write(char isData,char data) { PORTB=data; if (isData) PORTC|=(1<<LCD_A0); else PORTC&=~(1<<LCD_A0); // set bit 'LCD_E' -> write PORTC|=(1<<LCD_E); // asm volatile("nop"::); // unset bit 'LCD_E' -> stop write PORTC&=~(1<<LCD_E); }; inline char LCD_Read() { PORTC|=(1<<LCD_A0); PORTC|=(1<<LCD_RW); // perform read PORTC&=~(1<<LCD_RW);// stop read return PORTB; } [/code] Wofür machst Du manchmal diesen asm volatile("nop"::); (das wartet genau einen
-
Thread
Mega168: PWM geht nicht?
Guten Abend! Ich habe heute probiert, auf meinem mega168 eine PWM ans laufen zu bekommen. Das klappt aber irgendwie nicht. Auf dem Mega8 hat es mit ähnlichem Code geklappt. Wäre nett, wenn ihr mir helfen würdet. Hier ist der Code, vielleicht könnt ihr ja mal drüber gucken. [c] #define VERSI0N 0x01 // Includes für Ein- und Ausgänge #include <avr/io.h> // Taktfrequenz 16MHz + Verzögerungs- Include #define F_CPU 16000000 #include <util/delay.h> /********************* Hauptprogramm *********************/ int main(void) { // Outputs definieren DDRB = 0x0E; DDRC = 0x01
-
Thread
AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !
Mit der bisherigen Version geht das nicht, aber mit der Version im Anhang sollte das möglich sein.
das PAL Signal direkt auf den Antenneausgang schleift. Und wie björn doch shcon erwähnte Mega8 --> Geht, Mega16 --> geht nicht. Frage ist halt warum! Und die WIderstände hab ich so wie oben im Schaltplan angegeben gewählt.
-
Thread
Programm bleibt stehen
( min == 60 ) min = 0; st = min % 24; _delay_ms( 500 ); } } [/c] Das geht ein wenig schneller, so dass wir dann alle LED durch haben :-)
Genau Masse geht dann geschaltet auf den jeweiliegen Eingang vom PORTC
-
Thread
Folientastatur
folientastatur&fh_refview=search) folgendermaßen angeklemmt: die ersten drei leitungen (Spalten) PORTC0-2 die anderen 4 (Zeilen) an PORTC3-6 Hier das Prog ============================================================================ void main(void) { ////////////////////////////////////
Zahl = '*'; lcd_puts("*"); } _delay_ms(50); //// Spalte_2 //// PORTC |= 0x07; //Port C0-2 auf HIGH setzen PORTC &= 0xFD; //Port C1 LOW setzen [Spalte 2] if( ( PINC & ( 1 << PC3 ) ) == 0 ) //Zeile_1 { Zahl = 2; lcd_puts("
-
Thread
Nicht auffindbarer Fehler in Code für Roboter (Bascom)
Size = 30 , Bytematch = 13 Declare Sub Serial0charmatch() 'Config Outputs Config Portc.4 = Output 'M_left1a M_left1a Alias Portc.4 Config Portc.5 = Output 'M_left2a M_left2a Alias Portc.5 Config Portc.6
Size = 30 , Bytematch = 13 Declare Sub Serial0charmatch() 'Config Outputs Config Portc.4 = Output 'M_left1a M_left1a Alias Portc.4 Config Portc.5 = Output 'M_left2a M_left2a Alias Portc.5 Config Portc.6
-
Thread
Warum verlässt der die Endlosschleife?
ifndef F_CPU #define F_CPU 12000000UL #endif int main (void) { DDRC |= (1 << PC0); PORTC |= (1 << PC0); while (1) { PORTC &= ~(1 << PC0); _delay_ms(200); PORTC |= (1 << PC0); _delay_ms(200); } return 0; } [/c] Beim
#endif #include <util/delay.h> static int i; int main (void) { DDRC |= (1 << PC0); PORTC |= (1 << PC0); while (1) { PORTC &= ~(1 << PC0); for (i=0; i<10; i++) { _delay_ms(20); } PORTC |= (1 << PC0); for (i=0; i<10; i++)
-
Thread
Atmega16 PortC p2-5 ohne Funktion
microcontroller Welt und steh vor einem Problem. Hatte mir eine LED Brücke gebaut (8 LEDs) und diese an PortC 0-7 angeschlossen. Dann diese alle mit DDRC = 0xFF; PortC = 0x00; alle auf Low Pegel gesetzt jedoch gehen nicht alle LEDs nur PC0 PC1 PC6 und PC7. Die andern sind ohne Pegel. Hab die selbe Programmierung
Schaltet das JTAG Interface ab, geht auch dauerhaft über die Fuses.
-
Thread
LCD von Powertip PC 2004A B reagiert nicht
Ich habe folgendermassen den LCD angehängt: Pin1: Gnd Pin2: Vcc 5V Pin3: Poti 10k Pin4: Portc.4 Pin5: Gnd Pin6: Portc.5 Pin7: Gnd Pin8: Gnd Pin9: Gnd Pin10: Gnd Pin11: Portc.0 Pin12: Portc.1 Pin13: Portc.2 Pin14: Portc.3 Pin15: NC Pin16: NC Der Bascom-Code: [code] 'Bascom
$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 'Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "Hallo Welt" [/code] Für eure Hilfe danke ich euch im Voraus. Freundliche
-
Thread
Lichtsensor und ADC - Bascom
* Adc_multi Do If Volt >= 2 Then Portc.0 = 1 Else Portc.1 = 1 End If Waitms 100 Loop Danke Für Die Hilfe.!
= 0 Portc.0 = 1 Else Portc.0 = 0 Portc.1 = 1 End If Messergebnis = Getadc(5) Volt = Messergebnis * Adc_multi Waitms 100 Loop
-
Thread
CAN funktioniert , aber nicht im vollen Umfang
PORTC &= ~(1<<PC4); PORTD |= (1<<PD7); } // ORANGENE LED (PC4) leuchtet, Rote LED (PB2) aus, Blaue LED (PD7) aus. else { PORTB &= ~(1<<PB2); PORTC |= (1<<PC4);
Hast recht, werd ich in Zukunft machen! Für die Vollständigkeit, so geht es!
-
Thread
Mega8: VQC10 LED-Matrix 5x7 Zeitmultiplex - Bestimmte Bits eines unsigned char auf Ports ausgeben
und dann die Taktleitung wieder zurücksetzen, dann neues Bitmuster für nächste Zeile und das ganze geht von vorne los. Grüsse, Thomas
spaltendaten(daten_st2) temp33 = spaltendaten(daten_st3) temp44 = spaltendaten(daten_st4) PORTC = 8 PORTB = temp11 PORTC = 9 PORTB = temp22 PORTC = 10 PORTB = temp33 PORTC = 11 PORTB = temp44 PORTC = zeile End Interrupt [/pre] Ich hoffe, ich werde fürs FastAVR
-
Thread
DS1820 will nicht an Atmega32
Port?? (d.0) [c] $regfile = "m32def.dat" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Config Lcd = 16 * 2 Config 1wire = Portd.0 Const Parasitpower = 1 Const Ds1820 = &H10 Const Skiprom = &HCC
am avrbord / bzw am armega8 geht es einwandfrei halt bloß nicht an einen Atmega32!!!
-
Thread
Sleep Mode beim ATMega16
system_state with dual led between PB2 and PB3 #define Show_Status (IO == System_State) ? (Set_Bit(PORTC, PC0)) : (Set_Bit(PORTC, PC1)) //check if trafo works. If voltage comes back to PIN1 everything is OK #define Check_Output (bit_is_set(PINC,PIN5)) ? (System_State = IO) : (System_State = NIO)
PORTB, PB0); // Ausgang wieder aus Clr_Bit(PORTC, PC0); Clr_Bit(PORTC, PC1); OCR2A = time_off; // Wecker stellen } } void init_io(void){ // init Outputs Set2Output(DDRB
-
Thread
TSIC und ATMega
einer neuen Übertragung! > (Die Abstände innerhalb der Übertragung sind unter 256 µs.) Na also, geht doch. Warum nicht gleich so?
reicht der Zustand beim Timer-Ereignis. bingo schrieb im Beitrag #3025721: > Der Modus mit ein/aus geht also wesentlich schneller > als der frei laufende Modus das stimmt so nicht. Das hängt davon ab, wann die Auswertung startet. Das kurz vor dem Satartbit sein, dann geht es schneller, oder während
-
Thread
mehrere Pins vom Mega32 einlesen und Frage zu Ponyprog
Stimmt, in einer Schleife geht das nicht... Dann bleibt vermutlich tatsächlich nur die Variante mit der Schieberei.
mit variablem Z-Pointer arbeiten. -dito anstatt OUT eben ST Also ldi ZH,0 ldi ZL,PORTC+0x20 Jetzt kann man die Subroutine aufrufen, PORTC kann nun mit ld r16,Z st Z,r16 gelesen und geschrieben werden. Um die Bitnummer variabel zu gestalten nimmt man einfach ein Byte
-
Thread
Präprozessoranweisung das erste Mal
Matthias. hier ist die Headerdatei: #ifndef keypad_h #define keypad_h #define keypad_port PORTC #if (PORTC=keypad_port) #define Taster PINC #if (PORTA=keypad_port) #define Taster PINA #endif extern unsigned char flankenwechsel2; extern unsigned char keypad_uebergeben;
Ok, dann soll für jetzt mal die Information ausreichen, daß es dem Präprozessor da genau wie dir geht. ;-)
-
Thread
AD9850-Modul mit AtMega steuern
[i]; while ((SPSR & _BV(SPIF)) == 0) /* wait */; } /* Update now. */ PORTC |= _BV(1); PORTC &= ~_BV(1); } //... int main(void) { uint32_t ddsval = 1000000ul; //... fq_ud(val_to_dds(ddsval)); //... } [/c]
while ((SPSR & _BV(SPIF)) == 0) { // wait while busy } } // Update now. PORTC |= _BV(1); // set PORTC.Bit1 PORTC &= ~_BV(1); // res PORTC.Bit1 } void main(void) { uint32_t ddsval = 1000000ul; AD9850_wr_serial(ddsval); // 1MHz while(1) { //
-
Thread
bit invertieren in C
nicht ganz konform - aber mit CodeVision geht auch: PORTC.2=~PORTC.2; Ich finde es sehr praktisch.
ich benutze immer: Portc.1=!Portc.1 mfg
-
Thread
Drehimpulsgeber
- 62) an meinem xmega128A1 zu betreiben. Angeschlossen sind PinA und PinB des Impulsgebers an PORTC Pin0 und Bin1. Ich verwende hierfür die integrierten PullUps(PORT_OPC_WIREDANDPULL_gc). Folgender Code wird in einem Interrupt jede Millisekunde ausgeführt: cli(); newB = (PORTC.IN & 0x02
oldB xorA xorB 0 0 0 0 jetzt wechselt der Encoder zu 1 0 wie gehts weiter? Dann wechselt er zu 1 1 und weiter gehts zu 0 1 und 0 0 für diese Reihenfolge (ich hoffe ich hab mich da jetzt nicht vertan) spielst du die entsprechenden