-
Thread
Was ist heir falsch (programmcode)
PORTC, r18 ;alles aus out PORTD, r18 main8: LDI R17, 0b00000001 ;aufbau in orange main9: ROR r17 out PORTA, r17 out PORTC, r17 CPI r17, 255 BRNE main9
, r19 out PORTC, r19 out PORTD, r19 nop call warten ;warten out PORTA, r18 ;alles aus out PORTB, r18 out PORTC, r18 out PORTD, r18 rjmp main
-
Thread
WINAVR Portpins setzen
Compiler aus genau dem Grunde nicht sbi anwendet, weil der Befehl nur mit I/O-Adressen unterhalb 0x20 geht. Als nächstes fragst Du, warum aber sbi 0x1b,6 geht. Nun, 0x1B ist eine Zahl _kleiner_ als 0x20. Vorbeugend möchte ich mitteilen, das dies auch für die Zahlen 0x0, 0x01, 0x02, usw. bis 0x1A, und
@Peter (Gast) Versuch einfach mal, ein kleines Beispielprogramm zu erstellen, welches mit IAR geht, aber mit AVR-GCC nicht. Dann kann man ganz schnell erkennen, wo das Problem liegt. Peter
-
Thread
1023 PWM sind 0 v?
Getadc(0) Compare1a = Wert Locate 1 , 1 Lcd ; Wert Waitms 10 Cls If Wert < 600 Then Portc.5 = 1 Elseif Wert > 700 Then Portc.4 = 1 Else Portc.5 = 0 Portc.4 = 0 End If Loop End [/code] wo liegt der Fehler? ich such jetzt schon 3 Stunden nach dem Problem und finde nichts .
Also bei mir gehts. Kann es sein, daß Du was falsch verstehst? Weil, Du schreibst "1023 PWM sind 0 Volt". Es geht ja soherum: Du legst an ADC0(PINC.0) einen Wert vor, z.B. mit einem Poti. Diesen Wert, übersetzt in
-
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
Jo, die funktioniert. Im Moment geht das Programm immer in die IF-Abfrage rein und die grüne LED blinkt.
-
Thread
Mein erstes Programm Code kürzen
#Define SEG_DISP_1 0b11110110 Dann kann man später den Code auch noch lesen, denn unter "PORTC = 0b11101101;" kann ich mir absolut nichts vorstellen unter "PORTC = SEG_DISP_1" aber, dass eine 1 dargestellt wird, bzw. werden sollte :) Gruß Roland
=|=| 9: |=|"| zugegeben, man braucht schon etwas Fantasie :-) Wenn man zweizeilig arbeitet gehts noch einfacher, z.B.: _ _ 9: |_| | Gruß Roland
-
Thread
problem mit #define
Wenn es nur darum geht, dass Du in Deinen Code NULL schreibst und daraus die beiden Anweisungen PORTC = 0b00000001 und PORTB = 0b00000001 werden sollen, kannst Du das so machen: [c] #define NULL \ PORTC = 0b00000001;
danke für eure antworten. jetzt gehts =) lg
-
Thread
Netzwerkkarte mit RTL8019
Habe gerade die Version von Sascha für den 32 laufen, die geht!
Danke für eure Antworten! Geht denn der 8029er Chipsatz auch? Viele Grüsse Volker
-
Thread
wie Daten an MSP430F1611 seriell einlesen?
Flanke des Starbits auf der Datenleitung und hat somit den Anfang des Telegramms. Mal sehen, ob das so geht. Mit freundlichen Grüßen Wolfgang
LCD-INITIALISIEREN void lcd_init(void) { unsigned char zaehler = 1; LCD_DDR = 0xff; // PORTC = ausgang _delay_ms(15); // 15 ms warten LCD_PORT = 0x3; // PORTC = 0x03 while(zaehler <= 3) // 3-mal enable { lcd_enable(); //enable
-
Thread
bitte um hilfe bei switch case aufbau
ich habe die Hardware überprüft verkabelung usw. mehrmals, wenn ich es mit ner if Anweisung mache gehts. Es muss doch nur noch ne Kleinigkeit sein, aber welche?
Huber M. schrieb im Beitrag #4679294: > wenn ich es mit ner if Anweisung mache gehts. Damit hast Du schön bewiesen, welches Werkzeug das richtige dafür ist. Warum willst Du unbedingt das falsche nehmen?
-
Thread
Atmega 8L ADC Programm
ist val=ADCL; //Einspeichern der Werte val=(ADCH<<8)|val; if(val<6) { PORTC=0; } return 1; }
0b1111111; ist tödlich! Warum schaltest Du die Analog-Eingänge als /Ausgang/ und dann auch noch mit > PORTC=0b1111111; alle auf High?
-
Thread
MAX7300
rcall send1 sbrs data, 0 rcall send0 rcall ackn ret send1: sbi PORTC, 1 rcall wait sbi PORTC, 0 rcall wait cbi PORTC, 0 rcall wait cbi PORTC, 1 ret send0: rcall wait sbi PORTC, 0 rcall wait cbi PORTC, 0 rcall wait ret ackn: rcall wait sbi PORTC, 1 cbi DDRC, 1 sbi PORTC, 0 rcall wait sbis PINC, 1 ; wenn Datenbit von Empfänger gelöscht, cbi PORTC, 2 ; LED an cbi PORTC, 0 sbi
-
Thread
UART empfängt nur 2 zeichen
4Taster gedrückt if(PINC & (1<<PINC0)){ //Btn 1 gedrückt _delay_ms(60); PORTC |= (1<<PORTC4); _delay_ms(60); PORTC &= ~(1<<PORTC4); sendByte[8] = 0x01; char *test = "1234567"; // rs485_putAddr(0x42); rs485_puts
test); //_delay_ms(100); } if(PINC & (1<<PINC1)){ //Btn 2 gedrückt PORTC |= (1<<PORTC5); _delay_ms(100); PORTC &= ~(1<<PORTC5); // sendByte[8] = 0x02; rs485_putAddr(0x42); rs485_puts(sendByte,sizeof(sendByte));
-
Thread
AVR Atmega 328 Hilfe bei LED Taster Schaltung
soll die LED auch ausgehen. Das einschalten der LED funktioniert auch tadellos nur aus ausschalten geht nicht immer. Es scheint so als wäre die LED beim loslassen des Tasters in keinem definiertem Zustand da sie mal an bleibt und mal ausgeht. Leuchtet die LED weiter, leuchtet sie beim nächsten Betätigen
int main(void) { DDRB = 0xFF; //Register B Ausgänge DDRC = 0x00; // Register C Eingänge PORTC = 0xFF; // Register C Pullups ein while (1) { if (!(PINC & ( 1<<PC4 ))) //wenn PC4 HIGH dann... { PINB |= ( 1<<PB0 ); // LED an PB0 an } else { PINB
-
Thread
STM32 Beste/Schönste Methode um Bits in Register zu setzen
// Bus freigeben SYSTEM.SCKCR.LONG = (unsigned long) 0x00030100; PORT5.DDR.BIT.B3 = 1; PORTC.DDR.BYTE = 0x3f; PORTC.DR.BIT.B2 = 0; .... PORTC.DR.BIT.B2 = 1; PORTB.DDR.BYTE = 0xff; PORTD.DDR.BYTE = 0xff; IOPORT.PFCR0.BYTE = 0x06; // CS1 + CS2 Da kann man bis auf die
Bit-Ebene (auch Bitfelder) die Peripherie nach > belieben ansprechen. Gähhnnn, hatten wir schon, geht mit Bitbanding.
-
Thread
Zähler gibt falschen wert aus
CS01); sei(); while(1) { switch (time_sec_zehn) { case 1: PORTC |= (1<<PC4);break; case 2: PORTC |= (1<<PC6);break; case 3: PORTC |= (1<<PC4)|(1<<PC6);break; case 4: PORTC |= (1<<PC7);break; case 5: PORTC |= (1<<PC7)|(1<<
switch (time_sec_ein) { case 1: PORTC |= (1<<PC3);break; case 2: PORTC |= (1<<PC1);break; case 3: PORTC |= (1<<PC3)|(1<<PC1);break; case 4: PORTC |= (1<<PC0);break; case 5: PORTC |= (1<<PC0)|(1<<
-
Thread
Fehler auf AtMega32 Platine
, an den ich mein LCD anschließen wollte. Nun das Problem: Es funktionieren alle Ports, ausser PORTC 2 -5. Das ist ausgerechnet der Port, der noch zusätzlich auf meinen 2x4 LCD-Stecker geht. Ich kann aber einfach keinen Fehler in meinem Schaltplan finden. Das Problem äußert sich so, dass bei komplett aktivierten Ports auf PORTC 4 nur 1,66 V anliegen auf PORT C 2, 3 und 5 liegen die vollen 5 V an. Wenn ich jetzt jedoch eine LED an PORTC 2, 3 oder 5 anschließe, dann leuchtet diese nicht (bzw. mini-minimal), und die Spannung
-
Thread
glcd 240X128 mit t6963 und AVR 8515
'3 +5V +5V '4 -9V -9V potmeter '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 NC not conneted '10 RESET PORTC.4 '11-18 D0-
* 64 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8 Cls Locate 1 , 1 Lcd "TEST" resultat: nicht geht ! wer kann helfen ? was ist falsch ?
-
Thread
Keine Reaktion auf Eingabe
> #define BUTTON_PORT (&PORTC) > #define BUTTON_DDR (&DDRC) Ist es an irgendeiner STelle wichtig, dass du die Adresse benutzen kannst? Wenn nein: dann lass es. Das verschafft dir nur zusätzlichen Aufwand bei der Benutzung von
geht es deutlich schneller (mit ISP-Anschluss), wenn man einfach was probieren möchte. Kann ich den direkt an die Ports hängen (siehe Pollin-Board) oder muss ich etwas zwischendran hängen (weil das Pollin-Board
-
Thread
Lauflicht Problem mit 74hc595
Mein Code sieht jetzt so aus [c]#include <avr/io.h> #include <util/delay.h> #define DS_PORT PORTC #define DS_PIN 0 #define ST_CP_PORT PORTC #define ST_CP_PIN 1 #define SH_CP_PORT PORTC #define SH_CP_PIN 2 #define _BV64( bit ) ( 1ULL << (bit)) #define DS_low() DS_PORT&=~_BV64(DS_PIN
den alten Code kopiert -.- [c]#include <avr/io.h> #include <util/delay.h> #define DS_PORT PORTC #define DS_PIN 0 #define ST_CP_PORT PORTC #define ST_CP_PIN 1 #define SH_CP_PORT PORTC #define SH_CP_PIN 2 #define _BV64( bit ) ( 1ULL << (bit)) #define DS_low() DS_PORT&=~_BV64(DS_PIN
-
Thread
Problem mit ATmega1284, USART verursacht Resets
PORTA5 #define GSCLK PORTA6 #define XERR PORTA7 int main(void) { DDRC = 0xFF; PORTC = (1 << 4); sei(); PORTC &= ~(1 << 4); PORTC = MCUSR; MCUSR = 0; while(1) { } } [/c] Auch hier treten die Resets auf, wenn an den UART gesendet wird. Hab an
mag unter der Einstellung EXTOSC nur Quarze bis 16 MHz, für 20 MHz muss man FSOSC verwenden, dann gehts!
-
Thread
bitverknüpfungen
dann anschließend (per out) ins Ausgangslatch geschrieben wird. Direkt aufs Ausgangslatch verknüpfen geht nicht. Bitverknüpfungen lassen sich nur auf ganze Register anwenden - _einzelne_ Bits logisch _verknüpfen_ geht nicht. _Einzelne_ Bits setzen/löschen hingegen funktioniert so: sbi(PORTC,1) setzt z.B. das 1. Bit im PORTC-Register. cbi(PORTC,1) andi r16,0xF0 out r16,PORTC Das "andi" verknüpft den Inhalt des Registers R16 logisch mit der Konstanten 0xF0 (löscht also die unteren 4 Bits...). "out" schreibt den
-
Thread
Probleme bei T6963C initialisierung (C)
Ich habe eben gesehen das Du PortC für die Control-Signale nutzt. Oft wird in den AVRs der PortC für die JTAG's genutzt evtl. Fuses falsch gesetzt? Ich weiß nicht welchen AVR Du nutzt um es genauer zu sagen. Harry
nachgesehen... der ATMEga hat kein JTAG (meine ich zumindest) PortD ist der einzige der für Daten geht da er 8 bit breit ist, PortC für Control-Port sollte gehen. Wenn ich mir deinen Code so anschaue, mir fehlt irgendetwas was die beiden Pins = RD/WR verwendet. Ich denke zum schreiben braucht es nicht
-
Thread
Viele Magnetventile per MCU ansteuern
die Ausgänge für den Anschluß der Treiber gleich fertig linear auf der Platine liegen. Einfacher geht's wirklich nicht.
Clock Input von 1 auf 0 } _delay_ms(1000); //1 Sek warten PORTC = 0x01; //LED einschalten _delay_ms(1000); //1 Sek warten PORTC = 0x00; //LED ausschalten _delay_ms(1000); //1 Sek warten } } [/c]
-
Thread
Threads mit avr
geschichte...): ------------------------------ void main(void) { PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; while (1) { if(PINB.1) { PORTC=0x0F; delay_ms(2500); PORTC=0x00; }
{ PORTC=0xFF; } x++; delay_ms(1); } delay_ms(2500); PORTC=0x00; } } ---
-
Thread
Neuling sucht Antworten :)
wird sehr wahrscheinlich für 24V DC ausgelegt sein. Da MC mit Spannungen von 3,3...5V arbeiten, geht da nix.
F_CPU 8000000U #include <util/delay.h> int main (void){ DDRD=0xFF; DDRC=0x00; PORTC=0x00; PORTC |= (1<<PC7); while(1){ if(PINC & (1<<7)){ PORTD=0x00; }else{ PORTD=0xFF; } } return 0; } [/c] Wenn ich durch den durchflussmesser
-
Thread
AVR Atmega32 Probleme Eingang abfragen
Auf PORTC sitzt JTAG. Per Fuse abschalten. Und delay_ms ist doof.
DDRD = 0x00; PORTD = 0xff; DDRC = 0xFF; while(1) { if ((PIND & 0x02)) PORTC |= (1<<PINC5); else PORTC &= ~(1<<PINC5); } } [/C] das reicht schon fürs erste um zu sehen, ob sich überhaupt was tut.
-
Thread
Sleep Modus arbeitet nicht
; Warten auf Interupt Die LED an PortB blinkt nun im 5 Sekunden Rhythmus während die LED an PortC im 152 Sekunden Rhytmus blinkt. Aber warum geht die CPU nicht in den Sleep Modus?
@Norbert Hanebeck (nobbyh) >Aber warum geht die CPU nicht in den Sleep Modus? Zuviel Red Bull? ;-)
-
Thread
Port Konfigration zur Laufzeit festlegen
OUT_PORTB) { DDRB|=pinval; PORTB&=~pinval; // port low } else if (port==OUT_PORTC) { DDRC|=pinval; PORTC&=~pinval; // port low } else if (port==OUT_PORTD) { DDRD|=pinval; PORTD&=~pinval; // port low } } } [/c] und setOutputChannel
) { if ( val ) PORTB |= pinval; else PORTB &= ~pinval; } else if ( port == OUT_PORTC ) { if ( val ) PORTC |= pinval; else PORTC &= ~pinval; } else if ( port == OUT_PORTD ) { if ( val ) PORTD |= pinval; else PORTD &= ~pinval; } } [/c] Ich verdrehe
-
Thread
Suche hilfe für einen blutigen Anfänger
ldi r16, 0b00000011 ; Init vom LCD (Siehe Datenblatt) out PORTC, r16 ; PORTC Setzen rcall lcd_enable ; LCD Enable rcall delay5ms ; Pause 5ms rcall lcd_enable ; LCD Enable
r17 swap r16 ; Tausche andi r16, 0b00001111 out PORTC, r16 rcall lcd_enable andi r17, 0b00001111 out PORTC, r17 rcall lcd_enable rcall delay50us cbi portd, 2 ret lcd_command
-
Thread
Pulsweite messen (Input Capture) mit ATMega328p
define baud FOSC/16/baud_rate-1 #define TICKS_VAL (FOSC/256) #define LED_PIN(state) { (state)?(PORTC |= (1<<PC0) ):(PORTC &= ~(1<<PC0)) ; } #define TOGGLE_LED() {PORTC ^= 1<<PC0; } void capture_function(); volatile uint8_t button_flag=0; volatile uint8_t capture_occured =0; volatile uint8
. Viel eleganter ginge es z.B. mit einem STM32Fxxx. Ein Griff in die Schaublade zeigt auch wie es geht: http://mino-elektronik.de/FM_407/fmeter_407.htm#a5 ;-) Aber der TO hat seinen ATmega328 und sollte sein Problem damit gelöst bekommen.
-
Thread
PIC16F690 LCD ansteurung
PORTC,2 ; R\W bcf PORTC,1 ; RS bsf PORTC,3 ; E nop bcf PORTC,3 ; E movlw 0x0F andwf PORTC,f ;Höherwertiges Nibble löschen swapf TEMP1,w andlw 0xF0 ;Niederwert
Höherwertigeren HalbPort iorwf TRISC,w ; als Eingang definieren movwf TRISC banksel PORTC ; Daten ,zeichen von LCD Lesen bcf PORTC,1 ; RS bsf PORTC,2 ; R\W bsf PORTC,3 ; E nop bcf PORTC,3 ; E movf PORTC,w andlw 0xF0 ;Niederw.Nibble ausmaskieren
-
Thread
ATXMEGA Timer Interrupt ISR Problem
Wo genau in deinem code setzt du portc?
wurde > nach der Service Routine vom Controller selbst nicht wirklich gelöscht!! Das Schei..ding geht ja gar nicht. Tausch den mal aus.
-
Thread
Nochmal Hilfe zum DOGXL
stimmt jetzt geht die led auch wieder an :)
mehr ansteuern. Wenn ich hingegen den Pixelsalat vom start beibehalte und dort drin rumwurschtel geht alles.
-
Thread
Ringpuffer mit ADC Werten füllen und versetzt ausgeben
aber entweder den kompletten Code zu zeigen oder die Fehlermeldungen zu nennen, schreibst Du nur "Geht nicht". So können wir Dir nicht helfen.
// Port A.5 //uin=uin; // Kontroll LED //if(uin > 500) // PORTC=0xFF; //else // PORTC=0x00; static unsigned char ringbuffer[ 40 ]; static unsigned short getindex = 0; static unsigned short putindex = 0; static unsigned
-
Thread
Atmega Taster einlesen und in Register schreiben funktioniert nicht wie geplant
<<PA1)) && (PINB & (1<<PB1)) ) ) {PORTB &= ~(1<<PB1);} else {PORTB &= ~(1<<PB1);} PORTC = PIND; } [/c] Was genau mache ich falsch?
passendem 'Gleichzeitig' werden beide LEDs akiviert :-( - Selection Mode: drückt man eine Taste, geht eine LED an; eine die schon an war, geht aus. - individuell: man kann alle LEDs durch die jeweilige Taste ein- und ausschalten. Das ist wohl das, was du machen wolltest. Ich bin kein SW-Profi,
-
Thread
Bitfeld definition
eins on beiden... keine ahnung ob es einfacher geht
break; case 3 : PORTC= 0x04; //3. Ziffer PORTD = ~ PRG_RDB(Segmentfolge + Zl_minute5); break; case 4 : PORTC= 0x08; //4. Ziffer PORTD = ~ PRG_RDB(Segmentfolge + Zh_minute5);
-
Thread
Warum springt der Debugger hier hin?
; timer2_init(); sei(); while(1) { PORTC=time; if(time==5) { uart1_puts("Hello world\r\n"); time=0; } } }
Interrups laufen bringt es das Durchsteppen durcheinander. Du musst handwerklich anders arbeiten. Geht mit der Maus auf die nächste interessante Zeile im Programm und selektiere mit der rechten Maustaste die Option „Run to Cursor“ oder so ähnlich.
-
Thread
Atmel Microchip Studio - kein Break Point Stop
Main rein: #include <avr/io.h> uint32_t debug_value = 0; int main(void) { DDRC |= (1<<PORTC0); /* Replace with your application code */ while (1) { debug_value++; if (debug_value == 50000) { PORTC |= (1<<PORTC0) ; } else { PORTC &= ~(1<<PORTC0) ; } } } Dabei setze ich die Breakpoints auf PORTC... in der If Schleife. Die werden aber ignoriert. Optimization steht auf -Og und Debugging -g2. Tool ist Atmel Ice + Debug wire
-
Thread
MOS6581/Commodore SID Timing?
dabei mit einem Atmel AVR ATMega gesteuert. Adressleitungen sind an PORTA angeschlossen, Daten an PORTC und PORTD5 ist CLK und PORTD7 ist /CS. Reset ist an VCC angeschlossen und R/W an GND. Trotzdem kommt mit dem Testprogramm kein Ton raus. Der C-Source (nur provisorisch zum testen) sieht folgendermaßen
DDRC = 0xFF; // DATA DDRD |= (1 << PIND7); // CS PORTA = 0x00; PORTC = 0x00; PORTD |= (1 << PIND7); // Initialize with /CS on. } void writeMos(uint8_t addr, uint8_t data) { PORTA = addr; PORTC = data;
-
Thread
Hilfe!: Quizmaster mit 8 Tastern
In C gehts einfacher: [c] #include <avr/io.h> int main() { uint8_t mask, input; DDRB = 0xFF; // output on PORTD = 0xFF; // input: pullups on PORTC = 1;
Peter Dannegger schrieb im Beitrag #2219016: > In C gehts einfacher: Find ich auch schöner zu lesen...aber ich glaube kürzer wie so geht nicht mehr :-D
-
Thread
Schalter in Bascom
welches ich mit Bascom Programiere. Die LED´s kann ich schon blinken lassen, aber mit dem Schalter gehts noch nicht. Folgen Code hab ich geschrieben. $regfile = "m8535.dat" $crystal = 3690000 $baud = 9600 Config Portc = Output Config Pinb.1 = Input Portb.1 = 1 Do If Pinb.1 = 0 Then Portc = 0 End If Loop Aber das geht irgendwie nicht. Bin leider noch Anfänger. Vieleicht kann mir ja jemand helfen. Ich verwende einem Atmega8535. Danke
-
Thread
Timer und Resetprobleme mit Mega16
= 0 ; // rot } erfrischung_an = 1; PORTC |= ( 1 << MAGNET_KALT ); //Magnetventile anschalten PORTC &= ~ ( (1 << MAGNET_TEIL) | (1 << MAGNET_WARM) ) ; } else if (erfrischung_an == 1 & pressed
Hier ist eine Sackgasse. Dort geht es weiter: http://www.mikrocontroller.net/topic/196664
-
Thread
Brauche Hilfe bei Grundlagen: 16-Segment Anzeige
Wert hat ''zeichen"? PORTC=(sign[zeichen-32]>>8); } int main() { int8_t i; DDRB = 0xFF; DDRC = 0xFF; for(i=0;i<=58;i++) { PORTB = sign[i]; PORTC = (sign[i] >>
Funktionen: http://www.c-howto.de/tutorial-funktionen.html > char text[] = "++ HELLO WORLD! WIE GEHT'S? **"; ja zeichenweise >void char_out (uint8_t zeichen) //wieso steht das so, und nicht im >Hauptprogramm? >{ > PORTB=sign[zeichen-32]: //welchen Wert hat ''zeichen"? > PORTC=(sign[zeichen
-
Thread
struct als volatile => syntax fehler ...
{ timetick=0; actualtime.second++; // debug LED: if(actualtime.second%2) { PORTC |= (1 << PC5); //toggle=0; } else { PORTC &= ~(1 << PC5); //toggle=1; } } //compute time if(actualtime.second==60) { actualtime.second=0; // debug
korrekte C Syntax. Da aber das ewige schreiben von 'struct irgendwas' einem schnell auf den Geist geht gibt es dafür eine Möglichkeit das abzustellen (jetzt rückt er damit raus :-) Du kannst einen typedef machen. Wie geht das? Nun definier dir (in Gedanken) eine Variable von diesem Typ:
-
Thread
Problem Zufallsgenerator
Kartoffelbauer schrieb im Beitrag #2985106: > Dein MC ist zu schnell,deine Hand zu langsam, darum gehts auch mit den > Verzögerungen. > > ... > > wie will man da etwas sehen Das ist ja der Witz an der Sache! Es geht so schnell das man nicht bei der Zahl anhalten kann, die man gerade möchte.
Warum einfach wenn es auch kompliziert geht :-) Die dümmsten Bauern ernten die dicksten ....
-
Thread
SRAM auslesen aund ausgeben [AtMega64]
Übertrag kann es hier ja nicht geben und Addition von 0 zu ZL ändert ja nichts ld temp,Z+ out PORTC,temp ld temp,Z out PORTE,temp [/avrasm] Gruß aus Berlin
aua, das kommt davon, wenn man mehr auf die eigenen Kommentare achtet, stimmt natürlich. adiw geht auch nicht, das kann nur 0...63 als Wertebereich, es müßten aber in 16Bit 0x100 addiert werden subi ZH, -0x01 dagegen geht... Eigentlich würde ich es aber eher so machen: {avrasm] --------
-
Thread
LCD an ATmega128 anschließen...
anschließen und ansteuern können. Auf dem LCD ist ein HD44780! Ich habe gelesen, was programmiert und es geht einfach nichts! :-( Das LCD ist aber funktionsfähig! Mit dem Enable, RS und RW verstehe ich ja! Aber wie sage ich dem Mikrocontroller, dass ein LCD angeschlossen ist! Beim ATmega128 muss ich ja den
LCD_FUNCTION_SET 0x38 #define LCD_MODE_SET 0x06 //LCD enable/disable high/low #define LCD_ENABLE PORTC |= BIT7 //LCD enable #define LCD_DISABLE PORTC &= ~BIT7 //LCD disable //RegisterSelect (RS) #define LCD_READ_DATA PORTC |= BIT6 //Daten lesen #define LCD_READ_CMD PORTC &= ~BIT6 //Befehle
-
Thread
AVR128DB mir 3-wire SPI
MOSI lässt sich beim AVR ja nicht als Open-Drain-Output konfigurieren. Bei anderen Architekturen geht das ja.
5 Volt kann, d.h. MOSFET und blauen (und einige grünen) LEDs ohne zusätzlichen IC. Und noch mehr: PORTC kann andere Spannung haben. Z.B. alles von 3 Volt (SD-Card, FRAM usw.), aber MAX7219 (unter 4 Volt will nicht arbeiten) mit 5 Volt über PORTC. Oder umgekehrt, alles von 5 Volt (oder gar von 2 Volt!
-
Thread
Poti Auslesen und in Terminal anzeigen
char Buffer[10]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang while(1) { result = ADC_Read(0); utoa( result, Buffer
char Buffer[20]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang put2s( "ADC Messung: PC0\n" ); while(1) { result = ADC_Read
-
Thread
Anfänger: While-Schleife auf Atmega8
x=0; while (x<60000) { x++; PORTC = 0x00; } y=0; while (y<60000) { y++; PORTC = 0xff; } } return 0; [/c] } wenn ich es jeweils danach ausführen
x=0; while (x<60000) { x++; } PORTC = 0x00; y=0; while (y<60000) { y++; } PORTC = 0xff; } return 0; } [/c] Ich komme einfach nicht dahinter, woran