-
Thread
C++ auf einem MC, wie geht das?
. Nur hier geht es nicht um AS sondern um C++.
nichts passieren. Häää? Und dann werden die Member der abgeleiteten Klassen verwendet? Falls das geht, würde ich sehr gern lernen, wie das geht.
-
Thread
Timer1 Atmega8A?
; [/c] Zufrieden ? Und auch mit 0x80 wird es funktionieren: [c] if ((PORTC != 0) && (PORTC < 0x80)) PORTC <<= 1; else PORTC =1; [/c]
im Beitrag #3864131: > Zufrieden ? Nein. Marc Vesely schrieb im Beitrag #3864131: > if ((PORTC != 0) && (PORTC < 0x40)) PORTC <<= 1; else PORTC =1; PC6 ist Reset. Da läuft er zwar rüber aber die Anzeige bleibt auch einmal dunkel. [c] if (PORTC < 0x20) PORTC <<= 1; else PORTC =1; [/c]
-
Thread
Funktioniert diese Schleife?
jeden Ratschlag :) int main() { int ergebnis; while((PINB == 0x01) || (PINB == 0x02)) { PORTc = 0x01; _delay_ms(2); PORTC = 0x02; _delay_ms(2); } if ((PINB == 0x01) && (PORTC == 0x01)) { ergebnis+= 1; main(); } if ((PINB == 0x01) && (PORTC == 0x02)) { ergebnis+= 10; main();
Hi Wenn deine Tastatur wirklich so angeschlossen ist, dann geht das > DDRC = 0x40; // x1 auf ausgang > PORTC = 0x40; //x1 auf High ins nirgendwo ->PC6. Und die Ansteuerung für PC2 fehlt. MfG Spess
-
Thread
lcd keine funktion auf atmega16 portc
sorry meinte so: [code] Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 [/code]
geht auch nichts! ist die display config richtig in deinem prog.? Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 2
-
Thread
Einführung in Octal 3-State Noninverting Transparent Latch gesucht
$regfile = "m8def.dat" $crystal = 4000000 Config Portb = Output Config Portd = Output Config Portc = Output Do Portd.7 = 0 Portd.6 = 1 Portb.0 = 1 Portb.1 = 1 Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 0 Portc.4 = 1 Portc.5 = 0 Portd.6 = 0 Loop zeigt er mir nüscht an
= 1 'LATCH Enable Portb.0 = 0 Portb.1 = 1 Portc.0 = 0 Portc.1 = 1 Portc.2 = 0 Portc.3 = 1 Portc.4 = 0 Portc.5 = 1 Loop so worked es
-
Thread
LCD Uhr mit Alarmfunktion mit Drehencoder in BASCOM (Ein kleines Projekt für BASCOM Änfänger Vol3)
MWS : um was gehts denn hier ?????
"M8DEF.DAT" $baud = 38400 $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Dim Wert As Integer Wert = 0 Config Portd = Input Portd = 255 Enc_a Alias Pind.3 Enc_b Alias
-
Thread
Ausgang auf "1" schalten, wenn Eingang auf "0" ist
HildeK schrieb im Beitrag #5721702: > Wobei es mit PORTC verknüpft werden muss! > > Der Befehl müsste lauten: > if ( !(PORTC & (1<<PINC6))) Mal wieder irren lassen: es muss doch PINC statt PORTC heißen. Also: if ( !(PINC & (1<<PINC6)))
#5721801: > DDRC &= (1 << PC6); // damit ist dann PC6 ein Eingang Da stimmt was nicht. Geht zufällig trotzdem. > if ( !(PORTC & (1<<PINC6))) // Wenn am Port C Pin 6 = "0" ist, > wird PB0 gesetzt Am Eingang muß PINC Register und nicht PORTC abgefragt werden.
-
Thread
I2C am ATmega16 geht nicht mit beliebigen Pins
'Quarz Frequenz Const Pcf8574_lcd = &H40 Config Scl = Portc.4 Config Sda = Portc.5 Dim _lcd_e As Byte _lcd_e = 128 Cls Locate 1 , 3 Lcd "1234567890" End [/code] Danke für einen hilfreichen Tipp
Kaum macht man's richtig, schon geht's. Danke für die Hilfe. Gruß, Frank
-
Thread
Merkwürdiges auf PortC
liegt der Ausgang auf ca. 0V. Der Impuls geht auf ca. 5V und anschließend geht er wieder auf 0V zurück. Alles wunderbar. Wenn ich dasselbe auf einem Pin von PortC mache, sieht man vor dem Impuls keine 0V sondern ca. 1,5V (bei einem 2,2K ca. 1,2V). Nach dem Impuls geht die Spannung aber auf 0V runter. Irgendwie geht die Spannung dann in der Zeit bis zum nächsten Impuls wieder langsam auf 1,5V rauf. Allerdings wohl mit einen Millisekunden Verzögerung. Wann und wie
-
Thread
Servo am Mikrocontroller
Klemm die Steuerleitung an PORTC4 (Ich hab bei mir an PORTC0 bis PORTC3 ein paar Taster haengen, daher PORTC4) Uebrigens: Ich habe pet's Code mitlerweile am laufen. Peinlich. Hab ebenfalls den falschen Pin angesteuert.
alte programm, hat jemand von euch ne idee wie sowas geht also so wie ich es gemacht habe geht es nicht
-
Thread
Multiplex+ICP
==0)) { PORTD=numbers[10]; PORTC |= (1 << PC2);} else { PORTD=numbers[zehner]; PORTC |= (1 << PC2);} break; case 3 : PORTD=numbers[einer]; PORTC
{ PORTD=numbers[10]; PORTC |= (1 << PC2);} else { PORTD=numbers[zehner]; PORTC |= (1 << PC2);} break; case 3 : PORTD=numbers[einer]; PORTC |= (1 <
-
Thread
qtouch - sekt oder selters
Ddrc.4 = 0 : Portc.4 = 0 Waitus 5 'PC4 Out und high schalten, um C aufzuladen Ddrc.4 = 1 : Portc.4 = 1 Waitus 2 'und wieder aus Ddrc.4 = 0 : Portc.4 = 0 'Die Ladung aus C jetzt nach
Senskey_b0_ddr Alias Ddrd.7 Senskey_b0_pin Alias Pind.7 Initlcd Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cursor Off Cls Disable Interrupts Wait 4 Dim Cycles As Byte 'Pb0--- 1K ---+
-
Thread
AVR asm - Befehl nur jedes 2. mal ausführen
sbi DDRB,1 ; dito B1 cbi PORTB,1 sbi DDRB,2 ; ... cbi PORTB,2 sbi DDRC,0 cbi PORTC,0 sbi DDRC,1 cbi PORTC,1 sbi DDRC,2 cbi PORTC,2 sbi DDRC,3 cbi PORTC,3 sbi DDRC,4 cbi PORTC,4 sbi DDRC,5 ; rote LED cbi PORTC,5 sbi DDRB,3 ; dito cbi
cbi PORTB,0 ; alle LEDs löschen cbi PORTB,1 cbi PORTB,2 cbi PORTC,0 cbi PORTC,1 cbi PORTC,2 cbi PORTC,3 cbi PORTC,4 cbi PORTC,5 cbi PORTB,3 cpi r16, 1 ; Konstante vergleichen: 61+1=62, ergo jetzt 6300
-
Thread
LCD an PORTC ATmega8
mov temp2, temp1 swap temp1 andi temp1, 0b00001111 out PORTC, temp1 rcall lcd_enable andi temp2, 0b00001111 out PORTC, temp2 rcall lcd_enable rcall delay50us pop temp2 ret
einzufügen. ; Siehe dazu http://www.mikrocontroller.net/topic/81974#685882 lcd_enable: sbi PORTC, 5 ; Enable high nop ; mindestens 3 Taktzyklen warten nop nop cbi PORTC, 5 ; Enable wieder low
-
Thread
Ausgangadressierung PORTC durcheinander?
Soweit so gut, allerdings lässt sich der Port C recht seltsam schalten. Schreibe ich das: [c]PORTC = 11111110;[/c] so geht die LED an PC3 an. Schreibe ich folgendes: [c]PORTC = 11111101;[/c] so geht die LED an PC1 an. Schreibe ich folgendes: [c]PORTC = 11111011;[/c] so gehen die LED´s
bzw, die Bitnummern sind natürlich die für dich geltenden Werte einzusetzen. Um also den Pin PC3 am PORTC auf 1 zu setzen [c] PORTC |= ( 1 << PC3 ); [/c] [[Bitmanipulation]]
-
Thread
Servo an Atmega328p funktioniert nicht
: > Config Adc = Single , Prescaler = Auto , Reference = Avcc > Config Portb = Output > Config Portc.0 = Output > Config Portc.1 = Output > Config Portc.2 = Output 2) Die Servos drehen sich jetzt nur noch um ca. 130°. Davor haben sie sich um volle 180° gedreht und mit der Hand geht es auch noch
poti 2 If Adcin2 < 40 Then 'LED's je nach Potistellung ein/aus Portc.0 = 1 Portc.1 = 0 Portc.2 = 0 Elseif Adcin2 < 984 Then Portc.2 = 0 Else Portc.0 = 0 Portc.1 = 0 Portc.2 = 1 End If Adcin2 = Adcin2
-
Thread
RC Empfänger PWM Signal Mosfet Motorregler
Nimm einen PIC10 + Mosfet. Kleiner und einfacher geht es nicht.
will never be executed } // Interrupt subroutine timer 1 overflow ISR(TIMER1_OVF_vect) { PORTC ^= 0x01; // Toggle Pc0 PORTC ^= 0x01; // Toggle PC0 } // Interrupt subroutine timer 1 compare A match ISR(TIMER1_COMPA_vect) { PORTC ^= 0x02;
-
Thread
ATmega8 ADC-Durchschnittsberechnung
File inkludieren und ab geht die Luzi.
if( blinkCnt == 100 ) { > blinkCnt = 0; > > if( blinkCnt < 50 ) > PORTC &= ~LED_RED; > else > PORTC |= LED_RED; > } > } > } Geht auch einfacher: [c]volatile uint8_t ledMode; //fehlt da nicht ein volatile? volatile uint8_t blinkCnt;
-
Thread
2 atmega einen als porterweiterung
Julian Bertsch schrieb im Beitrag #3565344: > PORTC |= (1<<PC0); > ausschalten muss? Mit |= ausschalten geht nicht.
Ich hab das schonmal nachgeschlagen aber wenn ich die ausschalten will mit der üblichen methode geht das bei mir an portc an und ich weiß noch nicht warum ich poste mal die configuration
-
Thread
C++ Klassenbibliothek für AVR
PORTD,&PORTD,&PORTD,&PORTD,&PORTD,&PORTD,&PORTD,&PORTD,&PORTB,&PORTB,&PORTB,&PORTB,&PORTB,&PORTB,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC}; constexpr Register ddrList[] = {&DDRD,&DDRD,&DDRD,&DDRD,&DDRD,&DDRD,&DDRD,&DDRD,&DDRB,&DDRB,&DDRB,&DDRB,&DDRB,&DDRB,&DDRC,&DDRC,&DDRC,&DDRC,&DDRC,&DDRC};
PORTH,&PORTH,&PORTD,&PORTD,&PORTD,&PORTD,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTD,&PORTG,&PORTG,&PORTG,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTB,&PORTB,&PORTB,&PORTB,&PORTF,&PORTF,&PORTF,&PORTF,&PORTF,&
-
Thread
Anzeigetafel über lange Leitungen ansteuern
16 Decoder) for(verz=0;verz<laenge;verz++); for (i=0;i<4;i++) { PORTC &= ~(1<<PC4); for(verz=0;verz<laenge;verz++); PORTC |= (1<<PC5); for(verz=0;verz<laenge;verz++); PORTC &= ~(1<<PC5); for(verz=0;verz<laenge;verz
} for (i=4;i>0;i--) //In NO-OP Regi { PORTC &= ~(1<<PC4); for(verz=0;verz<laenge;verz++); PORTC |= (1<<PC5); for(verz=0;verz<laenge;verz++); PORTC &= ~(1<<PC5)
-
Thread
Maximale Helligkeit von 7-Segment-Displays im PWM-Multiplex-Betrieb
status==1) PORTC |= (1<<PC4); if(status==0) PORTC &=~(1<<PC4); break; case 4: if(status==1) PORTC |= (1<<PC4); if(status==0) PORTC &=~(1<<PC4); break; case 5: if(
SELECT_SEGMENTS(unsigned char symbol) { switch(symbol) { // Unterstrich case '_': PORTC |= (1<<PC0); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1);
-
Thread
Programmieren lernen?!
So, weiter geht´s! Habe jetzt in Basic sowas geschrieben: $regfile = "m16def.dat" $framesize = 16 $swstack = 16 $hwstack = 16 $crystal = 4000000 Config Portc.0 = Output Config Portc.1 = Output Do
Portc.0 = 0 Portc.1 = 1 Waitms 20 Portc.0 = 1 Portc.1 = 0 Waitms 20....
-
Thread
4x20 Zeichen mit KS0066 funktioniert nicht (4-Bit)
_delay_us(40); PORTC = 0b01100001; //Function set Zeile 1 oberes Nibble _delay_us(40); PORTC = 0b01100000; //Enable AUS _delay_us(40); PORTC = 0b01100001; //Enable EIN _delay_us(40); PORTC
(40); PORTC = 0b00111000; //Enable AUS _delay_us(40); PORTC = 0b00111001; //Enable EIN _delay_us(40); PORTC = 0b00000001; //Entry Mode Zeile 1 unteres Nibble _delay_us(40); PORTC =
-
Thread
Problem: 16 Bit Variable über UART zu empfangen
PORTD ^= (1<<PD2); _delay_us(100); PORTD ^= (1<<PD2); } void stop_conversion(void) { PORTC &= ~(1<<PC2); } void start_conversion(void) { PORTC |=(1<<PC2); } void reset_ADS1258(void) { PORTC &= ~(1<<PC0); _delay_us(100); PORTC |= (1<<PC0); _delay_ms(17); } void ADCInit
S. R. schrieb im Beitrag #4798101: > Ja. Das geht am einfachsten, indem du die Dezimalzahl ziffernweise als > Text überträgst und z.B. mit einem Endezeichen abschließt. Nope, am einfachsten geht das indem man die zwei Bytes überträgt und das ist
-
Thread
Status abfragen, bevor es ins Hauptprogramm geht / BASCOM
auswerten kann. Dann wollte ich es mit einer Do-Loop Until Schleife im Programm versuchen, das geht auch nicht, da er auch dort nicht in die Routine springt.(?) also wie kann ich es geschickt lösen, dass das Programm erst richtig los geht, wenn der Schalter aud AUS ist? ist sicherlich kinderleicht
0 Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 2 Cursor Off Config Timer1 = Timer , Prescale = 1 Config Int0 = Change Dim Reading As Bit Dim Rc_value As Word Dim Value As Single Dim Signal As String
-
Thread
LED blinken lassen per Taster
gedrückter Taste. [c] if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH { PORTC ^= (1 << PC0); // LED an PC0 umschalten _delay_ms (200); } PORTC = 0; [/c] So gehts aber: [c] if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH
solltest du tatsächlich verstehen, warum es da überhaupt ein Problem gibt. > > So gehts aber: > > [c] > if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH > { > PORTC |= (1 << PC0); // LED an PC0 umschalten > _delay_ms (200); >
-
Thread
Struct gut so?
nicht übertreiben) (PINC,0) ein. Sieht also so aus: [c] if ( (PINC,0) == 1) [/c] Das geht nicht! Guck ins AVR-GCC-Tutorial!!!! [c] if ( bit_is_set(PORTC,0) ) { //tue dies und das } [/c] PS: ich müsste nachlesen, wie bit_is_set definiert ist. So wird der Compiler es aber nicht
#1801901: > "spricht eigentlich was gegen leere Klammern? So wie das da: > #define LED_AN() sbi(PORTC, 1)" > > Mault den der Compiler rum? Nein? Dann wirds wohl gehen. Warum probierst Du´s nicht einfach aus ? Geht schneller als auf ne Antwort zu warten. :-)
-
Thread
LCD geht nicht an PortC meines ATMega644p
Hi, ich verwende die LCD Ansteuerung hier aus dem gcc Tutorial. Dabei kann ich den Port auf Port A, B und D problemlos ändern. Nur Port C funktioniert nicht. Der ist doch aber beim ATMega644p auch ein ganz normaler Port, oder?
-
Thread
LCD zu langsam
alles posten. Nur ein paar Ausschnitte: Hier werden die Signale eingelesen: [c] uint8_t newPORTC = PINC; if ( (newPORTC ^ lastPORTC) & 0x02 && (newPORTC & 0x02) ) { if (newPORTC & 0x01 ) xVAL--; else xVAL++; changed |= 0x01; } if ( (newPORTC ^ lastPORTC) & 0x08 && (newPORTC & 0x08) ) { if (newPORTC & 0x04 ) yVAL--; else yVAL++; changed |= 0x02; } if ( (newPORTC ^ lastPORTC) & 0x20 && (newPORTC & 0x20 ) ) { if (newPORTC & 0x10 ) zVAL--;
-
Thread
Free running mode ADC
Wertes von ADCresult gemäß vorgegebener Tabelle setzen if((ADCresult>=0) && (ADCresult<128)){ PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); } else if((ADCresult>127) && (ADCresult<512)){ PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC4); PORTC |= (1<<PC5); } else if((ADCresult>511) && (ADCresult<769)){ PORTC &= ~(1<<PC1); PORTC |= (1<<PC4); PORTC |= (1<<PC5); } else if((ADCresult>768) && (ADCresult<1024)){ PORTC |= (1<<PC1); PORTC |= (1<<PC4); PORTC |= (1<<PC5);
-
Thread
Interrupt geht am Mega16 aber mit Mega 8 nicht
Hy Ich habe ein altes Programm an nem Mega16 benutzt, dass per RS232 Daten empfängt und diese per ISR verarbeitet hat. Das gleiche Programm will jetzt an meinem Mega8 einfach keine ISR mehr auslösen und ich finde keinen Fehler.. Um es zu testen hab ich auch versucht, einfach mal was zu senden, wenn was ankommt, aber auch das funktioniert nicht. DIE KOMMUNIKATION ansonsten funktioniert einwandfrei... [c] #define F_CPU 8000000UL // MP-Takt #include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <avr/interrupt.h> #define
-
Thread
AX81 - ZX81 im AVR
Also Image auf Festplatte erstellt und dann einfach auf frisch formatierte SD Karte kopiert - geht (wenn die Karte als solche geht..). Peter
dort das Muster "176" schreibst, es muss aber 170 sein, damit es abwechselnd ist. - Im Beispiel für PortC sind die Adressen von PortA eingegeben - ist aber ja klar - Im Tape-Manager führt ein "ENTER" leider nicht zum Load des gewählten Files. Das geht nur über ein "LOAD" auf der Basic-Ebene. Alle nur
-
Thread
SAA1057 in Bascom Ansteuern
.2 Reset Portc.2 Portc.3 = Daten.4 Set Portc.2 Reset Portc.2 Portc.3 = Daten.5 Set Portc.2 Reset Portc.2 Portc.3 = Daten.6 Set Portc.2 Reset Portc.2 Portc.3 = Daten.7 Set Portc.2 Reset Portc
Portc.2 Portc.3 = DatenH.4 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.3 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.2 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.1 Set Portc.2 Reset
-
Thread
C-Prog. (ATmega16) für IR-Sender
Signal > vom Rechner an die IR-LEDs schicken... (Wenn das überhaupt möglich > ist...) > > MfG PORTC0 = UDR; geht nicht da PORTC0 definiert ist als PC0 und PC0 ist definiert als 0. Du versuchst also der Zahl 0 einen Wert zuzuweisen.
sind und wenn ja dann wieder in login und wenn nicht dann soll es alle Daten die per uart kommen an portc pin 0 ausgeben... Da sind meine IR-Leds dran... Die daten werde ich per PC "modulieren" es geht nur drum dass der uC ne verbindung mit dem PC aufbaut und dann alle Daten die der PC sendet an die IR-Leds
-
Thread
Die andere Firmware für AVR-NET IO
PC4, dann PC0, dann PC5, dann PC0, dann PC6, dann PC0 und schliesslich PC7) - das wäre am besten, geht das mit "else einfach weiter ...?: // Hauptschlfeife // ************** PORTC &= ~(1 << PC1); PORTC |= (1 << PC0); while(1) { #if USE_ADC ANALOG_ON; #endif eth_get_data
if(time1>=var_array[10]) { time1=0; PORTC &= ~(1 << PC0); PORTC |= (1 << PC1); } } } else { if(time1>=var_array[11]) { time1=0; PORTC &= ~(1 << PC1); PORTC
-
Thread
ATmega 128 langsam?
In12 = Pinb.3 In13 = Pinb.4 In14 = Pinb.5 In15 = Pinb.6 In16 = Pinb.7 'Werte ausgeben Portc.0 = In1 Portc.1 = In2 Portc.2 = In3 Portc.3 = In4 Portc.4 = In5 Portc.5 = In6 Portc.6 = In7 Portc.7 = In8 Portd.0 = In9 Portd.1 = In10 Portd.2 = In11 Portd.3 = In12 Portd.4 = In13 Portd
In12 = Pinb.3 In13 = Pinb.4 In14 = Pinb.5 In15 = Pinb.6 In16 = Pinb.7 'Werte ausgeben Portc.0 = In1 Portc.1 = In2 Portc.2 = In3 Portc.3 = In4 Portc.4 = In5 Portc.5 = In6 Portc.6 = In7 Portc.7 = In8 Portd.0 = In9 Portd.1 = In10 Portd.2 = In11 Portd.3 = In12 Portd.4 = In13 Portd
-
Thread
Grafik LCD am PortC geht am Port B nicht! atm8 & KS0108
Forum, ich bitte um Nachsicht :-) Seit 2 Tagen versuche ich mein GLCD mit KS0108 erfolglos vom PortC auf PortB "umzuschalten", natürlich mit Anpassung des Codes. Am PortC funktioniert das Display einwandfrei! Ich habe überprüft, ob alle PINs des Atmega8L am PortB funktionieren. Mit dem "Hello
h Datei für die Konfiguration der Ports. Hier habe ich nur // Ports #define LCD_CMD_PORT PORTC // Command Output Register #define LCD_CMD_DIR DDRC // Data Direction Register for Command Port PORTC -> PORTB und DDRC -> DDRB geändert. In der .C Datei sind keinerlei Angaben über
-
Thread
Warum funktioniert mein AVR Assembler Code nicht?
einlesen geht nicht! Matthias S. schrieb im Beitrag #5892838: >> Ist ja auch richtig. Man liest das gesamte Port (PORTC)ein. > > Immer noch nicht. Man liest PINC, denn nur da finden sich die Zustände > der Inputports. Vielleicht geht das in irgend einer Hochsprache, aber in Assembler geht das nicht. Da geht nur PORTC. Hoffentlich ist das Elend bald zu Ende.
-
Thread
Nullstellenunterdrückung bei 7 Segment
' Ein-/Ausgänge Config Portb = Output '7 Sekment Config Portc.0 = Input Config Portc.1 = Input Config Portc.2 = Input Config Portc.3 = Input Config Portc.4 = Output Config Portc.5 = Output Ddrd = &B11111111 '1
'4 Portc.4 = 0 Case 5 Portb = &B00010010 '5 Portc.4 = 0 Case 6 Portb = &B00000010 '6 Portc
-
Thread
LCD Dispaly initialisieren!
Nicht wir! > > war kein copy paste, da der code auf nem anderen rechner läuft! Genau darum geht es. Fährst du mit deinem Auto zum Mechaniker, wenn es klappert oder nimmst du das vom Nachbarn, weil es eh so ähnlich aussieht? > Config Lcdpin = Pin , Db4 = PORTC.2 , Db5 = PORTC.3 , Db6 = PORTC
von Karl-Heinz zu Recht bemängelte Code. >Db4 = PORT.2 >Db7 = PORTV.5 Um welchen Controller geht es überhaupt? Bei dei den 40pol. werden einige Leitungen des PortC im Auslieferzustand durch JTAG blockiert. MfG Spess
-
Thread
mit µC Sinus erzeugen + Amplitudenmodulation
langsamer ist. Bit 0..7 sind auf PortA0 .. PortA7 Bit 8..15 sind auf PortC7 .. PortC0 mit PORTC = byte_1; geht es ja nicht, da die 8bit verdreht sind... Hier mal mein Code: uint8_t sinus_array[128] = {128,134,140,146,152,158,165,170, 176,182,188,193,198,203,208,213, 218,222,226,230,234,237,240,243
if (byte_1 & (0x01 << 7)) { // Pin auf High PORTC |= (1<<PC0); } else { // pin auf Low PORTC &=~ (1<<PC0); } }
-
Thread
Interrupts in Assembler und C
include "uart.h" /* 9600 baud */ #define UART_BAUD_RATE 2400 void Schalter1 (void) { PORTC &= ~(1<<PORTC0); // Bit 0 loeschen, LED an _delay_ms(2000); PORTC |= (1 << PORTC0); // Bit 0 setzen, LED aus uart_putc ('1'); } void Schalter2 (void) { PORTC &= ~(1<<PORTC1); // Bit
BIT_Overflow (1<<F_INT1_Overflow) volatile int Zaehl_Int0=0, Zaehl_Int1=0; void Schalter1 (void) { PORTC &= ~(1<<PORTC0); // Bit 0 loeschen, LED an _delay_ms(2000); PORTC |= (1 << PORTC0); // Bit 0 setzen, LED aus uart_putc ('1'); } void Schalter2 (void) { PORTC &= ~(1<<PORTC1); // Bit
-
Thread
welche Signale liefert ein Handy an TX
################## ' Programm '################################ If Pinc.0 = 0 Then Portc.5 = 1 Else Portc.5 = 0 If Pinc.1 = 0 Then Portc.5 = 1 Else Portc.5 = 0 If Pinc.2 = 0 Then Portc.5 = 1 Else Portc.5 = 0 If Pinc.3 = 0 Then Portc.5 = 1 Else Portc.5 = 0 Getline Sret Lcd "*" ;
If Pinb.1 = 0 Then 'Störungs LED ein Portc.4 = 1 Wait 1 Portc.4 = 0 End If If Pinc.0 = 0 Then Portc.5 = 1 Else Portc.5 = 0 If Pinc.1 = 0 Then Portc.5 = 1 Else Portc.5 = 0 If Pinc.2 = 0 Then Portc.5 = 1 Else Portc.5 = 0
-
Thread
Takterzeugung in Assembler sinnvol?
nicht, der ATM8 könnte dazugehören. Außerdem muss das DDRx Register auf Ausgang gesetzt werden, sonst geht auch nix.
soll er das tun. Für den Rest ist [C] void Burst( unsigned int Ctr ) { while(Ctr) { PORTC |= ( 1 << PC1 ); Ctr--; PORTC &= ~( 1 << PC1 ); } } [/C] perfekt und spielt alle Stückchen die man braucht.
-
Thread
Uhr Bascom problem
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Enable Interrupts
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Enable Interrupts
-
Thread
Interupt on Change PIC
Weiterhin funktioniert deine LED-Toggle-Routine so nicht (hab ich auch Anfangs so machen wollen, geht aber nicht) BTFSS PORTC,3 BSF PORTC,3 BTFSC PORTC,3 BCF PORTC,3 Warum? Wenn RC3 Low hat, prüfst du dies auf Zeile 1. Da nicht gesetzt, wird der Port auf Zeile 2 gesetzt
Weiterhin funktioniert deine LED-Toggle-Routine so nicht (hab ich auch >Anfangs so machen wollen, geht aber nicht) > BTFSS PORTC,3 > BSF PORTC,3 > BTFSC PORTC,3 > BCF PORTC,3 Oops, is' mir gaanich aufgefallen... > movlw b'00001000' > xorwf PORTC,3 ;LED1 toggeln
-
Thread
Atmega8 PORTD7 Problem
: cbi PORTD,7 ;PORTD,7 -> GND sbi DDRD,7 ;PORTD,7 als Ausgang GND cbi PORTC,5 ;PORTC,5 -> GND sbi DDRC,5 ;PORTC,5 als Ausgang GND @ Ben.B: Das Ganze befindet sich momentan noch auf dem Steckbrett. Danke für die Antworten
> cbi PORTD,7 ;PORTD,7 -> GND > sbi DDRD,7 ;PORTD,7 als Ausgang GND > cbi PORTC,5 ;PORTC,5 -> GND > sbi DDRC,5 ;PORTC,5 als Ausgang GND Kannst du mal erklären, was du damit genau veranstalten willst? Oliver
-
Thread
ATmega uart via oszillator 1.8 geht irgendwie nicht
zeichen, 0 rcall serout rcall sync sbi ddrc,3 sbi portc,3 ende: rcall Warten cbi portc,3 rcall Warten sbi portc,3 rjmp ende serout: sbis UCSRA,UDRE ; Warten bis UDR für das nächste
@ Spess53 Tja geht irgendwie auch nicht ....mist... hab dir nen Bild dazu gelegt Auf dem Atmega steht Atmega8a-pu, ich hatte gedacht ich hätte den atmega8, das setzen der fusebits geht im myAVR_ProgTool auch nur mit
-
Thread
ATmega328: INT0 geht nur, wenn zu Beginn HIGH
Übertragung fertig ; Anz_LEDs_an = SPDR; // Übertragene Daten auslesen PORTC &= ~(1 << PC1); PORTC &= ~(1 << PC2); PORTC &= ~(1 << PC3); PORTC &= ~(1 << PC4); PORTC |= ((Anz_LEDs_an & 0x01)<< 1) | ((Anz_LEDs_an & 0x02)<< 1) | ((Anz_LEDs_an & 0x04)<< 1) | ((Anz_LEDs_an
// SS auf HIGH, Slave wird nicht angesprochen sei(); [/c] (Rest unverändert) geht es. Vielen Dank für die schnelle Antwort!